CS 116 - Software Design Project
Course Readings

Required Texts

There is one required textbook for the course, and two that are recommended. The required text (Design Patterns, also known as the "Gang of Four" (GoF) book) is the classic introduction to design patterns, and still the best source of material for the patterns it describes. One critique of the GoF book is the example code is given in C++ and Smalltalk, and requires some adaptation to use with Java. The recommended text, Design Patterns Java Companion, provides the GoF design patterns with Java examples. It is freely available online.

There are two books listed below on mobile game programming in J2ME (term projects involve creating a mobile phone game), and each book has different strengths. Morrison's book is more recent, and covers the sprite and tile functionality added in MIDP 2.0, whereas Wells' book describes how to implement this functionality from scratch, since it is based on MIDP 1.3. Morrison's book is an easier introduction to the material, while Wells' book covers several advanced techniques, and tends to cover material in more depth. Morrison's book describes four different example games, while Wells' only has a single (more involved) game example. In the end, it probably makes sense for each team to have a copy of both. If you personally only buy one, Morrison's book is the better choice (it's less expensive as well - $35 vs $60).

Required:

Design Patterns: Elements of Reusable Object-Oriented Software, Erich Gamma, Richerd Helm, Ralph Johnson, John Vlissides, Addison-Wesley, 1995.

Beginning Mobile Phone Game Programming, Michael Morrison, SAMS, 2005.

Recommended:

J2ME Game Programming, Martin J. Wells, Premier Press, 2004.

The Design Patterns Java Companion, James W. Cooper, 1998.

Week 1

David Budgen, Software Design, Chapter 1 ("The Nature of the Design Process"), Addison-Wesley, 2003, pp 3-24.

Michael Morrison, Beginning Mobile Phone Game Programming, SAMS, 2005, pp. 9-63 (Ch. 1-3).

Week 2

Michael Morrison, Beginning Mobile Phone Game Programming, SAMS, 2005, pp. 67-134 (Ch. 4, Ch. 5-6), pp. 197-240 (Ch. 10-11).

Week 3

J. Christopher Jones, Design Methods, Seeds of Human Futures, Wiley-Interscience, 1970. Chapter 5 ("The Design Process Disintegrated")

Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design Patterns, Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995. Chapter 1 ("Introduction"), pp. 1-31.

Week 4

Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design Patterns, Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995. Chapter 2 ("A Case Study: Designing a Document Editor"), pp. 33-85. Selected design patterns: Abstract Factory (87), Factory Method (107), Adapter (139), Observer (293), Composite (163), Decorator (175).

Week 5

Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design Patterns, Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995. Selected design patterns: Strategy (315), Template Method (325), Chain of Responsibility (223), Singleton (127), Facade (185), Flyweight (195).

Week 6

Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design Patterns, Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995. Selected design patterns: Interpreter (243), Visitor (331), Memento (283).

Week 7

Steve Lipner, Michael Howard, The Trustworthy Computing Security Development Lifecycle, Microsoft Developer's Network

Week 8

Attack Surface: Mitigate Security Risks by Minimizing the Code You Expose to Untrusted Users, Michael Howard, MSDN Magazine, November 2004.

Chapter 14, "Physical Tamper Resistance", in Security Engineering, by Ross Anderson, J. Wiley, 2001.

Chapter 7, "Buffer Overflows", in Building Secure Software, by John Viega, Gary McGraw, Addison-Wesley, 2002.

Week 9 & 10

No assigned readings.