An introduction to the tools and techniques of software engineering. Topics covered include object-oriented programming and design, test-driven development and software project management.