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
Data definitions in Java; Eclipse IDE; Handins homework server
Lab 2
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
Designing methods for self-referential data
Lab 4
Practice with abstract classes and constructors
Week 3
5/18:
Lecture 11: Defining sameness for complex data, part 1
Sameness of data values
Lecture 12: Defining sameness for complex data, part 2
More of the same
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/20:
Lecture 14: Abstractions over more than one argument
More function objects
Lecture 15: Abstracting over types
Generics
5/21:
Exam 1
Lab:
Lab 5
Functional world games
No labExam 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
Working with function objects
Lab 7
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 28: Quicksort and Mergesort
Big Oh: searching and sorting; quicksort and merge sort
6/16:
Lecture 29: Priority Queues and Heapsort
Big Oh: searching and sorting; HeapSort -- Priority Queue
Lecture 30: Breadth-first search and Depth-first search on graphs
Graph algorithms: breadth-first search, depth-first search
6/17:
Lecture 31: Dijkstra’s Algorithm for single-source shortest paths
Graph algorithms: Dijkstra's algorithm, and comparison with BFS/DFS
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