Syllabus - Software Design Project - Spring 2004

Week 1 - The Software Design Process

March 28:
Course overview, overview of game design process

March 30:
Design as a problem solving process
Due: Review of "The Nature of the Design Process"
Due: Team selections

April 1:
Overview of J2ME game features, MIDlets, canvas, operating the emulator
Read: Section 1 ("Getting Started with Mobile Phone Game Programming") in Beginning Mobile Phone Game Programming (Ch. 1-3, pp. 9-63)

Week 2 - J2ME Game Programming

April 4:
In-class presentations of game concepts
Overview of game design documents
Basic J2ME graphics
Due: Game Concept document
Read: Chapter 4 ("Mobile Game Graphics 101") in Beginning Mobile Phone Game Programming, pp. 67-90.

April 6:
Sprites and input
Read: Chapter 5 ("Using Sprite Animation") and Chapter 6 ("Handling Mobile Phone Input") in Beginning Mobile Phone Game Programming, pp. 91-134.

April 8:
Tiles and layers
Read: Chapter 10 ("Creating Tiled Game Layers") and Chapter 11 ("Managing Multiple Game Layers") in Beginning Mobile Phone Game Programming, pp. 197-240.

Week 3 - Software Design, Design Patterns

April 11:
Elements of the design process, choosing design strategies
Due: Review of Chapter 5 ("The Design Process Disintegrated") of Design Methods (one review for both)

April 13:
In-class presentations of detailed game designs
Due: Game Design document

April 15:
Design patterns introduction
Due: Review of Chapter 1 ("Introduction") of Design Patterns

Week 4 - Software Design Patterns

April 18:
Design patterns use scenario
Read: Chapter 2 ("A Case Study: Designing a Document Editor") of Design Patterns

April 20:
Survey of design patterns (1)
Due: Review of Abstract Factory (87), Factory Method (107), Adapter (139) from Design Patterns
Due: Project requirements document

April 22:
Survey of design patterns (2)
Due: Review of Observer (293), Composite (163), Decorator (175) from Design Patterns

Week 5 - Software Design Patterns

April 25:
Survey of design patterns (3)
Due: Review of Strategy (315), Template Method (325), Chain of Responsibility (223) from Design Patterns

April 27:
Survey of design patterns (4)
Due: Review of Singleton (127), Facade (185), Flyweight (195) from Design Patterns

April 29:
Patterns as applied to game design

Week 6 - Software Design Patterns

May 2:
In-class review of project design
Due: Initial technical design document

May 4:
In-class review of project design

May 6:
Survey of design patterns (5)
Due:
Review of Interpreter (243), Visitor (331), Memento (283) from Design Patterns

Week 7 - Design for Security and Trust

May 9:
In-class review of revised project designs
Due: Revised technical design document

May 11:
Selection of topics from Security Engineering, by Ross Anderson, TBD.

May 13:
Security in the development lifecycle
Due: Review of The Trustworthy Computing Development Lifecycle

Week 8 - Design for Security and Trust

May 16:
Assessing and reducing attack surface
Read: Attack Surface: Mitigate Security Risks by Minimizing the Code You Expose to Untrusted Users

May 18:
Physical hardware security
Read:Chapter 14, "Physical Tamper Resistance", in Security Engineering, Ross Anderson, 2001.

May 20:
Buffer overflow
Due: Review of Chapter 7, "Buffer Overflows", in Building Secure Software, John Viega, Gary McGraw, 2002. Read only to p. 153.

Week 9 - Project Week

May 23:
Due: In-class presentation on project schedule, and project status in meeting that schedule

May 25:
Due: In-class presentation on project schedule, and project status in meeting that schedule

May 27:
No regular class meeting to allow time to work on the term project.

Week 10 - Project Completion

May 30:
No class, Memorial Day.

June 1:
Discuss class project, explore how well design worked during implementation.

June 3:
Final project demonstration.

June 10:
Due: Project users manual, final code submission (check in to Subversion).