Software Design (CS223 2004F)

CS223 2004F At A Glance

This is an abbreviated course syllabus. Like everything else in this course, it is likely to change.

Weeks: 1, 2, 3, 4, 5, 6, 7, 8, break, 9, 10, 11, 12, 13, 14.

Week 1: Some Basics
(01) Friday, 27 August 2004
Motivating Problems
(02) Monday, 30 August 2004
Polymorphism (1)
About the class. The candy machine world. Problem 1: Testing. Problem 2: Doubling.
(03) Wednesday, 1 September 2004
Java Packages
Quiz. The Import Statement. Why packages? Using packages in *nix systems.
(04) Friday, 3 September 2004
Polymorphism (2)
Using Java packages. The Candy Machine Problem, Revisited. Solution one: Java Introspection. Solution two: An Important Design Pattern. Improving solution two: Anonymous Inner Classes.
Week 2: Basics, Continued
(05) Monday, 6 September 2004
Polymorphism (3)
Factories, Revisited. Anonymous Inner Classes. Factories, Re-Revisited.
Assignments: Read Fowler, Chapter 3, 5, and 6.
(06) Wednesday, 8 September 2004
The UML (1): Objects and Their Relationships
The Key Parts of a Class Relationships Between Classes Incorporating Interfaces Q and Q Exercise
Assignments: Read Fowler, Chapters 4, 9, and 10.
(07) Friday, 10 September 2004
Week 3: UML
(08) Monday, 13 September 2004
The UML (2): Classes and Interfaces
Review. Interfaces.
Assignments: Homework for Friday: Sketch UML diagrams to give an overview of how one might approach the "Ant Simulation" problem. Work in groups of three. Homework for Wednesday: Finish UML Distilled.
(09) Wednesday, 15 September 2004
The UML (3): Processes and Computation
Representing code in action. Sequence diagrams. Use cases. Finite state amchines.
(10) Friday, 17 September 2004
The UML (4): Miscellaneous
Sequence diagram example. Questions and answers. State diagram example.
Due: Homework 2: Diagrams. Assignments: Start to read the XP book. Project, phase 1: Design and implement theWorld.
Week 4: Tools
(11) Monday, 20 September 2004
Version Management with CVS
Background: Controlling Source Code Background: Unix tool design CVS: Design Issues Using CVS
(12) Wednesday, 22 September 2004
Simple Project Management with Make
The problems Make addresses Make basics Variables in Make Standard Make targets Advanced make
(13) Friday, 24 September 2004
Java Project Management with Ant
Philosophy of Ant Ant Basics Ant Variables
Due: Homework 3: Worlds Assignments: Read the XP book. HW4, Part 1: Implementing the State of the World. HW4, Part 2: Implementing Bugs.
Week 5: Extreme Programming
(14) Monday, 27 September 2004
Extreme Programming (1)
Context: Kinds of Software. Context: Heavyweight Development. Basics of XP.
(15) Wednesday, 29 September 2004
Extreme Programming (2)
Principles that ground XP. Programmers' activities. XP Practices. Exercise: Testing.
(16) Friday, 1 October 2004
Due: WorldState or Bug Assignments: Prepare talks for Monday's class. Write a better TestVector (due Friday). Read JUnit Test Infected: Programmers Love Writing Tests.
Week 6: Swing
(17) Monday, 4 October 2004
BugWorld Presentations
Assignments: Start reading Creating a GUI with JFC/Swing.
(18) Wednesday, 6 October 2004
Testing with JUnit
Writing our own tests. Generalizing to a test suite. JUnit.
(19) Friday, 8 October 2004
Swing (1)
Swing Basics A Sample Program Some Design Issues Exercise
Week 7: Pause for Breath
(20) Monday, 11 October 2004
Swing (2)
Design Criteria. Examples. Exercise.
(21) Wednesday, 13 October 2004
Class Cancelled
(22) Friday, 15 October 2004
Class Cancelled
Week 8: Design Heuristics
(23) Monday, 25 October 2004
Design Heuristics (1): Basics
Quiz discussion. Your questions. The basics: Why this book, why study heuristics? A guiding principle: Encapsulation. Weaknesses of this principle.
(24) Wednesday, 27 October 2004
Design Heuristics (2): Relationships
Preparation Containment vs. Association
Assignments: Take Home Exam 1 (due next Friday).
(25) Friday, 29 October 2004
Pause for Breath
Spring Break
Week 9: Testing
(26) Monday, 1 November 2004
In-Class Exam 1
The exam.
(27) Wednesday, 3 November 2004
Swing (3): Drawing
Graphics basics Normal steps Example
(28) Friday, 5 November 2004
Discussion of In-Class Exam 1
Questions and answer on take-home Problems with in-class If time: Ideas about Wednesday's problems?
Assignments: Please try to read more of Design Heuristics. Finish the exam.
Week 10: Design Heuristics, Revisited
(29) Monday, 8 November 2004
Swing (4): Debugging Drawing
A buggy program Strategies for zapping the bug
(30) Wednesday, 10 November 2004
Design Heuristics (3): Relationships
How objects and classes relate Obtaining classes to use Class design Inheritance Polymorphism Association
(31) Friday, 12 November 2004
Project Interfaces
Next phase of assignment Interface demos
Assignments: Next stage of the project: Integrate! In particular, integrate (1) a world represented by a two-dimensional array of tiles; (2) the code that displays tiles; (3) the code that reads and runs bugs.
Week 11: Design Heuristics, Concluded
(32) Monday, 15 November 2004
Design Heuristics (4): Choosing Relationships
Today's strategy Choosing a relationship Choosing how to get objects to use
(33) Wednesday, 17 November 2004
Design Heuristics (5): Choosing Relationships, Continued
Today's strategy Choosing a relationship
(34) Friday, 19 November 2004
Design Heuristics (6): Obtaining Objects to Use
Choosing how to get objects to use Riel's heuristics Our heuristics
Assignments: Read chapters 1 and 2 of Design Patterns.
Week 12: Design Patterns
(35) Monday, 22 November 2004
Design Patterns (1): Introduction
Multiple perspectives on software reuse The Design Patterns philosophy An example: Sorting The Design Patterns catalog, abbreviated The Patterns Format(s)
Assignments: Finish your simulation (due Monday, 6 December 2004). Read chapter 2 of Design Patterns (due Wednesday, 24 November 2004). Read chapter 3 of Design Patterns (due Monday, 29 November 2004).
(36) Wednesday, 24 November 2004
Class Cancelled
Thanksgiving Break
Week 13: Design Patterns
(37) Monday, 29 November 2004
Design Patterns (2): Case Study
The case: A text editor Nine key patterns: Composite (163), Strategy (315), Decorator (175), Abstract Factory (87), Bridge (151), Command (223), Iterator (257), Visitor (331), Flyweight (195)
(38) Wednesday, 1 December 2004
Design Patterns (3): Creational Patterns
Questions and answers. Three related creational patterns. Two other creational patterns.
Assignments: Read "Structural Patterns" for Friday.
(39) Friday, 3 December 2004
Design Patterns (4): Structural Patterns
Builders, revisited Basic wrapper patterns Group wrapper patterns Other wrapper patterns Other creational patterns
Week 14: Wrapup
(40) Monday, 6 December 2004
Takehome Discussion
Introductory notes Java Collections Framework Factories Introspective Testing Refactoring
Assignments: Take-home Final Examination. Read Chapter 5 of Design Patterns.
(41) Wednesday, 8 December 2004
Design Patterns (5): Behavioral Patterns
Introduction Summary of patterns Relating patterns
Assignments: End-of-course Development Evaluation (due Friday). Final stages of project (due Friday).
(42) Friday, 10 December 2004

Disclaimer: I usually create these pages on the fly, which means that I rarely proofread them and they may contain bad grammar and incorrect details. It also means that I tend to update them regularly (see the history for more details). Feel free to contact me with any suggestions for changes.

This document was generated by Siteweaver on Wed Dec 8 08:40:11 2004.
The source to the document was last modified on Mon Nov 29 08:33:38 2004.
This document may be found at

You may wish to validate this document's HTML ; Valid CSS! ; Check with Bobby

Samuel A. Rebelsky,