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.

Required:

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

Recommended:

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.

Week 2

TBD.

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

Improving Security Across the Software Development Lifecycle, Security Across the Software Development Lifecycle Task Force, April, 2004.

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.