Harvey Mudd College
Computer Science
Fall 2005

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/CS121FAll2005/WebHome

Tutors/Graders:

Dave Buchfuhrer: dbuchfuhrer@hmc.edu
Matt Walsh: mwalsh@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%
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

NeHe site (game development)
Writing abstracts
Wiki Guidelines

Schedule

Date Due Topic Links Assignment
Tues
8/30/05
Intro Survey Introduction (ppt), (pdf) P1: Arcade Game Concept
Thur
9/1/54
P1: Arcade Game Concept
Tues
9/6/05
UML Intro(ppt), (pdf)
Thur
9/9/05
P1: Concept Presentations Presentation Evaluations Reading: Larman & Basili
Tues
9/13/05
P1: Prototype demo Design Intro (ppt), (pdf)    
Thur
9/15/05
Larman & Basili abstract From Domain to Design (ppt), (pdf)    
Tues
9/20/05
P1: Version 1 demo & code freeze Design Principles I (ppt), (pdf)    
Thur
9/22/05
Project 1 P1: Final Presentations   Project Evaluation
Team Evaluation
Game Evaluation
Tues
9/27/05
Project I evaluations Project 2 Overview   OpenGL tutorial
Thur
9/29/05
OpenGL tutorial Design Session   Prototype I
Engine Design I
Tues
10/4/05
Prototype I
Engine Design
Prototype Demo
Testing (ppt), (pdf)
   
Thur
10/6/05
 
  • Standardization
  • Test Plans
 
Tues
10/11/05
Prototype II Design Patterns I (ppt), (pdf)    
Thur
10/14/05
Prototye II demos   Power Bar Texture tutorial
Tues
10/18/05
Fall break      
Thur
10/20/05
Prototype III Design Patterns II (ppt), (pdf)
  • Strategy
  • Adapter
  • Composite
  Project 2:Version 1
Tues
10/25/05
  Class cancelled    
Thur
10/27/05
Project 2: Version 1 Project 2: Presentation and Demo   Project 2: Documentation
Tues
11/1/05
  Project 3 Overview    
Thur
11/3/05
Project work      
Tues
11/8/05
Work Management (ppt), (pdf)
     
Thur
11/10/05
Project 3 Concept/Plan Presentations      
Tues
11/15/05
Project 3 Concept/Plan Presentations cont.      
Thur
11/17/05
Progress Reports      
Tues
11/22/05
Team 3 alpha release      
Thur
11/24/05
Thanksgiving break      
Tues
11/29/05
Team 1 alpha release      
Thur
12/02/04
Team 4 alpha release      
Tues
12/6/04
Team 2 alpha release      
Thur
12/8/04
Final Presentations