views:

140

answers:

4

I'm currently brushing up on C programming and I'm looking for an online site that teaches the language through a series of programming problems.

These problems would gradually increase in complexity and focus on introducing one or two new concepts of the language as the user/student learns more.

I'm familiar with the UVa Online Judge site, and Project Euler. Both of these sites are great for practicing coding in general, but I'm looking for something similar which is focused on teaching a language.

+2  A: 

O'Reilly just came out with a new C Programming course in it's School of Technology.

http://www.oreillyschool.com/courses/c-programming/

jduren
A: 

Just Google "C tutorial" or simply "learn C" and after you've read the basic aspects of the language move on to implementing the problems you find on the sites you've mentioned.

Another way to practice is to implement simple data structures like linked lists, double linked lists, binary tree, graphs, etc they give access to the fundamental understanding of pointers, a crucial element when you are programming in C. Also try implementing simple algorithms like bubble sort.

All in all you start off with simple problems and move on to harder ones and the Internet is as free as it gets really to ask for advice or hints on optimization. Programming languages can't be successfully learned and mastered by following a "how-to".


Also i strongly recommend going through this http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf

Cristina
+1  A: 

I you want to go all the way into C++, you can check out Academic Earth and the associated sites (Stanford Engineering Everwhere, MIT Open Courseware) ...

http://www.academicearth.org/courses/programming-abstractions

This particular lecture series compares and contrasts with Java, and also teaches general programming theory as well.

Tom Slick
A: 

You might also peruse http://en.wikibooks.org/wiki/C_Programming . It's one of their featured books and supposedly has a lot of content.

Reinderien