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.10

Syllabus

Week 1

9/09:

 

Lecture 1: Data Definitions in Java
Designing Data: Simple classes, classes with containment

9/10:

 

Lecture 2: Data Definitions: Unions
Designing unions of classes; self-reference

Week 2

9/14:

 

Lecture 3: Methods for simple classes
Methods for simple classes and classes with containment

9/16:

 

Lecture 4: Methods for unions
Methods for unions of classes and classes with self-reference

9/17:

 

Lecture 5: Methods for self-referential lists
Designing methods for complex class hierarchies

Week 3

9/21:

 

Lecture 6: Accumulator methods
More complicated methods for self-referential data

9/23:

 

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

9/24:

 

Lecture 8: Practice Design
Recap: designing methods and wish lists for a larger problem

Week 4

9/28:

 

Lecture 9: Abstract classes and inheritance
Abstract classes and inheritance

9/30:

 

Lecture 10: Customizing constructors for correctness and convenience
Customizing constructors for correctness and convenience

Week 5

10/07:

 

Lecture 13: Abstracting over behavior
Overview of world programming; Function objects

10/08:

 

No class: Exam 1

Week 6

10/12:

 

No class: Columbus Day

Week 7

10/19:

 

Lecture 16: Visitors
Visitors

10/21:

 

Lecture 17: Mutation
Creating cyclic data, mutation

10/22:

 

Lecture 18: Mutation inside structures
Testing mutation methods, indirect cycles

Week 8

10/26:

 

Lecture 19: Mutation, aliasing and testing
Aliasing and equality, revisited

10/28:

 

Lecture 20: Mutable data structures
Removing items from lists, mutable lists

10/29:

 

Lecture 21: ArrayLists
Direct-access data structures: ArrayList; swapping two items, mapping over ArrayLists, for-each loops

Week 9

11/02:

 

Lecture 22: ArrayLists
ArrayLists and binary search; for-each loops; working with indices

11/04:

 

Lecture 23: For-each loops and Counted-for loops
For-each loops and counted-for loops

11/05:

 

Lecture 24: While loops
While-loops

Week 10

11/09:

 

Lecture 25: Iterator and Iterable
Iterators and Iterables

11/11:

 

No class: Veterans’ Day

11/12:

 

Lecture 26: Hashing and Equality
HashMap, equals

Week 11

11/16:

 

Lecture 27: Introduction to Big-O Analysis
Big Oh: searching and sorting; insertion sort and selection sort

11/18:

 

Lecture 28: Quicksort and Mergesort
Big Oh: searching and sorting; quicksort and merge sort

11/19:

 

No class: Exam 2

Week 12

11/23:

 

Lecture 29: Priority Queues and Heapsort
Big Oh: searching and sorting; HeapSort -- Priority Queue

11/25:

 

No class: Thanksgiving Break

11/26:

 

No class: Thanksgiving Break

Week 13

11/30:

 

Lecture 30: Breadth-first search and Depth-first search on graphs
Graph algorithms: breadth-first search, depth-first search

12/02:

 

Lecture 31: Dijkstra’s Algorithm for single-source shortest paths
Graph algorithms: Dijkstra's algorithm, and comparison with BFS/DFS

12/03:

 

Lecture 32: Minimum Spanning Trees
Minimum spanning trees: Prim's and Kruskal's algorithms

Week 14

12/07:

 

Lecture 34: Implementing Objects
Implementing Objects

12/09:

 

wrap-up