You should consider doing something geared strongly towards the ideas of concurrency/parallelism; most of the courses that you take will probably not emphasize this as strongly as they should, so it seems like something that would be worth looking into independently.
With many-cored systems becoming the norm, it is very valuable to understand how to utilize such a system to its full capacity. The need for such system utilization will usually only come into play for intense scientific applications and - you guessed it - games. So, if you are interested in getting into game development a strong familiarity with concurrent programming could really set you apart from your peers.
The nice thing about looking into concurrency is that it can be explored in almost any language. You could develop a program to familiarize yourself in the languages with which you are already familiar; perhaps comparing the advantages and disadvantages in each. If you wanted to learn a new language you could then look into one geared towards concurrency such as erlang.
If you managed to get comfortable with concurrency in the languages you know, and learned a new language that emphasized concurrency then you could try to get down into some crazy stuff. Up to this point you probably would have just been using your regular old CPU in your programs, try moving to working with the GPU.
You could check out what the CPU was doing to handle all those threads and processes you were throwing at it. Write up stuff on the workings of semaphores, what the heck a mutex is, or maybe explore the mathematical advantages of concurrency (what impact does concurrency have on the runtime of some of the algorithms you implemented?).
Why I think concurrency could form a good program:
-With new technology it is more important to think concurrently
-Concurrent programming is important for high-intensity programs (like games)
-It will let you get more familiar with the languages you know
-You can learn a new language geared toward the concept (such as erlang)
-There is the potential to mess around with parts of the computer you probably have not messed with before (such as the GPU)
-You can do (almost) anything with concurrency. Most programs you write could be improved with concurrent programming.
-Just because your programming doesn't mean you can't write! Write papers explaining some of the stuff you have used to make your programs work correctly...
-The opportunity to do some more mathematical stuff along with coding (for example, compare runtime of concurrent vs. non-concurrent versions of an algorithm)
-...There is a lot that you can do and these are just some ideas.
Hopefully I have given you something to think about at least