Harvey Mudd College
Computer Science

CS121: Software Development

Spring 2012

Lecture:

T&Th 2:45-4:00, Sprague Learning Studio

Professor:

Z Sweedyk, 1249 Olin, x78360
Mail: z@cs.hmc.edu
Office hours: TBD

Course mailing list:

cs-121-l@hmc.edu

Course trac:

Team CA Ecology
Team CA Thermal
Team HI CS
Team MI Maps
Team MI Tech

Releases:

CA Ecology: alpha
CA Thermal: alpha
HI CS: alpha
MI Maps: alpha
MI Tech: alpha

Tutors/Graders:

Benson Khau
Adam Novak
Jessi Peck
Zewei Wang
Vivian Wehner
Yoyo Zhan

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.

Course Project

You will work in a team to build an educational game for one of our client teachers and her/his students:
  1. Greg Orr, Hillside Middle School in Kalamazoo, MI
  2. Michelle Townsley, Rio del Valle Middle School, Oxnard, CA .
  3. Leslie Wallace, Sycamore Middle School, Claremont, CA
  4. Robyn Herbig, Chiefess Kamakahelei Middle School, Lihue, HI
You will interact with teachers and students at these schools. Artifacts you produce will be critiqued by middle school students on a bi-weekly basis. The game you develop will be further polished over the summer by HMC research students and eventually released for use by teachers across the country.

The project is divided into four phases:

Grades

Your grade will depend on your semester-long design/development project as well as a midterm exam, quizzes, and class participation:
Game project 80%
Daily quizzes 10%
Class participation 10%
(Note: During most class meetings, you will work with your team on in-class activities that advance your game project so attendance is required. You will post a short note about your ativites on your wiki. Additional "participation points" can be earned by contributing to class discussion and identifying bugs, errors, typos, bad links, etc. in the class notes, web pages, etc.)

Textbooks

Code Complete by McConnell

Head First Object-Oriented Analysis and Design by McLaughlin, Pollice, and West

Schedule

 
Date Topic Readings due Assignment due Links Middle School activity
Tues 1-17 Introduction     Intro Questionnaire
Project phase I
Games Network web site
Lab 0: Game critique
Project intro
Thurs 1-19 Requirements Code Complete (CC) 3.1-3.4,20.1
Head First (HF) Ch 1,2
Ambler: BRUF
  Lab 1: First management update
Tues 1-24 Customer Elicitation HF Ch 3,4 Management update
Competitive analysis
High concept
Customer elicitation prep
   
Thurs 1-26 Requirements modeling
Design practice
CC 3.5, 5.1-5.4
HF Ch 5
  PacMan use cases
Class diagrams
Sequence diagrams
Lab 2: Use cases
Tues 1-31 Design principles HF Ch 6,7, 8 Management update
Customer elicitation report
Game treatment
Use cases
Tech assessment
UMLet: UML tool
Lab 3: Domain diagram
Treatment critique
Thurs 2-2 Lab only (Z gone)     Lab 4a: CRC cards
Lab 4b: Code policy
Tues 2-7 Design patterns Huston Design Patterns: Singleton, Adapter, Bridge, Observer, Strategy Management update
Prototype
Proposal
Project: Phase II
Phase I project feedback
Phase I team feedback
Lab 5: Alpha goal stack
 
Thurs 2-9 User interface design
Reviews
usability.net: User-centric design
Bay: Designing games that don't suck
Glinert: Upping your game's usability
  Lab 6: Task analysis
Tues 2-14 Usability testing Lewis & Rieman: Ch 0-5 Management update
Inital architecture design
Architecture design review package
Weekly prototype/code
Lab 7: Architecture Review Prep Prototype critique
Thurs 2-16 Architecture design review      
Tues 2-21 UI test   Management update
Revised architecture
Initial UI design
UI test
Weekly prototype/code
   
Thurs 2-23 Testing CC Ch 20, 22   Lab 8: Test plans
Tues 2-28 Lab only (Z gone)   Management update
Final UI design
Test plan
Test plan review package
Weekly prototype/code
Lab 9: Test plan review prep UI Critique
Thurs 3-1 Test plan review      
Tues 3-6 Alpha testing   Management update
Alpha
Lab 10: Alpha testing  
Thurs 3-8 Presentations     Lab 11: Alpha presentation
Tues 3-13 Spring break       Alpha test
Thurs 3-15 Spring break      
Tues 3-20 Alpha presentation     Project: Phase III
Lab 12: Mgt Update (beta goal stack)
 
Thurs 3-22 Code quality CC Ch 21, 24
Green: Unmaintainable Code
  Lab 13: Code critique
Tues 3-27 Refactoring Atwood: Code smells Management update
Prototype/code
Code policy
Static code analysis
Lab 14: Code standards evaluation Learning objectives
Thurs 3-29 No class     Lab 15: Code walkthrough prep
Tues 4-3 Code walkthrough   Management update
Prototype/code
Code walkthrough
   
Thurs 4-5 Wired: User testing of Halo   Lab 15: User test prep
Tues 4-10 User testing, User testing demo 1   Management update
Prototype/code
Lab 16: User test  
Thurs 4-12 User testing demo 2      
Tues 4-17 Beta presentations   Management update
Beta
Project: Phase IV
Beta test
Thurs 4-19 Beta tests      
Tues 4-24 Final report review
Code freeze
  Management update
Final report (draft for review)
Code review package
   
Thurs 4-26 Code review      
Tues 5-8
(2:00 PM, exam time)
Final presentations
V1 Testing
  Final project submission    
Last updated Jan. 2012