| The table specifies the topics we will cover in each week. Make sure to read the relevant sections of the text
for a given week. Read as much as possible before you
come to class and lab. The text for the last part of the course will be either in the form of additional reading, lab notes,
or lecture notes.
You will also learn to read Java documentation and to use Java libraries.
At this point you have to take responsibility for your own learning. The week starts with the Wednesday lecture and ends with the Tuesday lab. A comprehensive list of lectures up to date can be found
here. Week | Topic of the Week: Lectures, Reading | Dates |
---|
| Classes of Data: The Basics - Design Recipe; Accumulator style programs: pp. 430-473 HtDP
|
| 1/8 | | Classes of Data: The Basics - Classes of data, Containment, Class diagrams: 1-23
- Unions of data; Designing unions; Containment in unions; Self reference: 23-41
|
| 1/10, 11 | | Complex Class Hierarchies; Methods - Designing unions with containment: Self reference: 41-61
- Functional methods: Computing with primitive types and String; Designing methods for classes; Conditional computation: 66-89
- Methods for containment; Design recipe for methods: 89-96
|
| 1/17, 18, 22 | | Methods for Class Hierarchies - Methods for unions of data: 96-120
- Methods for self-referential data: 120-151
- Designing methods; Wish lists: 151-176
|
| 1/24, 25, 29 | | Designing Methods; Abstractions with Classes - Designing methods for complex class hierarchies: 151-176
- Designing methods accumulator style
- Abstracting classes; Creating a super class; Creating a union: 180-207
|
| 1/31, 2/1, 5 | | Data Abstractions; Data Integrity - Using libraries; Deriving classes; Design recipe for abstraction: 207-228
- Designing classes for special objects; State encapsulation, Self-preservation: 241-259
- Data integrity: Overloading constructors: 241-259
|
| 2/7, 8, 12 | | Circular Data - Circular data: 261 - 281
- Methods for circular data: 281 - 293
|
| 2/14, 15 | | Understanding the Assignment; Stateful Classes - Assignment; Changes in the World: 293-328
- Case studies of stateful classes: 328-369
- Function objects; Encapsulation of functional behavior
|
| 2/21, 22, 26 | | Abstracting over the Data Type and Traversal - Abstracting over the data type
- Generic function objects; Generic loops
- Abstracting over traversals; Exceptions
|
| 2/28, 3/1, 12 | | Direct Access Data: ArrayList - ArrayList: mutating; traversal
- Implementing traversal for ArrayList; Mutating algorithms
- Removing recursion; Index-based loops
|
| 3/14, 15, 19 | | Algorithms and Data Structures: Complexity of Computation - Abstract Data Types: sorted container, map, stack, queue
- Complexity of computation: Searching (linear, binary, map-based)
- Complexity of computation: Sorting (quadratic, n-log-n); Exponential explosion
|
| 3/21, 22, 26 | | Techniques for Optimizing the Performance - Divide and conquer; Mutating sorting algorithms.
- Key-value based data structures: IMapping, BST, HashMap, TreeMap; Linked lists
- Priority queue: heap
|
| 3/28, 29 4/2 | | User Interactions: Model-View-Controller - Designing synchronous user interactions: coding and decoding
- Designing asynchronous user interactions: event handling
- Designing GUIs
|
| 4/4, 5, 9 | | Understanding Program Design - Understanding Java program evaluation
- Design patterns
- Reflection and looking ahead
|
| 4/11, 12, 18 |
|