Computer Science courses you should take if you're a student today

14 years ago I was attending a job fair and a student asked me which courses he should take to get my job. "None" was my answer... I explained that there are no specific courses that will prepare you for work outside the university but rather all courses regardless of what they are since the breadth and ability to be a good generalist is what counts. Not until you leave the university and start working for real you will understand how much you've learned. The specifics are less important...

Well now my answer is different. Last Friday (11/11/11) my university celebrated 30 years of having a computer science program. I was speaking during the day in a guest lecture about the fact that today the way we write programs are about to shift. Especially if you consider developing for the cloud. The Netflix chaos monkey is a great example of a tool that helps you think the right way; the only way to handle failures good is to fail all the time. Developing for the cloud also means that more developers than before are going to develop distributed systems than before. A lot of people might not realize that that is the case, but they should. Modern computers also have more than one core making another course interesting; parallel programming.

Hence there are two courses you do not want to miss if you're going to be a developer in the near future; Distributed systems and parallel programming. Other than that it doesn't matter as long as you have a good mix of different things.