University of Southern California
cs201 || principles of software development || games

spring 2007 : csci 201-29984

description || schedule (now) || project || notes || homeworks || references

Instructor: Alexandre R.J. François
Office: PHE-222
Lectures: T-Th 9:30-10:50 - VKC 155
Lab: T 4:00-5:50 - RTH 321

Viterbi News: Games Students Play, and Make

course description

objectives || topics || project || homeworks || readings || grading || integrity


Objectives: participation in a large development project, collaboration, s/w engineering issues; concurrency, synchronization.

Prerequisites: object-oriented programming in C++


Requirements, architectural design, code design, documentation, testing (unit-testing), patterns,
Concurrency, synchronization, distributed systems,
Design, human factors, collaboration and collaborative tools, ethics, open source development


Collaborative class project: specifics will be determined in the course of the class, based on interest and skills represented in the team. The project will likely be of the level of a technical demonstration rather than a fully developed game.

[project page]


Individual assignments related to project (between 5 and 10 assignments over the semester).

[Homework list]

text and readings

Optional textbook: (Flynt and Salem, 2004): not necessary to complete the course successfully.

Suggested readings will be listed for specific lectures/topics (see schedule).

[Lecture notes]


To be discussed in class.


academic integrity

The USC Student Conduct Code prohibits plagiarism. All USC students are responsible for reading and following the Student Conduct Code, which appears in the current SCampus. The Student Judicial Affairs and Community Standards website offers (among other useful resources) a Guide to Avoiding Plagiarism which which defines plagiarism and includes examples and explanations of effective and ineffective paraphrasing. If you have questions about what is allowed, please discuss it with the instructor.

Students who violate University standards of academic integrity are subject to disciplinary sanctions, including failure in the course and suspension from the University. Since dishonesty in any form harms the individual, other students, and the University, policies on academic integrity will be strictly enforced. Violations of the Student Conduct Code will be filed with the Office of Student Conduct, and appropriate sanctions will be given.

spring 2007 : csci 201-29984

Always in motion is the future. -- Yoda


1 - Tuesday January 9:
Course overview: objectives, challenges, organization, project

2 - Thursday January 11:
Project: management, organization, life cycle, team work, open source
Notes: [pdf]
Ref: (Flynt and Salem, 2004) ch.1 - Getting into the Game
Ref: (Flynt and Salem, 2004) ch.15 - Team Work
Ref: (Brooks, 1975)


3 - Tuesday January 16:
What is design? Design and software, interaction, human factors
Notes: [pdf]
Ref: (Norman, 2002)
Ref: (Winograd, 1996)
Homework 1 assigned

Lab: project organization overview

4 - Thursday January 18:
Project design, game design document
Ref: (Rouse, 2001)
Ref: (Miller, 1956)

5 - Tuesday January 23:
Game design document
Homework 1 due

Lab: design analysis (homework 1) presentations

6 - Thursday January 25:
Project design exploration
Homework 2 - Phase 1 assigned

January 26:
Last day to register and add classes
last day to drop a class without a mark of W
last day to change enrollment option to Pass/No Pass or Audit
Ref: Registration Calendar


7 - Tuesday January 30:
Requirements engineering, tools, requirements specification document
Notes: [pdf]
Ref: (Flynt and Salem, 2004) ch.2 - Requirements: Getting the Picture
Homework 2 - Phase 1 due

Lab: Project design - organization and tools
Homework 2 - Phase 2 assigned

MIMI: Multi-modal Interaction for Musical Improvisation (Case Study)

8 - Thursday February 1:
Overview: design, specifications, architecture

9 - Tuesday February 6:
Architecture (cont.), introduction to the SAI framework, code design
Homework 2 - Phase 2 due

CS Distinguished Lecture: "Unleashing the Computer's Potential for Communication" by D. Salesin (University of Washington)
Lab: Project Design Document

Requirements (cont.)

10 - Thursday February 8:
Requirements Engineering
Introduction to UML

11 - Tuesday February 13:
Project requirements engineering - elicitation and exploration

Lab: Project requirements engineering - elicitation and exploration
Homework 3 assigned

12 - Thursday February 15:
Project requirements

Software Architecture

13 - Tuesday February 20:
Introduction to Software Architecture
The Software Architecture for Immersiprence (SAI) framework
Slides: [pdf]

Lab: Project requirements engineering - analysis and refinement
Homework 3 - due

14 - Thursday February 22:
Project system architecture design (conceptual level)

15 - Tuesday February 27:
The MFSM Architectural Middleware for SAI

Lab: SAI and MFSM - hands on tutorial
Link: MFSM user guide
Link: MFSM reference guide
Code: MFSM starter package (local)

Project Software Design

16 - Thursday March 1:
Project system architecture design (logical level)

17 - Tuesday March 6:
Project planning
Common data structures: Game state
Homework 4 - assigned

Lab: Common data structures: Game state, Game events

18 - Thursday March 8:
Common data structures: Interaction state, Interaction events
Homework 4 - due

[Spring Recess]

Project Development

19 - Tuesday March 20:
Preparation for coding

Lab: Project coding (preliminaries)

20 - Thursday March 22:
Project skeleton code analysis

21 - Tuesday March 27:
Coding directions
Concurrency and synchronization
Ref: (Andrews, 1999)

Lab: Project coding (1)

22 - Thursday March 29:
Project reports (1)
Checkpoint: progress / threats

23 - Tuesday April 3:
Project code design refinement
Homework 4 summary

Lab: Project coding (2)

24 - Thursday April 5:
Project reports (2)
Checkpoint: progress / threats

25 - Tuesday April 10:
Project development

Lab: Project full scale integration and testing

26 - Thursday April 12:
Project reports (3)
Checkpoint: progress / threats

27 - Tuesday April 17:
Project development/testing

Lab: Course evaluations
Project coding and testing

28 - Thursday April 19:
Project presentations: Control and Networking modules
Project final checkpoint


29 - Tuesday April 24:
Project presentations: Graphics, Interaction and Game modules

Lab: Project wrap-up/demonstration

30 - Thursday April 26:
Project/course post mortem

No Final Exam


Lecture notes in pdf format:

Chapter 1: Introduction

Chapter 2: Design

Chapter 3: Requirements



Homework 1: Design

Homework 2: Game Design Document (project)

Homework 3: Software Requirement Specification (project)

Homework 4: Architectural design (project)



(Andrews, 1999) Gregory R. Andrews, Foundations of Multithreaded, Parallel, and Distributed Programming, Addison Wesley, 1999, ISBN-10: 0201357526.

(Brooks, 1975) Frederick P. Brooks, The Mythical Man-Month: Essays on Software Engineering, Addison Wesley, 1975, ISBN: 0-201-00650-2.
20th Anniversary edition, Addison Wesley, 1995, ISBN-10: 0201835959.

(Bjork and Holopainen, 2004) Staffan Bjork and Jussi Holopainen, Patterns in Game Design, Charles River Media, 2004, ISBN: 1-584-50354-8.

(Boehm and Turner, 2003) Barry Boehm and Richard Turner, Balancing Agility and Discipline: A Guide for the Perplexed, Addison Wesley Professional, 2003, ISBN-10: 0321186125.

(Eberly, 2000) David H. Eberly, 3D Game Engine Design : A Practical Approach to Real-Time Computer Graphics, Morgan Kaufmann, 2000, ISBN-10: 1558605932.

(Eberly, 2005) David H. Eberly, 3D Game Engine Architecture : Engineering Real-Time applications with Wild Magic, Morgan Kaufmann, 2005, ISBN-10: 012229064X .

(Flynt and Salem, 2004) John P. Flynt and Omar Salem, Software Engineering for Game Developers, Muska & Lipman, 2004, ISBN-10: 1592001556.

(Francois, 2005) Alexandre R.J. François, SAI: Architecting Distributed Asynchronous Software Systems, IMSC Technical Report IMSC-05-003, University of Southern California, Los Angeles, September 2005. [pdf]

(Francois, 2004) Alexandre R.J. François, "A Hybrid Architectural Style for Distributed Parallel Processing of Generic Data Streams," Proceedings of the International Conference on Software Engineering, pp. 367-376, Edinburgh, Scotland, UK, May 2004. [pdf]

(Francois, 2003) Alexandre R.J. François, Software Architecture for Immersipresence, IMSC Technical Report IMSC-03-001, University of Southern California, Los Angeles, December 2003. [pdf]

(Gamma et al., 1995) Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design Patterns, Addison-Wesley / ACM Press, 1995, ISBN-10: 0201633612.

(Miller, 1956) George A. Miller, "The Magical Number Seven, Plus or Minus Two: Some Limits on Our Capacity for Processing Information," The Psychological Review, vol. 63, pp. 81-97, 1956.

(Norman, 2002) Donald A, Norman, The Design of Everyday Things, Basic Books, 2002, ISBN-10: 0385267746.

(Rouse, 2001) Richard Rouse III, Game Design - Theory and Practice, Wordware Publishing, 2nd. Edition, 2001, ISBN-10: 1556229127

(Winograd, 1996) Terry Winograd, Bringing Design to Software, Addison Wesley, 1996, ISBN: 0201854910.

ARJF © 2006-2007