Syllabus
Week 1: 1/7 
                Design recipes; Loops with accumulators; Inexact numbers 
  
Week 2: 1/9, 10, 14 
                Data definitions: classes, containment 
                Unions
                Methods for simple classes
  
Week 3: 1/16, 17 
                Designing methods for complex class hierarchies
                Wish lists, testing, dispatch
  
Week 4: 1/23, 24, 28 
                Designing class hierarchies: subclasses, superclasses 
                Abstract classes
                Case study: the javalib library (designing games)
  
Week 5: 1/30, 31, 2/4 
                Designing libraries: understanding equality 
                Designing libraries: information hiding, data intergity
                Designing libraries: methods as objects 1 
  
Week 6: 2/6, 7, 11 
                Designing libraries: methods as objects 2 
                Exam 1: in class
                Circular data 
  
Week 7: 2/13, 14 
                Mutating simple objects 
                Mutating data structure 
  
Week 8: 2/20, 21, 25 
                Exceptions, data intergity 
                Designing libraries: parametrized types 
                Direct access data structures 
  
Week 9: 2/27, 28, 3/11 
                Stack and Queue data structure 
                Patterns in traversals; Traversing with effects 
                Designing Libraries. Using Libraries 
  
Week 10: 3/13, 14, 18 
                Exam 2: in class 
                Loops: recursive loops, imperative loops, generic loops 
                Visitor traversals; Designing visitors 
  
Week 11: 3/20, 21, 25 
                Algorithm complexity: efficiency and tradeoffs (Binary search, quicksort) 
                Java Collections Framework: Map, HashMap, TreeMap; Equality 
                Java Collections Framework: Array 
  
Week 12: 3/27, 28, 4/1 
                Sorting algorithms; Priority Queue, HeapSort. 
                Graph traversal algorithms 
                User Interactions 
  
Week 13: 4/3, 4, 8 
                Sorting algorithms; Priority Queue, HeapSort. 
                Graph traversal algorithms 
                User Interactions 
                Exam 3: Tuesday 4/9 6:00 - 9:00 PM Room TBA 
  
Week 14: 4/10, 11 
                Text I/O, File I/O, Image manipulation 
                Design Patterns 
  
Week 15: 4/15, 17 
                Project presentations 1 
                Project presentations 2