Syllabus
Week 1
1/12: Lecture 1: Data Definitions in JavaDesigning Data: Simple classes, classes with containment
1/14: Lecture 2: Data Definitions: UnionsDesigning unions of classes; self-reference
1/15: Lecture 3: Methods for simple classesMethods for simple classes and classes with containment
Lab 1Data definitions in Java; Eclipse IDE; WebCAT homework server
Lab 1hData definitions in Java; Eclipse IDE; WebCAT homework server; simple methods
Week 2
1/19: No Class: MLK Day
1/21: Lecture 4: Methods for unionsMethods for unions of classes and classes with self-reference
1/22: Lecture 5: Methods for self-referential listsDesigning methods for complex class hierarchies
Lab 2Designing methods in Java: classes, containment, unions, self-reference
Lab 2hDesigning methods in Java: classes, containment, unions, self-reference
Week 3
1/26: Lecture 6: Accumulator methodsMore complicated methods for self-referential data
1/28: No Class: Snow day
1/29: Lecture 7: Accumulator methods, continued(continued) Methods with accumulators
Lab cancelled due to snow
Week 4
2/2: No Class: Snow day
2/4: Lecture 8: Practice DesignRecap: designing methods and wish lists for a larger problem
2/5: Lecture 9: Abstract classes and inheritanceAbstract classes and inheritance
Lab 3Designing methods for self-referential data
Week 5
2/9: No Class: Snow day
2/11: Lecture 10: Customizing constructors for correctness and convenienceCustomizing constructors for correctness and convenience
2/12: Lecture 11: Defining sameness for complex data, part 1Sameness of data values
Lab cancelled due to snow
Week 6
2/16: No Class: Presidents’ Day
2/18: Lecture 12: Defining sameness for complex data, part 2More of the same
2/19: Lecture 13: Abstracting over behaviorOverview of world programming; Function objects
Lab 5Functional world games
Lab 5hEquality, functional world games
Week 7
2/23: Lecture 14: Abstractions over more than one argumentMore function objects
2/25: Lecture 15: Abstracting over typesGenerics
2/26: Lecture 16: VisitorsVisitors
Lab 6Working with function objects
Lab 6hWorking with function objects, introduction to generics
Week 8
3/2: Lecture 17: MutationCreating cyclic data, mutation
3/4: Lecture 18: Mutation inside structuresTesting mutation methods, indirect cycles
3/5: Lecture 19: Mutation, aliasing and testingAliasing and equality, revisited
Lab 7Generics and Visitors
Week 9
3/9: No Class: Spring break
3/11: No Class: Spring break
3/12: No Class: Spring break
Week 10
3/16: Lecture 20: Mutable data structuresRemoving items from lists, mutable lists
3/18: Lecture 21: ArrayListsDirect-access data structures: ArrayList; swapping two items, mapping over ArrayLists, for-each loops
3/19: Lecture 22: ArrayListsArrayLists and binary search; for-each loops; working with indices
Lab 8Working with mutable and cyclic data
Lab 9Loyd's 15 puzzle: working with ArrayLists, loops and imperative worlds
Week 11
3/23: Lecture 23: For-each loops and Counted-for loopsFor-each loops and counted-for loops
3/25: Lecture 24: While loopsWhile-loops
3/26: Lecture 25: Iterator and IterableIterators and Iterables
Lab 9Loyd's 15 puzzle: working with ArrayLists, loops and imperative worlds
Lab 10Practice implementing iterators
Lab 10hWider trees and advanced iterators
Week 12
3/30: Lecture 26: Hashing and EqualityHashMap, equals
4/1: Lecture 27: Introduction to Big-O AnalysisBig Oh: searching and sorting; insertion sort and selection sort
4/2: Lecture 28: Quicksort and MergesortBig Oh: searching and sorting; quicksort and merge sort
Lab 10Practice implementing iterators
Lab 10hWider trees and advanced iterators
Week 13
4/6: Lecture 29: Priority Queues and HeapsortBig Oh: searching and sorting; HeapSort -- Priority Queue
4/8: Lecture 30: Breadth-first search and Depth-first search on graphsGraph algorithms: breadth-first search, depth-first search
4/9: Lecture 31Graph algorithms: Dijkstra's algorithm, and comparison with BFS/DFS
Lab 11Heapsort, stress tests
Week 14
4/13: Lecture 32Minimum spanning trees: Prim's and Kruskal's algorithms
4/15: Lecture 33Design choices in object-oriented languages: JavaScript
4/16: Lecture 34: Implementing ObjectsImplementing Objects
Week 15
4/20: No Class: Patriots’ Day
4/22: Lecture 35Other languages and wrapup