So I wanted to reply here so you'd see this. Language seems to be one of your main concerns, but your writing is fine. Have you considered taking language/diction classes? You don't need to change your accent, but part of the problem with spoken communication may be that you aren't hearing the difference between two words that people are saying or you are, but when you speak the words come out incorrectly (per American pronunciations at least). I had a professor in college, for instance, that always pronounced "robot" as "rabbit". Once we knew this it was easy for us to understand (by context, rabbits had no place in the discussions), but we could never convince him that he was doing this. A diction coach or language teacher may help you with this aspect of your conversation skills. Similarly, risk embarassment and find a colleague that you get along with decently, and ask them to critique your speech. You may not like what they say, but if you can get past the emotional boundaries and accept the criticism as constructive it may help you to improve.
Also, to work on your vocabulary, you may consider reading novels that's where the bulk of my vocabulary comes from. Also, consider enrolling in a community college writing course (not basic composition, but something like creative writing). This'll get you out of your home, around other people, and deliberately practicing your language skills (at least in the written context, which paired with practice ought to improve your spoken language skills).
EDIT: And something to remember. You may find the class embarrassing, because you don't feel up to the task or on par with your classmates English skills. Don't fret it. It's an exercise for that as well, getting over the mental barriers around embarrassment. Accept that you'll make mistakes, make them in public, and then move on with your life. One of the best things about doing this in a class? Other people will make mistakes too. And when it's over, you don't have to see them again if you don't want to. But hopefully after a term together you'll have a couple of friends from the group.
That's actually a very cultural thing. But yes, I agree, in the US, apologising too much comes off as weak and so it should not be done often.
This is why while it's acceptable and necessary in some cultures to apologize in advance, or to apologize for small things, in the US, it's better to only apologize when it's really for something big.
When I read this, I was really hit because I was the same way my entire high school life. So this topic makes me very emotional and I'm saddened by your story. No one should experience the loneliness you're experiencing...I'm sorry.
But I think you're definitely not alone in this area--many computer science students feel the same way. Many people have mentioned making yourself respected, doing activities, etc...these things help but a relationship is two-way. To make a friendship work, you really just have to be other-centered: thinking about other before yourself, actively remembering someone's name, actively listening to people.
One good book to check out on this very topic is "How to Win Friends and Influence Others" by Dale Carnegie. And if you want you can email me :)
Also, to work on your vocabulary, you may consider reading novels that's where the bulk of my vocabulary comes from. Also, consider enrolling in a community college writing course (not basic composition, but something like creative writing). This'll get you out of your home, around other people, and deliberately practicing your language skills (at least in the written context, which paired with practice ought to improve your spoken language skills).
EDIT: And something to remember. You may find the class embarrassing, because you don't feel up to the task or on par with your classmates English skills. Don't fret it. It's an exercise for that as well, getting over the mental barriers around embarrassment. Accept that you'll make mistakes, make them in public, and then move on with your life. One of the best things about doing this in a class? Other people will make mistakes too. And when it's over, you don't have to see them again if you don't want to. But hopefully after a term together you'll have a couple of friends from the group.