Harvey Mudd College
Computer Science

CS121: Software Development

Spring 2010

Lecture:

M&W 1:15-2:30, LAC

Professor:

Z Sweedyk, 1249 Olin, x78360
Mail: z@cs.hmc.edu
Office hours: M&W 2:45-4:00

Course mailing list:

cs-121-l@hmc.edu

Course trac:

TBA

Tutors/Graders:

Jessica Blevins
Keith Ingram
Singer Ma

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 an educational computer game.

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

Your grade will depend on your semester-long design/development project as well as two exams, daily quizes, and class participation:
Game project 65%
Midterm exam 10%
Final exam 10%
Daily quizzes 10%
Class participation 5%

Textbooks

Code Complete by McConnell

Student projects

Globe Trotter: Beta,User test
Hectare: Beta,User test
Attack of the Hittites: Beta, User test
Energy Empire: Beta, User test

Schedule

Date Topic Readings due Assignment due Links
Wed 1-20 Introduction     Project: Phase I
Intro Questinnaire
Mon 1-25 Requirements MC 3.1-3.4,20.1
Wiegers: Requirement Traps
Ambler: BRUF
Trac Guide: wiki, tickets
Keller: Goal breakdown
High Concept
Competitive Analysis
Management Plan
trac set up
 
Wed 1-27 Customer Elicitation   Prep for customer elicitation  
Mon 2-1 Requirements modeling Wiegers: Listening to Customer's Voices
Cockburn:Use Cases, 10 years later
Bittner: Use cases, storyboards, and prototypes
Customer Elicitation Report
Technology Assessment
PacMan use cases
Wed 2-3 Design Practice McConnell 5.1,5.4-5.5,20.2, 21
Youtube: Will Wright (13:00-30:00)
UML Tutorial
  UMLet: UML tool
Mon 2-8 Reviews
Design I
McConnell 5.2-5.3 Game Design Document  
Wed 2-10 Design II Gabler: How to Prototype a Game in under 7 days    
Mon 2-15 Design III Software design principles
Riel: Design Heuristics
Kampe: Postmortems
Prototype
Final Proposal
 
Wed 2-17 Design Patterns   Postmortem Project: Phase II
Mon 2-22 UI usability.net: User Centered Design
Bay: Designing games that don't suck
Glinert: Upping your games usability
   
Wed 2-24 Component Design
Architectural Review
McConnell 6, 34.4
Eiffel: Design by contract
   
Mon 3-1 Testing Design Review submission    
Wed 3-3 Design Review McConnell 19.6, 22
wikipedia:software testing
Kampe: S/W testing
Thompson: Halo3 testing
   
Mon 3-8 UI Test      
Wed 3-10 UI Test     Midterm Exam
Mon 3-17 Spring break      
Wed 3-19 Spring break      
Mon 3-22 Midterm (take home)      
Wed 3-24 Giving a good presentation      
Mon 3-29 Class Presentations   Alpha Release  
Wed 3-31 Game evaluations     Project: Phase III
Hectare alpha
Hectare presentation part 1
Hectare presentation part 1
Hittites alpha
Hittites presentation
Globetrotter alpha
Globetrotter presentation
Energy Empire alpha
Energy Empire presentation
Mon 4-5 Test plan implementation/review      
Wed 4-7 Code review     Feedback evaluation
Mon 4-12 Test plan/tracking review      
Wed 4-14 Project estimation      
Mon 4-19 Fun factor      
Wed 4-21 Code review prep      
Mon 4-26 Code review 1      
Wed 4-28 Code review 2