The in-class component of this course has primarily been group discussion about readings from Mythical Man Month by Fred Brooks. In the spirit of design and methodologies, here are several books I have read and recommend. Development systems, management practices, project control, I've found these books really help fill the gap between the academic nature of SNC's Computer Science program and my experience in the 'real world'.

Extreme Programming Explained: Embrace Change
Talking about the Extreme Programming (abbreviated XP) is exciting but the name can get in the way. XP is a project methodology, focused on team programming, very short release cycles, continous regression testing, and more. This book is an excellent introduction to all the ideas, how they solve persistent problems such as customer requirements changes and development team turnover, and how the ideas interrelate. Later books in the series are not nearly as useful, but this is a slim volume worth reading. While I'm not sure I would suggest that full-on XP is great, most of the ideas work regardless of the overall methodology you use.

Design Patterns: Elements of Reusable OO Software
Everywhere I look, this book is proclaimed a classic. This book helped introduced the concept of patterns for software: a description and commentary on a generally applicable design that addresses a recurring software problem. This book is devoted to Object Oriented design, and does an excellent job in that arena, presenting numerous patterns for abstracting and decoupling objects in larger systems. I'd also recommend the Hillside Patterns site, although the book has one of the more readable introductions to patterns that I have found.

Code Complete
A developer's handbook on the importance of design, testing, and most of all, well written source code. Initially glancing through this book you may think (as I did), "The author is going to tell me how to write 'if' statements and comments? Don't think so!" And he does. However, when he discusses if statements (for example), it is with readability and testing in mind, and there is a much to think about. There is a lot more to this book than just basic coding style, but the basic sections are the ones that struck me, reminded me that even the lowest level decisions affect your performance when you inevitably need to return to code you wrote in the past.

More to come as time allows.