| 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 Monday lecture and ends with the Friday lab. Week | Topic of the Week: Lectures, Reading | Dates |
---|
| 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
|
| 9/6, 7 | | 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
|
| 9/11, 13, 14 | | Methods for Class Hierarchies - Methods for unions of data: 96-120
- Methods for self-referential data: 120-151
- Designing methods; Wish lists: 151-176
|
| 9/18, 20, 21 | | Abstractions with Classes - Designing methods for complex class hierarchies: 151-176
- Abstracting classes; Creating a super class; Creating a union: 180-207
- Case study: Graphics and the World: 228-241
|
| 9/25, 27, 28 | | Data Abstractions; Circular Data - Deriving classes; Design recipe for abstraction: 207-228
- Designing classes for special objects; State encapsulation, Self-preservation: 241-259
- Circular data: 261 - 281
|
| 10/2, 4, 5 | | Understanding the Assignment - Methods for circular data: 281 - 293
- Assignment; Changes in the World: 293-328
|
| 10/11, 12 | | Stateful Classes; Abstracting over the Data Type - Case studies of stateful classes: 328 - 369
- Equality of complex data: 369 - 385
- Abstracting over the data type: new text
|
| 10/16, 18, 19 | | Abstracting over the Data Type; Abstracting over the Behavior - Generic ADTs: new text
- Methods for generic lists --- functional interfaces: new text
- Function objects: new text
|
| 10/23, 25, 26 | | Abstracting over Traversals - Abstracting traversals: Functional iterator
- Implementing iterators; ArrayList
- Structural recursion vs. iteration; Java loops
- Extra: Encapsulating functional behavior: Inner classes and the singleton
|
| 10/30, 11/1, 2 | | Direct Access Data Structures; Algorithm Complexity - Direct access data --- working with indices
- Understanding complexity: find, add, and remove operations; List, stack, queue
- Measuring complexity: insertion sort, selection sort
|
| 11/6, 8, 9 | | Techniques for Optimizing the Performance - Divide and conquer: algorithms and complexity
- Key-value based data structures: IMapping, BST, HashMap, TreeMap
- Key-value based data structures: methods, complexity
|
| 11/13, 15, 16 | | Design Case Study: Graph Traversals - Graph traversals case study: Data representation
- Graph algorithms: DFS and BFS traversals
- Graph algorithms: Shortest path, MST -- priority queue
|
| 11/20, 27, 29 | | User Interactions - Accessing, displaying, and storing data: Files, the console, GUIs, the web
- Interactivity (MVC): GUI components, layout, Events/actions
- Data transfer and communication: Streams, ports
|
| 11/30, 12/4, 6 |
|