tags:

views:

199

answers:

5

Hi,

I'm a student with a bit of experience in Java and C++ (one semester each)

Currently, I'm going through K&R and working on the exercises in the book. However, I was thinking of what I could work on over the summer since I'm almost done with K&R and I will have a lot of free time soon.

I really like building command line applications so I was thinking of getting involved with the coreutils project somehow. My question is, is it too early for me to be messing with coreutils? Should I be working on something a bit simpler perhaps? I'm a bit new with the Linux/Open source world if that matters but I'm really enjoying it.

I've done some project euler problems and I don't really like it that much.

A: 

You can do various other things with C:

  • Use various data structures like Link-list, tree, hash, heap
  • Try coding various algorithm implementation
  • Play with various string manipulation
  • Work with basic system and socket programing

List goes on..

Jack
A: 

There are (I'd argue) probably only a couple of places where C is still used extensively in preference to C++, so if you want to make a difference in the Open Source world I'd recommend thinking about working in one of the following areas:

  • Device drivers, and indeed most aspects of OS kernels.
  • Interfaces to scripting languages (Python, Perl, Lua etc.)

In both cases, C++ has no significant advantage, or some significant disadvantages, over C.

I agree absolutely with Mark's comment above that it is difficult to join a mature project. I have recently been trying to get a Haskell binding put together for SWIG, and it has proven to be pretty tricky - and I say that with over 20 years of C and about 15 of C++ behind me!

The problem is that mature codebases usually are not so clean, and this means that it can be difficult to understand how things hang together.

If you have the case, working on ARM device such as a Pandora or one of the other small embedded devices you can pick up is a lot of fun, and will teach quite a bit. In many cases what you are looking for is a device with a 'community' Linux port, and for many of these there are some quite basic components which are not yet working.

Good luck, and have fun!

Jeremy O'Donoghue
+1  A: 

Download the Nethack sources. Play it. If you ever get past that stage, then add some new and interesting monsters, weapons, traps and other objects.

Thomas Padron-McCarthy
A: 

I agree with Jeremy O'Donoghue's answer (since I am also a Mobile Device developer). Go install a 32-bit linux distro (if you don't already have), and start hacking Android Source Code.

There are many mailing-lists dedicated for the Android and you might try discuss some idea from there.

And there is also Google Summer of Code if you can make it

afriza