The table specifies the topics we will cover in each week. Make sure to check the Course Readings for
things to read for a given week. Read as much as possible before you come to class and lab.
The week starts on Thursday and ends on Wednesday.
Week | Topic of the Week | Reading |
---|
| Class Hierarchies; Java Lore |
Class hierarchies: composition, inheritance, self-reference, interfaces
Assignment, mutation, equality, cloning
Arrays, multidimensional arrays
Java technicalities
|
| Programming with Effects; Introduction to Interactions |
State variables
Design recipes for programs with effects
Model-View-Controller
Channel abstraction for single object input
Iterator- controlled read loop; guard
Command pattern
|
| Interactions |
State diagrams
Iterator- controlled read loop; guard
GUIs, graphics, files
|
| Algorithms and Data Structures: Basics |
Abstract data type
Array, ArrayList, Vector
Binary search tree
Hash table, Dictionary, Map
Collection
Simple sorting and searching
|
| Algorithms and Data structures: Sorting and Searching |
Big Oh
Divide and conquer
Advanced sorting and searching
|
| Algorithms: Information Processing and Retrieval |
Hash tables, radix sort, maps and dictionaries
Stacks, queues; buffers, pipes, and filters
priority queues, heap, heapsort
|
| Backtracking |
Depth-first and breadth-first search, shortest path
Minimum spanning tree: Dijkstra and Kruskal algorithms
|
| Interactions |
State diagrams revisited
Processes, channels, guards
Design recipe for interactions
|
| Algorithms, Data structures, Processes |
Classes of data structures
Classes of algorithms
Classes of processes
Applications
|