Computer Science 121 - Software Development (Fall 2007)

$Id: schedule.html 170 2007-12-08 18:45:00Z Mark $

Lecture, Reading and Exam Schedule

Week Day Date Discussion Topic Reading* Projects Slides
1 T 09/04 Introduction McC 1-2
Kessler: Why Projects Fail
Brooks: No Silver Bullet
Wiki: Legacy System
P1a: teams and concepts pdf
Q&A
R 09/06 Basic Project Skills McC 28.2
Spolsky: 12 steps to better code
Kampe: Reproducibility and Control
Wingerd: SCM Best Practices
Kampe: Surviving Larger Projects
Kampe: What is a Post-Mortem?
pdf
Q&A
2 T 09/11 S/W Process Models McC 3-3.2
Kampe: S/W Process Models
Wiki: Waterfall Model
Wiki: Iterative Models(defn, life cycle)
Boehm: Spiral Development
Wiki: Rational Unified Process
P1a: proposal development pdf
Q&A
R 09/13 Requirements McC 3.3-4, 4
Wiki: Requirements Analysis
Kampe: User Requirements
Wiegers: Requirements Traps
Wiegers: Prioritizing Requirements
pdf
Q&A
3 T 09/18 Users, Roles,
and Use Cases
Sisson: User Characterization
usabilitynet: Task Analysis
Wiegers: Developing Use cases
Wells: User Story Cards
UML use case diagrams
P1a - draft requirements pdf
Q&A
R 09/20 DEMONSTRATION Requirements Elicitation
4 T 09/25 Quality
Quality Assurance
McC 20
Rakitin: What is Quality?
Spolsky: Five Worlds
Rakitin: What is Software Quality Assurance?
Boehm: S/W Defect Reduction
Wieger: Peer Reviews
P1a - elicitation & writeup pdf
Q&A
R 09/27 Agile Process McC 34.2, 34.9
Big Requirements up Front
Wiki: Agile Process
Wiki: eXtreme Programming
pdf
Q&A
5 T 10/02 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
P1b - architecture development pdf
Q&A
R 10/04 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/09 System Models
& Modeling
Wiki: UML introduction
UML activity diagrams
UML component diagrams
Kampe: Why we model
Ambler: Agile Modeling Principles
P1b - architecture refinement pdf
Q&A
R 10/11 Component, Class Designs McC 6, 34.4
Spolsky: What are specs?
Gabriel: Objects Have Failed
Steele: Objects have not failed
UML class diagrams
UML package diagrams
UML object diagrams
Wikipedia: Design Patterns
selected Class patterns
pdf
Q&A
7 T 10/16 Routine, Algorithm Design McC 7, 9, 18
UML interaction diagrams
UML state diagrams
selected algorithmic patterns
P1b - write-up pdf
Q&A
R 10/18 MID-TERM EXAM all the above info
8 T 10/23 SPRING BREAK
R 10/25 Design Reviews McC 21.3-4
Wieger: Inspections
Wieger: 7 Deadly Sins
P1c - Review preparation pdf
Q&A
9 T 10/30 Robustness McC 8
Kampe: HA taxonomy
Kampe: S/W HA
P1c - Design Reviews pdf
Q&A
R 11/01 DEMONSTRATION Architectural Review
10 T 11/06 U/I Design usability.net: User Centered Design
Talin: U/I Design Principles
Nielsen: Web U/Is are different from GUIs
Butler: Web U/Is aren't different from GUIs
Wiki: Usability Testing
Kampe: Content Architecture
Kampe: CLI Design
P1c - Write-up & Revision pdf
Q&A
R 11/08 Maintainability Much but easy Reading
McC 11, 30.2, 31, 32, 34.3, 34.5
JavaDoc
pdf
Q&A
11 T 11/13 Productivity & Collaboration McC 21.1-2, 28.1, 28.5, 33
Wiki: XP practices
Williams: Pair Programming
Rosenberg: Problems w/Pair Programming
Global Software Development(PW=kampe121)
P2a - spec development pdf
Q&A
R 11/15 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
12 T 11/20 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)
P2b - concept development pdf
Q&A
R 11/22 THANKSGIVING
13 T 11/27 Bugs & Debugging McC 23
Kampe: Forensic Debugging
Kampe: Root Cause Analysis
Wiki: Defect Tracking
Black: writing a bug report
Bugzilla Manual (skim sections 5.3-5.13)
P2c - design pdf
Q&A
R 11/29 System Testing
Performance
McC 24-26
Wiki: System Testing
Kaner: Scenario Based Testing
Kampe: Load & Stress Testing
Kampe: Testing and Bug Discovery
Kampe: Release Phases & Criteria
Gnu: Gprof (just skim)
pdf
Q&A
14 T 12/04 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
P2d - design review pdf
Q&A
R 12/06 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
pdf
Q&A
15 T 12/11 Metrics and
Process Improvement
McC 28.4, 34.8
Wiki: Process Improvement
Spolsky: Stealth Process Improvement
Wiki: Best Practices Benchmarking
Wiki: Capability Maturity Models
Wiki: Six Sigma
Wiki: ISO 9000
Wiki: Software Metrics
Kaner: SWE metrics
P2e - test plan pdf
Q&A
16 W 12/19 FINAL EXAM everything since midterm P2f - EXTRA CREDIT 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.

Project Schedule

proj task type assigned due
1 A. From concept to validated requirements team 9/04/2007 10/02/2007
1 B. Develop a software architecture team 10/02/2007 10/25/2007
1 C. Architectural Review team 10/25/2007 11/13/2007
2 Overview of Project 2A-F team 11/13/2007 12/16/2007
2 A. Concept & Planning team 11/13/2007 appx 11/20
2 B. Specification Development team appx 11/20 appx 11/27
2 C. Module Design team appx 11/27 appx 12/04
2 D. Test Plan team appx 12/04 appx 12/11
2 E. Review & Revise team appx 12/11 12/16
2 F. Build & Test EXTRA CREDIT team appx 12/11 12/21