Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm currently finishing my Bachelor's degree in Computer Science and thinking a lot about which specialisation to choose in my Master's degree.

One subject I'm particularly interested in is parallel programming. However, this topic does not seem to be a standard topic in Computer Science degrees, although it is something that is used more and more - new processors nowadays are usually dual or quad cores.

So I was wandering: does anybody know a good study program in this field?

I was mostly looking for it at universities in Germany, but they tend to combine the application side with some type of engineering or natural science. Thus, programs are more the "Computational Engineering" or "Computational Science" type, but I'm more interested in the Computer Science part of it, i.e. parallel programming, languages and compilers, algorithms and hardware.

share|improve this question
6  
Parallell programming is really multi-discipline. You should look up concurrency and real-time programming as keywords. Simple courses on network and database programming also touch on the problems with concurrency in software. –  Spoike Nov 16 '11 at 18:59
    
I already did basic network and database courses and had to deal (just a little) with concurrency issues. Apart from that: is that really all? –  mort Nov 16 '11 at 19:25
1  
@mort: hahaha, no. parallel/concurrency/distributed systems are very hard and an active area of research today. Dig up some distributed systems type journals and see what universities are publishing, that'll tell you where to find good researchers and where to do your degree. –  Paul Nathan Nov 16 '11 at 19:35
2  
Look up the Journal of Parallel and Distributed Computing. –  TorelTwiddler Nov 16 '11 at 20:35
add comment

3 Answers

up vote 12 down vote accepted

Parallel Computing in Computer Science programs tends to be the study of algorithms on either distributed memory or shared memory systems. Dual and Quad core chipsets are small fry in academic and scientific computing circles. I've had access to a 24 core shared memory machine and a distributed Linux cluster with 88 CPU cores and around 700 GPU cores. Research tends to be geared toward finding more scalable algorithms that give a greater speed up via Amdahl's Law as well as new topologies to link up processors in or to simulate on existing hardware. Because of the way the programming tools work, you wind up worrying a little more about hardware (cache sizes, message buffers, that sort of thing) than you would in a traditional Van Neumann architecture. Your average home system would only ever use multithreaded programming. You'd never even touch messaging systems like MPI or PVM because the memory on your home machine is fully accessible to all CPUs in that machine. C, Fortran and C++ are the languages of choice with most being C with libraries attached.

As far as selecting a program, I'd look into journals on the subject (there are many) and see what articles interest you the most and when they were published, you want recent stuff because the faculty in question may well have retired or moved on by the time you get there. Then I'd contact the graduate departments and see what's what. I'd also look into schools with good networking and graph theory expertise as those two fields show up a lot for Parallel Computing.

If you've no background at all in the subject, I'd recommend starting with the Lawrence Livermore Guide covers a fairly large amount of material related to parallel and concurrent programming; though it is mostly aimed at the scientific community.

share|improve this answer
    
Thanks for your answer! –  mort Nov 16 '11 at 21:15
    
This is pretty much the right answer. –  Paul Nathan Nov 17 '11 at 1:49
add comment

You might look at the University of Illinois at Urbana-Champaign. The School of Computer Science has a Parallel Programming Laboratory where there is a lot of excellent graduate research going on.

share|improve this answer
    
Thanks, that's a really useful answer! –  mort Nov 16 '11 at 20:25
add comment

I've done one course of parallel programming at the Parallel and Distributed Systems group at Delft University, the Netherlands. From their list of research subjects, it seems you'd find something there. E.g. they're working on parallel extensions for Java. This group also participates in ASCI, the Dutch Advanced School for Computing and Imaging. As such, you can get access to the Dutch DAS-4 cluster (Distributed ASCI Supercomputer), so the hardware side should also be covered ;)

Delft is fairly close to Germany, which may be another benefit to you.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.