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.
This schedule is tentative: as the course progresses, I'll revise/refine it as needed. The entries above the "blank" table row are reasonably polished; the entries below are more tentative and likely to change
| Date | Topic | Skills | Readings |
| 8/27 | Overview | ||
| 8/29 | 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") | |
| 8/31 | The difficulty of writing software | 1 | No Silver Bullet, Fred Brooks |
| 9/5 |
Lab 2:
Inheritance and subtyping Assignment 1 due |
Thinking in Java, Chapter 6 (up to but not including "The Final Keyword") | |
| 9/7 | Software life cycle | 2 | Read wikipedia pages on the waterfall model, iterative development, and formal methods |
| 9/10 | Extreme programming: what and why | 3 |
Fully read this web site (clicking the Red "XP" buttons will walk you through it) |
| 9/12 |
Lab 3: Dynamic binding Assignment 2 due |
Thinking in Java, Chapter 7 (up to but not including "Constructors and polymorphism") | |
| 9/14 | Extreme programming example (Game of Life) | ||
| 9/17 | Testing: white box | 4a | Read this overview and this web page (ignore the "Other Measures" section) |
| 9/19 |
Lab 4:
Unit tests and coverage Assignment 3 du |
||
| 9/21 | Testing: black box | 4b | Read this wikipedia page on equivalence partitioning and this page on boundary value analysis. |
| 9/24 |
Guest speaker: Nancy Rassbach/Sun Microsystems |
||
| 9/26 |
Lab 5: Debugging (Solution) Assignment 4 due |
||
| 9/28 | Introduction to patterns; terminology | 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. |
| 10/1 |
Composite pattern Code developed in class |
6 | Chapter 2 of Design Patterns up to and including 2.2; Composite pattern (page 163-173 inclusive). |
| 10/3 |
Lab 6:
Debugging continued Assignment 5 due |
||
| 10/5 |
Strategy pattern Code developed in class |
7 | Section 2.3 of Design Patterns; Strategy pattern (pages 315-323 inclusive). |
| 10/8 |
Decorator and abstract factory patterns Code developed in class |
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/10 |
Lab 7: Decorator and Strategy pattern.
NOTE: you should bring your design patterns book with you to the lab. Assignment 6 due |
||
| 10/12 | Bridge pattern | 10 | Section 2.6 of Design Patterns; Bridge Pattern (pages 151-161 inclusive) |
| 10/15 |
Command pattern Code developed in class |
11 | Section 2.7 of Design Patterns; Command Pattern (pages 233-242) |
| 10/17 | Lab 8: Version control and cvs, Bridge pattern | ||
| 10/19 | Guest lecture: Matt Seidl from Google | ||
| 10/22 | Iterator pattern and exam help session | 12 | Section 2.8 of Design Patterns; Iterator pattern (pages 257-271); |
| 10/24 |
Help session with TA No assignment due to midterm |
||
| 10/26 | Midterm exam (in class). You must bring a blue book with you. | ||
| 10/29 | Visitor patterns | 13 | Visitor pattern (pages 331-344) |
| 10/31 |
Lab 9: Continuation of previous lab (cvs and design patterns) Assignment 8 due |
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/2 | Observer pattern | 14 | Observer pattern (page 293-299) |
| 11/5 | Extract and move method refactoring | 15 | Refactoring book: pages 1-20, 110-116, and 142-145 (all inclusive) |
| 11/7 |
Lab 10:
Rename method and move field
refactoring Assignment 9 due |
16 | Refactoring book: pages 146-148, 273-274 (all inclusive) |
| 11/9 |
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/12 |
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/14 |
Lab 11: More refactorings Assignment 10 due |
||
| 11/16 |
When to refactor |
19 | Refactoring book, Chapter 3 |
| 11/26 | Text processing using regular expressions | 20 | Read this page |
| 11/28 |
Lab 12: Regular expressions and grep Assignment 11 due |
||
| 11/30 | Text processing using context-free grammars | 21 | |
| 12/3 | Text processing: writing a parser (code from class) | 22 | Read this web page |
| 12/5 |
Lab 13: Ant Assignment 12 due (regular grammars) |
||
| 12/7 | Using design patterns for text processing | ||
| 12/10 | Degrees of ignorance | 23 | Read this paper and come prepared to discuss it |
| 12/12 |
Lab 14: Help session Assignment 13 (context free languages) due |
||
| 12/14 | Help session | ||
| 12/18 7:30-10:00 a.m. | Final exam. You must bring a blue book with you |