Spring Semester 2008

January 28, 2008 – May 2, 2008

Resources

All kinds of resources useful for the course, from physical books to virtual websites. If you find something good out there, please tell us about it so we can add it here.

Books

While there are lots of useful books for this course, the two most important books are the following required texts on C and C++:

While the first of these is an obvious classic, I debated quite a bit about the second. In the end, I decided to err on the side of concision: Shorter books are less expensive and less of a drag to read, especially if you have to read two books in a semester. :-) In Fall 2006 I used a much longer book:

It was, overall, a good C++ text, but I doubt that too many students read it simply because it's so huge. And funky colors are not exactly the hallmark of good writing either, but that's just a personal judgement. Speaking of personal, I learned C++ from the following, and it's still the definite source these days:

If you're not willing to shell out huge amounts of money for a C++ book, you could always try this one for free (at your own risk, but I hear it's quite decent):

If you really want to become proficient in C++, there's no way around these three books either (but I wouldn't recommend reading them until you know what you're doing):

While C started out pretty simple, there's by now quite a lot of stuff to remember. And that's what reference manuals are for, here's the best one for C:

Here are two somewhat more general books on programming, both well worth their money and the time it takes to work them through; in fact, I used to teach a course a while ago that used these as text books:

This list is hardly exhaustive. Feel free to email me suggestions if you find a good book on any of the topics we deal with in the course. :-)

Pocket Books

I like small books, and in that spirit I'd like to recommend a few really small books that can be very helpful in the course. Here they are:

If you think that you won't need text books that hold you by the hand while you learn, you could of course try to just buy pocket references and nothing else. I don't recommend that unless you already have a lot of programming experience. If you decide to "skip" the officially required texts, you do so at your own risk!

Notes

Let's start with an excellent set of notes (and the course they come from) that supplement the C text by Kernighan and Ritchie chapter-by-chapter:

This looks promising:

Two great sets of notes from Stanford University's Department of Computer Science:

Apparently helpful sites with library (and some language) documentation:

Here are the manuals for the GNU implementation of the standard C and C++ libraries that you're actually using. However, you should not use any features that are GNU-only, so basically you should never even look at these:

Exams

Here are some old exams for practice. On average I like my questions quite a bit, so I tend to ask them again and again. But every now and then I add a new twist, so be prepared!

Miscellaneous

Tools