Harvey Mudd College
Computer Science
Spring 2004

CS121: Software Development

Lecture:

T&Th 1:15-2:30, LAC

Professor:

Z Sweedyk, 2341 Olin, x78360
Mail: z@cs.hmc.edu
Office hours: see my schedule

Course mailing list:

cs-121-l@hmc.edu

Tutors/Graders:

Brian Bentow: bbentow@cs.hmc.edu
Ed Heaney: eheaney@cs.hmc.edu
Michael Tuck-Lee: mlee@cs.hmc.edu

What This Course Is About

The objective of this course is to introduce you to the theory and practice of software design and development. You will study the stages of development from requirements specification and analysis through design, implementation, and testing. You will study ways to organize and manage these stages. You will also learn principles of software design including design patterns and anti-patterns. You will apply these principles and techniques in the design and development of three computer games, a 2D arcade game, a 3D miniature golf game, and a final game designed by your team.

We focus on games for several reasons. Games are fun projects and most students have a strong sense of what constitutes a good product. More importantly, games require solutions to a broad range of problems that rarely show up in a single software project. Games are real-time systems with stringent performance constraints. They require good user interface design. They typically use computer graphics and sound. Games can draw on other areas of computer science as well, such as artificial intelligence, computer networking, and computer art. And they often involve the modeling and simulation of physical systems, which requires concepts from mathematics, engineering, and physics.

Examples of games from previous semester can be found here.

Grades

Class participation 5%
Individual assignments     5%
Midterm exam I 10%
Midterm exam II 10%
Arcade game 15%
Miniature golf game 25%
Final project 30%

Textbooks

UML Distilled (3rd Ed.) by Martin Fowler, Addison-Wesley
Design Patterns by Erich Gamma etal., Addison-Wesley

Links

Writing abstracts
POP
Main Project wiki pages
Project 1 wiki pages
Wiki Guidelines
Sample Design document (RPI)
Team Evaluations
CVS Instructions (Turing)
CVS Instructions (Windows)
Project 2 Links
Singleton demo
NeHe site (game development)

Schedule

Date Topic Assignment Due
Tues
1/20/04
Introduction
Intro Survey
Software's chronic crisis quiz
Reading: "Software's Chronic Crisis", Gibbs
Arcade Game Review
 
Thur
1/22/04
Software Methods Reading: Brooks
Writing abstracts
Project 1: Criteria and Concept
Arcade Game Review
Tues
1/27/04
Concept Presentations
TWiki tutorial
TWiki Guidelines
Reading: Fowler Ch 1 & 2
POP tutorial (3.9-3.11)
Project 1: Criteria and Concept
Thur
1/29/04
Feasibility
Use cases
Risk analysis
Pink Monster demo
Project 1: Concept Assessment Brooks abstract
POP Tutorial (3.9-3.11)
Tues
2/3/04
Introduction to UML Reading: Fowler Ch 4 and 5
Project 1:Prototype
Project 1: Concept Assessment
Thur
2/5/04
Requirements Specification Project 1: Design Document  
Tues
2/10/04
Intro to Design Principles Project 1: Version 1 Project 1:Prototype
Project 1: Design Document
Thur
2/12/04
Domain to Design Models
   
Tues
2/17/04
Domain to Design cont. Reading: Larman & Basili
Project 1: Documentation
Project 1: Version 1
Thur
2/19/04
Project 1 Presentations/Demos OpenGL Tutorial
Project 1: Evaluations
Project 1: Documentation
Project 1: Presentation
Tues
2/24/04
Project 2 Overview   Larman & Basili abstract
OpenGL Tutorial
Project 1: Evaluations
Thur
2/26/04
Project Planning Project 2: Prototype I  
Tues
3/2/04
Test Plans
Design Patterns:
Singleton
Composite
Project 2: Prototype II Project 2: Prototype I
Thur
3/4/04
Design Patterns:
Singleton
Fascade
Adapter
Bridge
   
Tues
3/9/04
Design Review Reading: "Chrysler Goes to Extremes" Project 2: Prototype II
Thur
3/11/04
Team meetings    
Tues
3/16/04
Spring break    
Thur
3/18/04
Spring break    
Tues
3/23/04
Design Patterns:
Adapter
Composite
Status Update
Project 2: Prototype III Chrysler abstract
Thur
3/25/04
Design Patterns:
Strategy
State
Command
   
Tues
3/30/04
Design Review Project 2: Golf Game Project 2: Prototype III
Thur
4/1/04
Design Review cont.
Design Patterns:
Proxy
   
Tues
4/6/04
Design Patterns Project 3: Concept Project 2: Golf Game code freeze
Thur
4/8/04
Project 2 presentations    
Tues
4/13/04
Concept Presentations Final Project Plan  
Thur
4/15/04
No class - team meetings   Final Project Proposals