tags:

views:

663

answers:

12

I wondered what projects would be good to develop C skills? I can think of many projects to develop C#, F#, IronRuby, etc. skills as the .net framework provides ample opportunity for any number of different applications; however I'm less knowledgable about the libraries provided with C, and the possible apps one can develop which are actually 'meaty' enough to develop practical coding skills.

Does anyone have any practical specific projects I can use for this purpose?

Thanks :-)

+1  A: 

According to their wiki, OpenTTD (an open-source Transport Tycoon Deluxe clone) is written in C. If you're interested in something like this you could check it out, maybe you can start adding some features, making patches, fixing bugs, just to learn?

I bet there's a lot of open source projects out there still using C. I don't use linux a lot, but I can imagine a lot of command line tools are written in C?

Erik van Brakel
+1  A: 

You could write a poker bot ;)

www.codingthewheel.com

Toran Billups
+4  A: 

Write a kernel.

What? No, I'm not joking. It doesn't have to be something the average person can use (though that is a plus), it's just to get an idea of how to do it. It can give you lots of insight towards embedded programming.

Alternatively, you could try to write a compiler in C. Also challenging and will help to develop those C skills you're looking for.

Those are the more complex options, of course. You could also:

  • Write an IRC server application
  • Write a Port Scanner
  • Build a game engine (complete with graphics and physics engines)

Plenty of things you could try.

Marc Reside
+4  A: 

Write a command line tool like a ls clone or an encryption tool

Make it accept all sorts of proper input in standard ways (siwtches, filenames, etc) and have it do something useful.

If you really want to learn C then throw some liberal pointer usage in there.. object oriented languages evolved from some very clever use of c structures and pointers so it's still worth knowing how the low-level stuff works.

Once that makes sense, then try something more complicated.

Eric Goodwin
A: 

There are lots of open source projects that would be grateful for help. A significant portion of these projects are written in C. Pick a project, open their bug-tracker and start submitting patches!

Bernard
A: 

Work through the exercises in the second edition of Kernighan & Ritchie's "The C Programming Language" (aka K&R2). Some of them are quite complex so you'll want to pick and choose but don't shy away from the ones that require you to deal with pointers.

Andrew O'Reilly
+1  A: 

I always enjoyed doing DOS VGA graphics programming in C, good way to learn the language and you can put together basic games if you take it far enough. Try this tutorial:

http://www.brackeen.com/vga/index.html

tbreffni
A: 

Write a Scheme interpreter (or some virtual machine) (and learn a lot about programming languages and systems, too!)

Jared Updike
+1  A: 

Dave Thomas, a.k.a. "Prag Dave", has come up with a set of programming exercises at http://codekata.pragprog.com/.

Andrew Whitehouse
A: 

Depends on what you're looking to improve, if it is just the C# then write anything but do it in C#. For architecture try something you've never done before, I learnt a hell of a lot creating my own pluggable application.

Quibblesome
A: 

A Nethack bot

superjoe30
A: 

Just rewrite all Unix utilities. You'll get an epiphany that I won't want to spoil right now.