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