description || schedule (now) || project || notes || homeworks || references
Instructor: Alexandre R.J. François
Lectures: T-Th 9:30-10:50 - VKC 155
Lab: T 4:00-5:50 - RTH 321
Viterbi News: Games Students Play, and Make
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
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.
Individual assignments related to project (between 5 and 10 assignments over the semester).
Optional textbook: (Flynt and Salem, 2004): not necessary to complete the course successfully.
Suggested readings will be listed for specific lectures/topics (see schedule).
To be discussed in class.
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.
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
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
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
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
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
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
10 - Thursday February 8:
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:
13 - Tuesday February 20:
Introduction to Software Architecture
The Software Architecture for Immersiprence (SAI) framework
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)
16 - Thursday March 1:
Project system architecture design (logical level)
17 - Tuesday March 6:
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
19 - Tuesday March 20:
Preparation for coding
Lab: Project coding (preliminaries)
20 - Thursday March 22:
Project skeleton code analysis
21 - Tuesday March 27:
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:
Lab: Project full scale integration and testing
26 - Thursday April 12:
Project reports (3)
Checkpoint: progress / threats
27 - Tuesday April 17:
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
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,
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:
(Winograd, 1996) Terry Winograd, Bringing
Design to Software, Addison Wesley, 1996, ISBN: 0201854910.
(Winograd, 1996) Terry Winograd, Bringing Design to Software, Addison Wesley, 1996, ISBN: 0201854910.