Summary: Lists resources (both text and software) for a variety of course-related topics.


If you find other useful resources, please let me know and I will add them to this page.


All of our textbooks are available through the Grinnell College Bookstore, the Safari online subscription service,  and your favorite online booksellers.
[OOA&D] McLaughlin, Pollice, and West. Head First Object-Oriented Design and Analysis. O'Reilly, 2007.  ISBN 0-596-00867-8. 
Our primary textbook for the first half of the course. This book is a lot of fun.
[XP] Beck and Andres. Extreme Programming Explained, 2nd ed. Addison-Wesley, 2005. ISBN 0-321-27865-8.
Our primary textbook for the second half of the course.  A classic text on the Extreme Programming software development methodology.
[PPR] Lutz. Python Pocket Reference, 3rd ed. O'Reilly, 2005. ISBN 0-596-00940-2.
Widely acclaimed reference for the Python programming language. This should be the first thing you reach for when you have a question about syntax or the standard library. It's cheap ($9.95) and it really does fit in your pocket.
[HFDP] Freeman, Freeman, Sierra, and Bates. Head First Design Patterns. O'Reilly, 2004. ISBN 0-596-00712-4. 
OPTIONAL. We'll just touch on design patterns during the semester.  I hope that you will have enjoyed OOA&D so much that you'll pick this book up over winter break. Design patterns are really useful, and this is the most concrete, most fun book on design patterns I've seen. Everyone seems to like it.


Kuhlman. Python 101 -- An Introduction to Python. Release 1.01, July 2006.
We'll read this to get oriented to the Python programming language.
Van Rossum. Python Tutorial. Release 2.4.4, October 2006.
This is the official tutorial by the creator of Python, Guido van Rossum. This is a lengthier but more comprehensive introduction than Python 101.
Python 2.4.4 documentation. October 18, 2006.
An index of the official documentation for Python 2.4.4.
General Python FAQ.
Read this to learn why Python is the way it is and whether you have to like Monty Python.
Programming FAQ.
A useful resource if you have questions about how to do something in particular in Python.
Python Cookbook.
Also a good place to learn how to do things in Python. A programming language "cookbook" gives code for accomplishing common  tasks such as rolling virtual dice or defining an enumerated type.
Korpela. Regular Expressions in Perl.
A handy reference with examples for Perl-style regular expressions, which are also used in Python.


W3Schools online web tutorials.
Nice tutorial material on HTML, XHTML, and CSS, with many interactive examples. A good place to start.
HTML 4.01 / XHTML 1.0 Reference.
A handy quick reference, if you are already familiar with HTML. Lists all tags in alphabetical order.
CSS2 Reference.
A handy quick reference, if you are already familar with CSS. Lists all properties in alphabetical order.
XHTML 1.0: The Extensible HyperText Markup Language (Second Edition). August 1, 2002.
The latest official XHTML specification.
Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification. July 19, 2007.
The latest official CSS specification.


The official TurboGears web site.
TurboGears 1.0 Documentation.
What it says. Includes tutorials, recipes, and reference material.


Collins-Sussman, Fitzpatrick, Pilato. Version Control with Subversion for Subversion 1.4. 2007.
The book on Subversion.  A handy reverence manual.  Also, remember you can always do svn help!
Subversion FAQ.
Just what it sounds like.  Useful stuff here.


On the MathLAN, type the command "vimtutor", and you will receive a helpful tutorial on Vim, my favorite text editor (and one of the two most popular text editors for UNIX).
Zawodnuy. Emacs Beginner's HOWTO.  
A tutorial on the Emacs text editor (the other most popular editor for UNIX).
GEdit Keyboard Shortcuts.
GEdit is a graphical text editor included with GNOME and, therefore, installed on the MathLAN. Using keyboard shortcuts can greatly increase your efficiency.
KompoZer is a WYSIWIG web page editing tool, comparable to DreamWeaver. It can be a bit quirky (i.e., buggy), but I find it useful. It is (hopefully) installed on the MathLAN.
Zadrozny. Getting Started with PyDev. 2006-2007.
PyDev is an Eclipse plug-in for Python. You may wish to use it if you are very comfortable using Eclipse, but you aren't required (or even particularly encouraged) to do so.
Williams, Ho, Smith. Using Subclipse (the Subversion Plug-in for Eclipse) for Configuration Management.
A tutorial on installing and using Subclipse, which lets you manage a Subversion repository from within Eclipse. If you use Eclipse in this course, you should use the Subclipse plug-in.

Janet Davis (

Created July 23, 2007
Last revised August 30, 2007