Fall Semester 2007

September 6, 2007 – December 10, 2007

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 most important one is the following required text on algorithms and data structures. We will be using Java exclusively, so getting the Java version is highly recommended.

The following books are not required but make for good reading anyway. The first is a recent classic, and a reference that can serve you throughout your career (or at least in 600.363/463 :-). It uses pseudo-code throughout and takes quite a different approach overall; it is also much, much longer.

Comparatively few people seem to know about the following book, but I like it quite a bit. It also uses pseudo-code instead of any particular language, but it is relatively concise.

Speaking of concise, the following book is the most concise text on advanced data structures that I know of; it is also a joy to read, although not necessarily the first time you try.

Since we will be using Java exclusively in the course, and since the required text only introduces the bare minimum, it might be a good idea to have some Java text handy as well. Here are a few options, the first one probably being the most useful.

The following is a popular Java text as well, and it's available for free. In don't like big books very much, but at least this one has a decent reputation. :-)

The official language specification for Java is a good resource to have around, but you can easily access it online, no need to shell out money. The official tutorial is slightly out-of-date, but if you have a lot of catching up to do, you won't really care.

If you already know Java but need a concise reference to carry around without building up more muscle (i.e. something that actually fits into the proverbial nutshell) check this one out:

If you are looking for a concise summary of good Java programming style, the following short booklet comes in handy.

Finally three more general books on programming and software development, all highly recommended (not just for this course); the last one can be particularly useful if you're interested in design issues, and I will sometimes take examples from it.

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. :-)

Previous Offerings

Standards

Programming Style

When it comes to issues of programming style, it's more important to develop some consistent style than to develop any particular style; this is different in team projects of course, here everyone should agree on a common style. In terms of grading, the safest thing is to pick a style advocated by some "authoritative" entity (without "mixing and matching" of course); here are some possible style guides.

If you are thinking "Safety first!" pick either the first or the second. The fourth has lots of nice reasoning in it, useful if you are ever asked to define a style for a team.

Animations

Unix

Miscellaneous

Tools