Version: 5.2.1

Syllabus

Week 1: 9/5, 9/6
        Design recipes; Loops with accumulators
        Inexact numbers
  

Week 2: 9/10, 12, 13
        Data definitions: classes, containment
        Unions
        Methods for simple classes
  

Week 3: 9/17, 19, 20
        Designing methods for complex class hierarchies
        Designing methods for complex class hierarchies
        Wish lists, testing, dispatch
  

Week 4: 9/24, 26, 27
        Designing class hierarchies: subclasses, superclasses
        Abstract classes
        Case study: the javalib library (designing games)
  

Week 5: 10/1, 3, 4
        Designing libraries: understanding equality
        Exam 1: in class
        Designing libraries: information hiding, data intergity
  

Week 6: 10/10, 11
        Designing libraries: methods as objects 1
        Designing libraries: methods as objects 2
  

Week 7: 10/15, 17, 18
        Circular data
        Mutating simple objects
        Mutating data structure
  

Week 8: 10/22, 24, 25
        Exceptions, data intergity
        Designing libraries: parametrized types
        Direct access data structures
  

Week 9: 10/29, 31, 11/1
        Stack and Queue data structure
        Exam 2: in class
        Patterns in traversals; Traversing with effects
  

Week 10: 11/5, 7, 8
        Designing Libraries. Using Libraries
        Loops: recursive loops, imperative loops, generic loops
        Visitor traversals; Designing visitors
  

Week 11: 11/14, 15, 19
        Algorithm complexity: efficiency and tradeoffs (Binary search, quicksort)
        Java Collections Framework: Map, HashMap, TreeMap; Equality
        Java Collections Framework: Array
  

Week 12: 11/26, 27, 28, 29
        Sorting algorithms; Priority Queue, HeapSort.
        Exam 3: Tuesday 11/27 6:00 - 9:00 PM Room TBA
        Graph traversal algorithms
        User Interactions
  

Week 13: 12/3, 5
        Project presentations 1
        Project presentations 2