Harvey Mudd College
Computer Science

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

Course wiki:

http://www.cs.hmc.edu/twiki/bin/view/CS121Spring2006/WebHome

Tutors/Graders:

Jon Dodge, Brad Tennis, Brian Young

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.

Grades

Class participation 5%
Individual assignments     5%
Team exercises 10%
(P1) Arcade game 20%
(P2) Miniature golf game 30%
(P3) Final project 30%

Textbooks

UML Distilled (3rd Ed.) by Martin Fowler, Addison-Wesley
Design Patterns by Erich Gamma etal., Addison-Wesley
Software Engineering for Game Developers, John P. Flynt with Omar Salem, Thomson Course Technology

Links

Spring 2006 Teams
NeHe site (game development)
Wiki Guidelines

Schedule

Date Due Topic Links Assignment
Tues
1/17/06
Intro Survey Introduction (ppt), (pdf)  
Thur
1/19/06
 
Tues
1/24/06
Concept Presentations Presentation Evaluations P1: Game Spec
Thur
1/26/06
P1: Game Spec UML Intro(ppt), (pdf)  
Tues
1/31/06
P1: Prototype demo Playtesting and feedback    
Thur
2/2/06
  Design Intro (ppt), (pdf)    
Tues
2/7/06
P1: Version 1 code freeze From Domain to Design (ppt), (pdf)    
Thur
2/9/06
P1: All Deliverables P1: Final Presentations   Project Evaluation
Team Evaluation
Game Evaluation
Tues
2/14/06
Project I evaluations Project 2 Overview
Design Principles I (ppt), (pdf)
  OpenGL tutorial
Thur
2/16/06
OpenGL tutorial Design Session   Prototype I
Engine Design I (class/sequence diagrams)
Tues
2/21/06
Prototype I
Engine Design I (class/sequence diagrams)
Prototype Demo
Testing (ppt), (pdf)
  Proj2: Week 2 assignments
Thur
2/23/06
 
  • Standardization
  • Test Plans
 
Tues
2/28/06
Proj2: Week 2 assignments Design Patterns I (ppt), (pdf)   Proj2: Week 3 assignments
Thur
3/2/06
Prototye II demos Design Patterns II (ppt), (pdf)    
Tues
3/7/06
Proj2: Week 3 assignments Design Patterns III (ppt), (pdf) Project 2:Version 1
Thur
3/9/06
Prototype III demo Design Patterns IV (ppt), (pdf)    
Tues
3/14/06
  Spring break    
Thurs
3/16/06
  Spring break    
Tues
3/21/06
  Project 3 Overview    
Thur
3/23/06
Project 2: Version 1 Project 2: Presentation and Demo    
Tues
3/28/06
  Concept Presentations    
Thur
3/30/06
  Work Management (ppt), (pdf)
  Project 2: Final Report
Tues
4/3/06
Project 2: Final Report Project review    
Thur
4/6/06
Project status reports      
Tues
4/11/06
Design Patterns finale      
Thur
4/13/06
Team Growing Stuff: alpha release/design review
All teams: progress reports
     
Tues
4/18/06
Team Scramble: alpha release/design review      
Thur
4/20/06
Team Frenzy: alpha release/design review