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