On this page:
Week 1
Week 2
Week 3
Week 4
Week 5
Week 6
Week 7
6.10

Syllabus

Week 1

5/04:

 

Lecture 1: Data Definitions in Java
Designing Data: Simple classes, classes with containment
Lecture 2: Data Definitions: Unions
Designing unions of classes; self-reference

5/05:

 

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

5/06:

 

Lecture 4: Methods for unions
Methods for unions of classes and classes with self-reference
Lecture 5: Methods for self-referential lists
Designing methods for complex class hierarchies

5/07:

 

Lecture 5: Methods for self-referential lists
Designing methods for complex class hierarchies
Lecture 6: Accumulator methods
More complicated methods for self-referential data

Lab:

 

Lab 1: Introduction to Eclipse and Simple Data Definitions
Data definitions in Java; Eclipse IDE; Handins homework server
Lab 2: Working with Self-Referential Data
Designing methods in Java: classes, containment, unions, self-reference

Week 2

5/11:

 

Lecture 6: Accumulator methods
More complicated methods for self-referential data
Lecture 7: Accumulator methods, continued
(continued) Methods with accumulators

5/12:

 

Lecture 7: Accumulator methods, continued
(continued) Methods with accumulators
Lecture 8: Practice Design
Recap: designing methods and wish lists for a larger problem

5/13:

 

Lecture 9: Abstract classes and inheritance
Abstract classes and inheritance
Lecture 10: Customizing constructors for correctness and convenience
Customizing constructors for correctness and convenience

5/14:

 

Lecture 10: Customizing constructors for correctness and convenience
Customizing constructors for correctness and convenience
Lecture 11: Defining sameness for complex data, part 1
Sameness of data values

Lab:

 

Lab 3: Methods for Complex Data
Designing methods for self-referential data
Lab 4: Working with Abstract Classes, Problem Solving
Practice with abstract classes and constructors

Week 3

5/19:

 

Lecture 13: Abstracting over behavior
Overview of world programming; Function objects
Lecture 14: Abstractions over more than one argument
More function objects

5/21:

 

Exam 1

Lab:

 

Lab 5: Generics and higher-order functions
Functional world games
No lab

Exam 1: online

Week 4

5/25:

 

No class: Memorial Day

5/26:

 

Lecture 16: Visitors
Visitors

5/27:

 

Lecture 17: Mutation
Creating cyclic data, mutation
Lecture 18: Mutation inside structures
Testing mutation methods, indirect cycles

5/28:

 

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

Lab:

 

Lab 6: Parametric data and visitors
Working with function objects
Lab 7: Working with Cyclic Data
Generics and Visitors

Week 5

6/01:

 

Lecture 19: Mutation, aliasing and testing
Aliasing and equality, revisited
Lecture 20: Mutable data structures
Removing items from lists, mutable lists

6/02:

 

Lecture 21: ArrayLists
Direct-access data structures: ArrayList; swapping two items, mapping over ArrayLists, for-each loops
Lecture 22: ArrayLists
ArrayLists and binary search; for-each loops; working with indices

6/03:

 

Lecture 22: ArrayLists
ArrayLists and binary search; for-each loops; working with indices
Lecture 23: For-each loops and Counted-for loops
For-each loops and counted-for loops

6/04:

 

Lecture 24: While loops
While-loops
Lecture 25: Iterator and Iterable
Iterators and Iterables

Lab:

 

Lab 8
Working with mutable and cyclic data
Lab 9
Loyd's 15 puzzle: working with ArrayLists, loops and imperative worlds

Week 6

6/08:

 

Lecture 26: Hashing and Equality
HashMap, equals

6/09:

 

Lecture 26: Hashing and Equality
HashMap, equals
Lecture 27: Introduction to Big-O Analysis
Big Oh: searching and sorting; insertion sort and selection sort

6/10:

 

Lecture 28: Quicksort and Mergesort
Big Oh: searching and sorting; quicksort and merge sort
Lecture 29: Priority Queues and Heapsort
Big Oh: searching and sorting; HeapSort -- Priority Queue

6/11:

 

Exam 2

Lab:

 

Exam review

Exam 2: online

Week 7

6/15:

 

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

6/16:

 

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

6/17:

 

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

6/18:

 

Lecture 34: Implementing Objects
Implementing Objects

Lab:

 

Lab 11
Heapsort, stress tests
Lab 12
TBD