It wasn't until I tried to put Red Hat (pre-Fedora days) on it. Try as I may I couldn't get the installation to complete. I was about ready to give up and blame incompatible hardware when I decided to clean out the dust from the mainboard, including the memory module slots, with canned air. Lo and behold, I was able to complete installation and never had stability problems with that computer again.
I'm in a similar position to you, actually. For me, I realized that by working hard I could pretty much finish my degree requirements by the end of my third year of school (which I will do). So, that left me with two "open" semesters in my Senior year that I'm going to use to finish up general college requirements, take more advanced CS classes. While it seems like it's impossible to finish all of those requirements, it's actually not that difficult I think. The reason that this is important is that you probably shouldn't expect to get credit to transfer back for technical courses you do abroad and instead use it as an opportunity to fulfill those liberal arts requirements if you have any.
The next bit of advice I have is to talk with your professors in your department and ask for their recommendations. At my school, the director of undergraduate curricula is the one that was most helpful to me, so maybe you could try to talk to an equivalent at your school. He or she will not only be familiar with the undergraduate requirements for CS, they'll probably also be the one who will be able to approve or reject credit you receive abroad as it applies to filling your major requirements. Additionally, they will probably know about other students from your school who have studied abroad before.
Ok, to answer your question about actual programs abroad, here are some places. To be fair, in the end I decided (for the time being anyway) not to study abroad for personal reasons. Anyway, my school (UNC-Chapel Hill) has a study abroad program particularly for CS majors between us and UCL (University College of London). Oftentimes even if a study abroad program is not offered at your university, you can arrange to do a program through another university, so if you're interested in this particular one let me know and I can get you more information. Additionally, I was considering and know friends who have gone to National University of Singapore, which also has a strong CS college.
My bigger point is this: don't expect too much out of study abroad from an academic point of view. There's just so much complication between different teaching systems, credit transfers, and potentially different languages that you're better off approaching it as an opportunity to learn things completely different than your normal semester's fare in the CS dept. Good luck!
I've noticed several design suggestions in your code.