Well I can't decide if I should take the "Parallel Programming and Architectures" course, or the "Algorithms for Classification and Prediction" course ... so I figured I'd ask my very first StackOverFlow question ;)

Really, I'm curious about parallel programming vs machine learning ... they're both very interesting areas.

How much parallel programming do you think the average programmer would have to know the in the future? And how much opportunity would there be to work in that area if you were interested?

And machine learning (one of the applications of the "Algorithms for Classification and Prediction" course) ... are there many opportunities in this area without a masters degree?

Opinions much appreciated :)

+3  A: 

Parallel programming is the future. Most pc's now have multi core. And it will be a challenge to use then efficiently.

But you should take the course you like the most. Go talk with students that took these courses and ask their opinion.


Recent explosion in the popularity and a availability of multi-core chips is a pretty good indicator that parallel programming as a bright future.

A lot of people thing things are moving towards some forms of "automatic parallelization" where the compiler or the chip itself parallelize code. That, of course, requires some work... which you could do. Before that arrives, if it arrives, there is plenty of work for good parallel programmers.

I don't know much about machine learning, but it is highly theory based and so more likely to require post-graduate degrees. Parallel programming, on the other hand, can be done by anyone with gcc... but having a course on it can really help.

+1  A: 

You should take both.

I have taken "Algorithms for Classification and Prediction" except it was called "Data Mining" and it was a wonderful eye opener in the realm of machine intelligence and decision making systems.

I have yet to take the course about parallelizable algorithms, but everyone can tell you the benefit.


parallel programming will teach you how to program on machines that no one else understands well - and thus are rarely used.

classification and prediction will help you solve the NetFlix Prize and win a million dollars

so, learn a highly valuable but rarely used skill, or learn something that could make you rich before you leave school...hmmm... tough choice!

seriously, why does it have to be one or the other, if you are interested in both? take one for credit and audit the other if you don't need the credits.

the combination of the two would be quite valuable in the future - especially in certain kinds of financial, retail, and military applications.

Note: though they share some common principles, there is a significant difference between programming multi-core CPUs (2-4 cores) and programming massively parallel machines and clusters (hundreds or thousands of CPUs). Optimizing's recommendation system or speeding up's indexing involves the latter.

Steven A. Lowe
That's silly. That's like saying you should take a number theory course instead because there is a $1 million prize for solving the Riemann Hypothesis
@BobbyShaftoe: of course it's silly, it's supposed to be silly. the whole question is silly, as if complete strangers can read his future and tell him the choice to make right now - when no choice is really required
Steven A. Lowe

Parallel programming will teach you how to deal with multithreaded apps which is useful even if your algorithm is not strictly parallelized. I would agree with some of the others though -- take both. You might want to start with parallel programming, though.


If you can really only take one, take whichever course has the best professor. You can learn about either of these subjects from books or the web - you're paying all that tuition money for the professors, so maximize your value.

I'm still mad at myself for taking courses on really interesting subjects from really shitty professors. Don't do that.

Matt Parker