views:

762

answers:

3

I am a C++, Unix developer, mostly in systems side, product domain. I would like to take up some side project to improve my skills in the following :

  • Object oriented Design
  • Multithreaded Programming, with ample scope for mutexes and semaphores
  • Interprocess Communications in Unix
  • Core C++ stuff (wanna use templates, handle exceptions, use smart pointers n stuff)

I have decent "bookish" knowledge of all of the above but haven't got enough opportunities to get my hands dirty. Recently I went for an interview and they gave me really good (and tough) real life problems from the above and I failed miserably. Hence this effort :-)

I am looking at something like a 6 month project, spending about 3 hours on a daily basis. Any suggestions would be great.

Thanks.

+3  A: 

With that sort of extra time and motivation, you might as well get paid while you train! http://www.rentacoder.com

For a good challenge, try some sort of network application. Maybe a server that reports system status. Things you'd learn:

  • Socket programming.
  • Asynchronous event handling.
  • Multithreading (handle one request while awaiting the next).
  • System calls, to retrieve the status info
  • Very useful real-world debugging skills.
  • Patience. :-)

Good luck -- enjoy!

Adam Liss
+1  A: 

Adam's suggestion is a good one - but if you're more inclined to just do it for yourself and have fun, I would implement a network multi-player action game using OpenGL, OpenSceneGraph, or one of the other game-oriented toolkits out there.

Brian Stewart
+1  A: 

You could make sport of it at Top Coder.

Pat Notz