The following table gives the topics we will cover in the class and the approximate number of lectures to be spent on each topic. The "Reading" column lists the reading material for the class. You should do the reading for a class or lab before you attend it.
The rows in gray are the labs.
| Date | Topic | Skills | Readings |
| 8/25 | Overview | ||
| 8/27 | The difficulty of writing software | 1 | No Silver Bullet, Fred Brooks |
| 8/27 | Lab 1: Using Eclipse with Java: Creating a Java project, writing a simple class, and running it | Thinking in Java, Chapter 2 (up to but not including "Comments and Documentation") | |
| 9/3 |
Software life cycle Assignment 1 due |
2 | Read wikipedia pages on the waterfall model, iterative development, and formal methods |
| 9/3 | Lab 2: Inheritance and subtyping | Thinking in Java, Chapter 6 (up to but not including "The Final Keyword") | |
| 9/8 | Extreme programming: what and why | 3 |
Fully read this web site (clicking the Red "XP" buttons will walk you through it) |
| 9/10 |
Extreme programming example (Game of Life) Assignment 2 due |
||
| 9/10 | Lab 3: Dynamic binding | Thinking in Java, Chapter 7 (up to but not including "Constructors and polymorphism") | |
| 9/15 | Testing: white box | 4a | Read this overview and this web page (ignore the "Other Measures" and later sections) |
| 9/17 |
Help session with TAs (Amer is out of town) Assignment 3 due |
||
| 9/17 | Lab 4: Unit tests and coverage | ||
| 9/22 | Testing:
black box |
4b | Read this wikipedia page on equivalence partitioning and this page on boundary value analysis. |
| 9/24 |
Introduction to patterns; terminology Assignment 4 due |
5 | Chapter 1 of Design Patterns (skip 1.3, 1.4. This may be one of the hardest readings this semester since it introduces many terms and references things that aren't covered till later in the text. Be sure to use the "skills" while reading so you do not get bogged down with detail. |
| 9/24 | Lab 5: Debugging | ||
| 9/29 | Composite pattern | 6 | Chapter 2 of Design Patterns up to and including 2.2; Composite pattern (page 163-173 inclusive). |
| 10/1 |
Strategy pattern Assignment 5 due |
7 | Section 2.3 of Design Patterns; Strategy pattern (pages 315-323 inclusive). |
| 10/1 |
Lab 6:
Debugging continued
|
||
| 10/6 | Decorator and abstract factory patterns | 8, 9 |
Section 2.4 of Design Patterns; Decorator pattern (pages 175-184
inclusive) Section 2.5 of Design Patterns; Abstract factory pattern (pages 87-95 inclusive) |
| 10/8 |
Bridge pattern Assignment 6 due |
10 | Section 2.6 of Design Patterns; Bridge Pattern (pages 151-161 inclusive) |
| 10/8 |
Lab 7: Decorator and Strategy pattern.
NOTE: you should bring your design patterns book with you to the lab.
|
||
| 10/13 | Command pattern | 11 | Section 2.7 of Design Patterns; Command Pattern (pages 233-242) |
| 10/15 |
Iterator pattern Assignment 7 due |
12 | Section 2.8 of Design Patterns; Iterator pattern (pages 257-271) |
| 10/15 | Help session with TA | ||
| 10/20 | Exam help session | ||
| 10/22 |
Midterm exam (in class). You must bring a blue book with you. No assignment due to midterm |
||
| 10/22 | Lab 8: Version control and cvs, Bridge pattern | ||
| 10/27 | Visitor pattern and observer pattern | 13, 14 | Visitor pattern (pages 331-343) and Observer pattern (page 293-303) |
| 10/29 |
Guest lecture: Matt Seidl from Google Assignment 8 due |
||
| 10/29 | Lab 9: Continuation of previous lab (cvs and design patterns) | Read up on how exception handling works in Java. You may read the chapter on exception handling in Thinking in Java or read any other book or web resource on the topic | |
| 11/3 | Extract and move method refactoring | 15 | Refactoring book: pages 1-20, 110-116, and 142-145 (all inclusive) |
| 11/5 |
Decompose conditional, Replace conditional with polymorphism, Pull-up
method, Push-down method (example in class: replacing hairy conditional
with strategy design pattern) |
17 | Refactoring book: pages 238-239, 255-259, 322-324, 328 |
| 11/5 |
Lab 10:
Rename method and move field
refactoring
|
16 | Refactoring book: pages 146-148, 273-274 (all inclusive) |
| 11/10 |
Replace temp with query, inline temporary, and split temporary variable (example in class: replacing numerous methods with visitor design pattern) |
18 | Refactoring book: page 119-123, 128-130 (all inclusive) |
| 11/12 |
When to refactor Assignment 10 due |
19 | Refactoring book, Chapter 3 |
| 11/12 | Lab 11: More refactorings | ||
| 11/17 | Text processing using regular expressions | 20 | Read this page |
| 11/19 |
Text processing using context-free grammars Assignment 11 due |
21 | |
| 11/19 |
Lab 12: Regular expressions and grep
|
||
| 12/1 | Text processing: writing a parser | 22 | Read this web page |
| 12/3 |
Parser continued Assignment 12 due |
||
| 12/3 |
Lab 13: Ant
|
||
| 12/8 |
Wrap up parsing:
Using design patterns for text processing Degrees of ignorance |
23 | Read this paper and come prepared to discuss it |
| 12/10 |
Degrees of ignorance (continued) and help session Assignment 13 due |
||
| 12/10 |
Lab 14: Help session
|
||
| 12/15 10:30 a.m. | Final exam. You must bring a blue book with you |