Informatics 43 Spring 2009
Schedule


The regular chapter readings are from the van Vliet text. I may also assign online readings from time to time that are germane, which will become fair game for the Midterm and Final Exam. When readings are assigned, they will be listed here.

The schedule is a work in progress that will be built as we go along, depending on our progress (and, perhaps toward the end, your areas of interest). I will try to post the lecture schedule and readings at least a week ahead of where we are in lecture, so you'll know what to expect, at least in the short term.

Date Lecture Topics Readings Assignment Due
Week 1
Tu 3/31
  • Course introduction
  • What is software engineering?
  • Programming-in-the-large vs. programming-in-the-small
  • Characteristics of software engineering projects
  • Ch. 1
  • Ch. 2
Th 4/2
  • The Software Development Life Cycle (SDLC)
  • Process models
  • The waterfall model
  • Agile models
  • The distinction between maintenance and evolution
F 4/3 NO DISCUSSION TODAY
Week 2
Tu 4/7
  • Software quality
  • Why directly measuring software quality is problematic
  • Attributes that affect software quality
  • Requirements engineering
  • The four tasks that comprise requirements engineering
  • Eliciting requirements
  • Drawing the line between requirements and design
  • Ch. 6.1 - 6.2
  • Ch. 9.1
Th 4/9
  • Requirements specifications
  • Arranging and categorizing requirements
  • Functional vs. non-functional requirements
  • Verification and validation
  • The importance of negotiation during requirements engineering
  • Ch. 9.2 - 9.5
F 4/10 DISCUSSION: Requirements elicitation meeting for course project
Week 3
Tu 4/14
  • Requirements elicitation meeting for course project (with Hye Jung)
Th 4/16
  • Software design
  • Architectural design vs. detailed/module design
  • The goals of software design
  • Qualities of a good design
  • Modularity and information hiding
  • Cohesion and coupling
  • The importance of testability
  • Ch. 11.1 - 11.3
  • Ch. 12.1.1 - 12.1.3
F 4/17 DISCUSSION: Requirements elicitation meeting for course project Discussion Slides
Week 4
M 4/20 Phase 1 due 9:00pm
Tu 4/21
  • An architectural and module design example
  • The Unified Modeling Language (UML)
  • Decomposing a system into modules
  • UML Class Diagrams
  • Ch. 10.3
Th 4/23
  • An architectural and module design example (continued)
  • More about UML
  • Use cases
F 4/24 DISCUSSION: UML Class Diagrams, revisited Discussion Slides
Week 5
Tu 4/28
  • Architectural styles
  • Ch. 11.4 - 11.5
Th 4/30
  • Architectural styles (continued)
  • Other modeling techniques
  • Assessing the quality of our design
  • Measuring complexity quantitatively
  • Ch. 10.1
  • Ch. 12.1.4 - 12.1.5
F 5/1 DISCUSSION: Architectural styles Discussion Slides
Week 6
Tu 5/5
  • MIDTERM (regular lecture time and location)
Th 5/7
  • Different forms of testing (briefly)
  • What is unit testing?
  • Unit testing with JUnit
  • Test-driven development
F 5/8
  • DISCUSSION: Individual help on Phase 2
Phase 2 due 9:00pm
Week 7
Tu 5/12
  • Unit testing with JUnit (continued)
  • Using factories to simplify test maintenance as constructors change
  • Using mocks to test classes that depend on other classes or external resources
Th 5/14
  • Control-flow graphs, revisited
  • Test coverage metrics: node coverage, edge coverage, path coverage
  • Serialization in Java
  • Manually serializing objects
  • Using Java's built-in serialization mechanism instead
F 5/15
  • DISCUSSION: Background on testing and more about JUnit
Week 8
Tu 5/19
  • Quality assurance
  • Verification and validation, revisited
  • Testing, more broadly
  • Testing terminology (error, fault, failure)
  • Black box vs. white box testing
  • Equivalence partitioning and test matrices
  • Ch. 13
Th 5/21
  • Equivalence partitioning and test matrices (continued)
  • Test oracles
  • Including your users in the testing process
  • Staged releases (e.g., alpha, beta, release candidate)
F 5/22
  • DISCUSSION: Individual help on Phase 3
Week 9
M 5/25 University Holiday: Memorial Day
Tu 5/26
  • Individual help on Phase 3
W 5/27 Phase 3 due 9:00pm
Th 5/28
  • Configuration management and version control
  • Managing source code when working in groups
  • Version control systems
  • Branching and merging
Week 10
Tu 6/2
  • A demonstration of Subversion, a version control system
  • Subclipse, an Eclipse plugin for communicating with a Subversion repository
  • Using version control while making changes to our TPES implementation
  • Individual help on Phase 4
Th 6/4
  • Issue tracking systems
  • Why old, solved issues are maintained in these systems
  • Integrating issue tracking systems with version control systems
  • Individual help on Phase 4
F 6/5
  • DISCUSSION: Individual help on Phase 4
Phase 4 due 9:00pm
Finals Week
Th 6/11
  • FINAL EXAM: 4:00pm-6:00pm, ICS 174