On this page:
Week 1
Week 2
Week 3
Week 4
Week 5
Week 6
Week 7
Week 8
Week 9
Week 10
Week 11
Week 12
Week 13
Week 14
6.1.1

Syllabus

Week 1

9/8: No class 

9/9: Lecture 1: Data Definitions in JavaDesigning Data: Simple classes, classes with containment

9/10: Lecture 2: Data Definitions: UnionsDesigning unions of classes; self-reference

Lab 1Data definitions in Java; Eclipse IDE; WebCAT homework server

Week 2

9/14: Lecture 3: Methods for simple classesMethods for simple classes and classes with containment

9/16: Lecture 4: Methods for unionsMethods for unions of classes and classes with self-reference

9/17: Lecture 5: Methods for self-referential listsDesigning methods for complex class hierarchies

Lab 2Designing methods in Java: classes, containment, unions, self-reference

Week 3

9/21: Lecture 6: Accumulator methodsMore complicated methods for self-referential data

9/23: Lecture 7: Accumulator methods, continued(continued) Methods with accumulators

9/24: Lecture 8: Practice DesignRecap: designing methods and wish lists for a larger problem

Lab 3Designing methods for self-referential data

Week 4

9/28: Lecture 9: Abstract classes and inheritanceAbstract classes and inheritance

9/30: Lecture 10: Customizing constructors for correctness and convenienceCustomizing constructors for correctness and convenience

Lab 4Practice with abstract classes and constructors

Week 5

10/7: Lecture 13: Abstracting over behaviorOverview of world programming; Function objects

Lab 5Functional world games

Week 6

10/12: No Class: Columbus Day 

10/15: Lecture 16: VisitorsVisitors

Lab 6Working with function objects

Week 7

10/19: Lecture 17: MutationCreating cyclic data, mutation

10/21: Lecture 18: Mutation inside structuresTesting mutation methods, indirect cycles

10/22: Lecture 19: Mutation, aliasing and testingAliasing and equality, revisited

Lab 7Generics and Visitors

Week 8

10/26: Lecture 20: Mutable data structuresRemoving items from lists, mutable lists

10/28: Lecture 21: ArrayListsDirect-access data structures: ArrayList; swapping two items, mapping over ArrayLists, for-each loops

10/29: Lecture 22: ArrayListsArrayLists and binary search; for-each loops; working with indices

Lab 8Working with mutable and cyclic data

Week 9

11/2: Lecture 23: For-each loops and Counted-for loopsFor-each loops and counted-for loops

11/4: Lecture 24: While loopsWhile-loops

11/5: Lecture 25: Iterator and IterableIterators and Iterables

Lab 9Loyd's 15 puzzle: working with ArrayLists, loops and imperative worlds

Week 10

11/11: No Class: Veterans’ Day 

11/12: Lecture 27: Introduction to Big-O AnalysisBig Oh: searching and sorting; insertion sort and selection sort

Lab 10Practice implementing iterators

Week 11

11/16: Lecture 28: Quicksort and MergesortBig Oh: searching and sorting; quicksort and merge sort

11/18: Lecture 29: Priority Queues and HeapsortBig Oh: searching and sorting; HeapSort -- Priority Queue

11/19: Lecture 30: Breadth-first search and Depth-first search on graphsGraph algorithms: breadth-first search, depth-first search

Lab 11Heapsort, stress tests

Week 12

11/23: Lecture 31Graph algorithms: Dijkstra's algorithm, and comparison with BFS/DFS

11/25: No Class: Thanksgiving recess 

11/26: No Class: Thanksgiving recess 

Week 13

11/30: Lecture 32Minimum spanning trees: Prim's and Kruskal's algorithms

12/2: Lecture 33Implementing Objects

12/3: Lecture 34: Implementing ObjectsImplementing Objects

Week 14

12/7: Lecture 35Other languages

12/9: Lecture 36Wrapup