Computer Science 121 - Software Development (Fall 2009)

Tuesday/Thursday - 14:45-16:00

$Id: schedule.html 184 2009-09-07 04:51:26Z Mark $

Lecture, Reading and Exam Schedule

Week Day Date Discussion Topic Reading* Projects Slides
1 T 09/01 Introduction McC 1-2
Kessler: Why Projects Fail
Brooks: No Silver Bullet
Wiki: Legacy System
P1: teams and concepts pdf
Q&A
R 09/03 Basic Project Skills McC 28.2
Kampe: Surviving Larger Projects
Kampe: What is a Post-Mortem?
Schaefer: Diablo Postmortem
Kampe: Reproducibility and Control
Keller: Goal Driven Project Management
Trac User Guide: (Wiki)
Trac User Guide: (Tickets)
Trac User Guide: (TracAdmin - Milestones)
Trac User Guide: (version control subsystem)
Subversion chap 2: Basic Concepts
pdf
Q&A
2 T 09/08 Requirements McC 3.3-4, 4, 20.1
Rakitin: What is Quality?
Wiki: Requirements Analysis
Kampe: User Requirements
Sweedyk: Requirements for Games
Wiegers: Requirements Traps
Wiegers: Prioritizing Requirements
P1 - Initial Proposals pdf
Q&A
R 09/10 Users, Roles,
and Use Cases
Sisson: User Characterization
Rouse: What Players Want
usabilitynet: Task Analysis
Wiegers: Developing Use cases
Sweedyk: Use Cases for Games
Wells: User Story Cards
Wiki: UML introduction
UML use case diagrams
pdf
Q&A
3 T 09/15 Game Design Larsen: Design for Novices
Cook: Evolutionary Design
Allmer: Gameplay
Rollings & Adams: Gameplay
Constable: Gameplay
P1 - Requirements Elicitations pdf
Q&A
R 09/17 DEMONSTRATION    
4 T 09/22 U/I Design usability.net: User Centered Design
Talin: U/I Design Principles
Bay: Game usability
Wiki: Usability Testing
Thompson: Halo 3 Usability
Nielsen: Web U/Is are different from GUIs
Butler: Web U/Is aren't different from GUIs
Kampe: CLI Design
Kampe: Content Architecture
P1 - Final Proposals pdf
Q&A
R 09/24 Principles of Architecture SEI: S/W Architecture
Garlan: S/W Architecture (ch 1-2)
McC 3.5-6, 5-5.2
Wiki: Mechanism/Policy Separation
Kampe: Software Testability
Kampe: Interface Stability
pdf
Q&A
5 T 09/29 Class Project Selection Kampe: Data Driven Decisions
Project 2 - candidate proposals
Project 2 - reviewers feedback
Project 1 - feedback packages
Project 2 - Suggested Team Organization
P2 - choice, organization pdf
R 10/01 Evolving an Architecture McC 5.3-4, 34.1, 34.6
Garlan: S/W Architecture (ch 3-4)
Foote: Big Ball of Mud (Intro - "Keep it Working")
pdf
Q&A
6 T 10/06 System Models
& Modeling
UML component diagrams
Kampe: Why we model
Ambler: Agile Modeling Principles
Gabler: Prototyping
Sweedyk: Game Prototyping
P2 - arch, dsgn, U/I, technology selection pdf
Q&A
R 10/08 Design Reviews McC 20.2-5, 21.1,3-4
Wiegers: Inspections
Wiegers: 7 Deadly Sins
pdf
Q&A
7 T 10/13 DEMONSTRATION Architectural Review take-home midterm solns
R 10/15 DEBRIEF & PLANNING Proj 2, Phase 1, First Delivery
8 T 10/20 FALL BREAK
R 10/22 Project Scheduling
and Tracking
McC 34.7
Brooks: Mythical Man Month (digest)
Kampe: Project Milestones
Wiki: Gantt Charts
Wiki: PERT Charts
Wiki: Work Breakdown Structure
Kampe: Putnam Norden Rayleigh curves
Wiki: Earned Value Analysis
Idiot's Guide to Open Workbench (just skim)
Wiegers: Successful Project Management
Junk: Cost, Schedule, Features & Quality
Trac User Guide: (milestones, roadmap)
P2 - arch, dsgn, impl, unit test pdf
Q&A
9 T 10/27 Component, Class Designs McC 6, 34.4
Spolsky: What are specs?
Gabriel: Objects Have Failed
Steele: Objects have not failed
selected Class patterns
UML class diagrams
UML package diagrams
UML object diagrams
P2 - arch, dsgn, impl, unit test pdf
Q&A
R 10/29 Testability & Test Cases McC 19.6, 22
Wiki: Software Testing
Kampe: Introduction to S/W Test Cases
Cornett: Code Coverage
(review) Kampe: Software Testability
pdf
Q&A
10 T 11/03 Design Patterns Wikipedia: Design Patterns
"Model, View, Controller" architecture
the "Bridge" Design Pattern
the "Visitor" Design Pattern
Nguyen & Wong: Design Patterns for Games
P2 - new team & project selection pdf
Q&A
R 11/05 Routine Level Design McC 7-7.2, 9-9.3, 18 pdf
Q&A
11 T 11/10 Bugs & Debugging McC 23
Kampe: Forensic Debugging
Kampe: Root Cause Analysis
Wiki: Defect Tracking
Black: writing a bug report
P2 - specification & design pdf
Q&A
R 11/12 Integration Strategy
Testing Methodology
McC 29
Kampe: Integration Strategy
Fowler: Continuous Integration
Kampe: The Train Model
Wiki: Test Driven Development
Kampe: Test Harnesses
CUnit - a unit testing framework (just skim)
pdf
Q&A
12 T 11/17 System Testing
Performance
McC 25
Wiki: System Testing
Kaner: Scenario Based Testing
Kampe: Load & Stress Testing
Kampe: Testing and Bug Discovery
Kampe: Release Phases & Criteria
Gnu: Gprof (just skim)
P2 - design review/revision pdf
Q&A
R 11/19 S/W Process Models McC 3-3.2
Kampe: S/W Process Models
Boehm: Spiral Development
Laramee: Game Design Procees
pdf
Q&A
13 T 11/24 Agile Process McC 34.2, 34.9
Big Requirements up Front
Wiki: Agile Process
Wiki: eXtreme Programming
P2 - test plan, review, revision pdf
Q&A
R 11/26 THANKSGIVING
14 T 12/01 Productivity & Collaboration McC 21.2, 28.1, 28.5, 33
Wiki: XP practices
Williams: Pair Programming
Rosenberg: Problems w/Pair Programming
Global Software Development
P2 - implementation & testing pdf
Q&A
R 12/03 Robustness McC 8
Kampe: HA taxonomy
Kampe: S/W HA
pdf
Q&A
15 T 12/08 Maintainability McC 30.2, 32, 34.3, 34.5
you have already covered chap 11, 31
JavaDoc
P2 - final reports pdf
Q&A
R 12/10 Task Estimation
and Risk Assessment
McC 27, 28.3
Kampe: S/W Estimation Principles
Wiki: COnstructive COst MOdel
Peters: S/W Project Estimation
Wiegers: Risk Assessment & Management
pdf
Q&A
16 T 12/15 2PM - FINAL EXAM everything since midterm info

*There will be daily quizzes on the assigned reading

Supplementary Reading

subversion reference manual chapters 2-4.

It is assumed that you have all used the svn (subversion) version control system in previous courses. This course may require you to use features with which you are not yet facile:

McConnell, chapters 10-19

This course involves considerable reading ... and yet it touches only only superficially on many important subjects. The projects require so much planning activity that there is little time left for actual implementation. I believe (and I hope you will agree) that this course will make very good use of the semester ... but many students enter this course hoping to gain more, and large-project, programming experience. I respect this desire, but I couldn't find enough hours in the semester.

The primary text for this course (McConnell, Code Complete) actually has several excellent chapters on coding and programming issues. The only reasons I do not assign them are:

If, however, you want to be exposed to a well articulated collection of programming lessons that it normally takes a decade or more to learn, I strongly recommend that you read (and carefully study) chapters 10-19 of Code Complete.