| Date | Lecture/Lab Topics | Assigned Reading | Quiz | Slides |
|---|---|---|---|---|
| T 1/26 |
1A Administrative Introduction 1B Introduction to S/W Engineering 1C Introduction to Projects |
Syllabus McC 1-2 (s/w development) Kessler: Why Projects Fail Brooks: No Silver Bullet |
quiz 1 | lecture 1 |
| R 1/28 |
2A Project Post-Mortems 2B Project Planning 2C Basic Tools & Techniques |
McC 28.2 (configuration management) Spolsky: 12 steps to better code Kampe: Reproducibility and Control Kampe: Surviving Larger Projects Kampe: What is a Post-Mortem? Schaefer: Diablo Postmortem |
quiz 2 | lecture 2 |
| F 1/29 | P1A: concepts and plans | (due Sun 1/31) | ||
| T 2/2 |
2D S/W Process concepts 13A Waterfall: Critque & Defense 13B Issues with Waterfall Model 13C Evolutionary Models 13D Choosing the Right Model |
McC 3-3.2 (pre-requisites) McC 34.2 (process model) Kampe: S/W Process Models Boehm: Spiral Development Big Requirements up Front |
quiz 3 | lecture 3 |
| R 2/4 |
3A Requirements Introdution 3B Requirements Development Process |
McC 3.3-4 (requirements) Wiki: Requirements Analysis Kampe: User Requirements Wiegers: Requirements Traps Wiegers: Prioritizing Requirements |
quiz 4 | lecture 4 |
| F 2/5 | P1B: Competitve research | (due Sun 2/7) | ||
| T 2/9 |
4A User Characterization 4B Use Cases 4D Representing Use Cases |
Sisson: User Characterization Rouse: What Players Want Wiegers: Developing Use cases Wiki: User Story Cards Wiki: UML introduction Agile: UML use case diagrams Agile: UML activity diagrams Agile: UML state diagrams |
quiz 5 | lecture 5 |
| R 2/11 | DEMO: Requirements Elicitation | |||
| F 2/12 | P1C: Requirements Development | (due Sun 2/14) | ||
| T 2/16 |
6A General Principles of Modeling 6B Descritpive Models 6C Analytical Models 6D Prototypes and Proofs of Concept |
Kampe: Why we model Ambler: Agile Modeling Principles Ambler: UML component diagrams Ambler: UML deployment diagrams Gabler: Game Prototyping |
quiz 6 | lecture 6 |
| R 2/18 |
6E Good Architecture |
McC 3.5-6 (architecture) McC 5.2 (concepts) SEI: S/W Architecture Garlan: S/W Architecture (ch 1-2) Foote: Big Ball of Mud (digest) Wiki: Mechanism/Policy Separation Kampe: Software Testability Kampe: Interface Stability |
quiz 7 | lecture 7 |
| F 2/19 | P1D: Final Proposal | (due Sun 2/21) | ||
| T 2/23 |
6F Problems Architecture must solve 6G Evolving an Architecture 6H Describing an Architecture |
McC 5.1 (challenges) McC 5.3 (heuristics) McC 5.4 (design practices) McC 34.1 (managing complexity) McC 34.6 (levels of abstraction) Kampe: Architecture Does All That? |
quiz 8 | lecture 8 |
| R 2/25 |
5A Elements of Quality 5B Quality Assurance Process |
McC 20 (s/w quality) Spolsky: Five Worlds Rakitin: What is Software Quality Assurance? Boehm: S/W Defect Reduction Wieger: Peer Reviews |
quiz 9 | lecture 9 |
| F 2/26 | P2A: Plan (and Preliminary Architecture) | (due Sun 02/28) | ||
| T 3/2 |
5E Quality and Reviews 5F Formal Reviews 5G Informal Review Processes |
McC 21.4 (walk-throughs and other processes) Wieger: Inspections Wieger: 7 Deadly Sins |
quiz 10 | lecture 10 |
| R 3/4 | MIDTERM EXAM | Solutions | ||
| F 3/5 | P2B: Architectural Review (demo) | (due Wed 03/17) | ||
| T 3/9 | SPRING BREAK | |||
| R 3/11 | SPRING BREAK | |||
| F 3/12 | SPRING BREAK | |||
| T 3/16 |
7A Problems of U/I Design 7B Elements of good U/I design 7C Designing U/Is 7D Supplementary subjects |
Wiki: Usability Testing usability.net: User Centered Design Talin: U/I Design Principles Bay: Designing Games that Don't Suck Thompson: Halo 3 Usability Nielsen: Web U/Is are different from GUIs Kampe: Content Architecture Kampe: CLI Design |
quiz 11 | lecture 11 |
| R 3/18 |
8A Specifications, Design, & Components 8B Classes 8C Packages 8D Diagramming Classes in UML |
McC 6 (classes) McC 34.4 (language limitations) Object Mentor: Packaging Granularity Spolsky: What are specs? Wiki: Refactoring Agile: UML class diagrams Agile: UML package diagrams Agile: UML object diagrams |
quiz 12 | lecture 12 |
| F 3/19 | P2C: Final Architecture | (due Sun 03/21) | ||
| T 3/23 |
8E Routine Design 8F Representing Routine Designs |
McC 7-7.2 (routines, skim 7.3-7) McC 9-9.3 (pseudo-code) McC 18 (tables) Agile: UML Sequence diagrams |
quiz 13 | lecture 13 |
| R 3/25 |
9A Algorithmic patterns 9B Architectural patterns 9C Modularity/Class patterns 9D Synchronization |
Garlan: S/W Architecture (ch 3) Wiki: Client/Server Model Creational: singleton, object-pool Behavioral: iterator (up to "Specific Problems"),        observer, strategy, visitor Structural: adapter, bridge, proxy Synchronization: events, locking, leases, transactions |
quiz 14 | lecture 14 |
| F 3/26 | CESAR CHAVEZ DAY | |||
| T 3/30 |
11A Elements of Maintainability 11B Program Readability 11C Coding Standards |
McC 30.2 (source-code tools) McC 31 (layout and style) McC 32.1-4 (commenting) McC 34.3 (understandability) McC 34.5 (conventions) Wiki: Doxygen (documentation generation) |
quiz 15 | lecture 15 |
| R 4/1 |
10A Good Test Cases 10B Black Box Testing 10C White Box Testing 10D Complexity and Coverage 10M Automated Testing Frameworks |
McC 19.5-6 (code complexity) McC 22 (unit testing) Kampe: Software Testability Kampe: Introduction to S/W Test Cases Cornett: Code Coverage Wiki: Test Driven Development Kampe: Test Harnesses CUnit - a unit testing framework (just skim) Python unittest (just skim) JUnit - a unit testing framework (just skim) |
quiz 16 | lecture 16 |
| F 4/2 | P3B: Component Design and Test Plan | (due Sun 04/04) | ||
| T 4/6 |
10E Robustness Terminology 10F Developing Robust Software 10G Failure Mode Analysis |
McC 8 (defensive programming) Kampe: HA taxonomy Kampe: S/W HA |
quiz 17 | lecture 17 |
| R 4/8 |
10H Finding Problems 10I Fixing Problems 10J Psychological issues in Debugging 10K Bug Reports and Tracking |
McC 23 (debugging) Kampe: Forensic Debugging Kampe: Root Cause Analysis Bug Life-Cycle Black: writing a bug report Kampe: Severity and Priority Github Issues |
quiz 18 | lecture 18 |
| F 4/9 | P3C: Component Design Reviews | (due Sun 04/11) | ||
| T 4/13 |
10L Integration Approaches & Practices |
McC 29 (integration) Kampe: Integration Strategy Fowler: Continuous Integration Kampe: The Train Model |
quiz 19 | lecture 19 |
| R 4/15 |
10N System Testing 10O Bug Finding 10P Performance Management 10Q Release Planning |
McC 25 (performance) Wiki: System Testing Kampe: Load & Stress Testing Kampe: Testing and Bug Discovery Kampe: Scenario Based Testing Kampe: Release Phases & Criteria Gnu: Gprof (just skim) |
quiz 20 | lecture 20 |
| F 4/16 | P3D: Final Component Design and Test Plan | (due Sun 04/18) | ||
| T 4/20 |
13E Agile Process Rebellion 13F SCRUM and sprints |
McC 34.9 (pragmatism) Wiki: Agile S/W Development Wiki: Scrum (Roles, Sprint, Meetings, Artifacts) Github: Project Boards |
quiz 21 | lecture 21 |
| R 4/22 |
12A Productivity 12B Collaboration Models |
McC 21.1-2 (pair programming) McC 28.1 (good code) McC 28.5 (work environments) McC 33 (personal character) XP: Project Activities XP: Rules XP: Values XP: Collective Ownership Williams: Pair Programming Rosenberg: Problems w/Pair Programming |
quiz 22 | lecture 22 |
| F 4/23 | P4AB: Implementation and testing | (suggested Sun 05/02) | ||
| T 4/27 |
12C Work Estimation 12D Project Risk |
McC 27 (program size) McC 28.3 (estimation) Kampe: S/W Estimation Principles Peters: S/W Project Estimation Wiegers: Risk Assessment & Management Scrum backlog grooming |
quiz 23 | lecture 23 |
| R 4/29 |
12E Project Scheduling 12F Project Status Tracking 12G Causes of slippage and failure |
McC 34.7 (danger signs) Wiegers: Successful Project Management Wiki: Mythical Man Month (digest) Kampe: Project Management Concepts Kampe: Project Milestones Kampe: Putnam Norden Rayleigh curves Kampe: Scrum points and velocity Wiki: Earned Value Analysis |
quiz 24 | lecture 24 |
| F 4/30 | P4C: Integration + Demo Prep | (suggested Sun 05/02) | ||
| T 5/4 | TBD | |||
| R 5/6 | TBD | |||
| F 5/7 | P4D: Demo + Post-Mortem | (due Fri 05/07) | ||
| W 5/12 | FINAL EXAM | Solutions |
There is a (Sakai) quiz that must be completed prior to each lecture session. These are timed (5 mintues) closed book quizzes intended to be non-difficult if you have done the reading. Most questions can be answered in a one-digit number of words. I am not looking for essay answers or even complete sentences ... just enough to show that you remember a few details from the reading.
You will need to get set up on GitHub and learn basic git use. I have created a Git Cheat Sheet that:
Or, if you would like a more comprehensive introduction, Udacity offers a free Version Control with Git course.
In addition to using github for version control, you will almost surely want to use it to track the many tasks associated with each project. I strongly encourage you to use:The primary text for this course (McConnell, Code Complete) actually has several excellent chapters on variables (chapters 10-13), programming (chapters 14-19) and refactoring (chapter 24). The only reasons I do not assign these chapters are:
This book by Gamma, Helm, Johnson and Vlissides (the Gang of Four) is considered by many to be one of the foundations of object oriented design. Design patterns will not solve all of your problems, but studying and using them will make you a better programmer. I did not make it required reading for this class because it would have taken us too deeply into programming, but if you have not already read it, I strongly encourge you to do so.