Calendar for CSCI 3308/Fall 2007

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

Assignment 7 due

   
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