Version: 5.3.0.10

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