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.
There is no specific text for the last part of the course. You will learn a lot from reading Java documentation and
from the lab materials. At this point you have to take responsibility for your own learning.
The week starts on Monday and ends on Thursday.
|Week||Topic of the Week||Lectures: Readings||Dates|
|Classes of Data: The Basics|
- Classes of data, Containment, Class diagrams: 1-24
- Unions of data; Designing unions; Containment in unions: 24-41
- Designing unions with containment: Self reference: 41-61
|1/9, 11 12|
|Complex Class Hierarchies; Methods|
- Classes that represent a Java program: 62-64
- Functional methods: Computing with primitive types and String; Designing methods for classes; Conditional computation: 69-91
|Methods for Class Hierarchies|
- Methods for containment; Design recipe for methods: 91-111
- Types and how methods compute; Designing methods for unions: 111-120
- Methods for self-referential data: 120-151
|23, 25, 26|
|Designing Methods; Abstracting Classes|
- Designing methods; Wish lists; Java classes that represent Java programs: 152-173
- Case study
- Abstracting classes: 175-191
|1/30, 2/1, 2|
|Abstracting with Classes|
- Creating a super class; Creating a union: 191-208
- Designing class hierarchies; Wish lists: 208-218
- Designing classes for special objects; State encapsulation, Self-preservation: 218-240, 240-256
|2/6, 8, 9|
|The Need for Memory|
- Cyclical data
- Abstract data type
- The need for memory: Sharing a structure
|2/13, 15, 16|
|Mutating a Structure|
- Mutating the content of a structure; equality of structures
- Mutating the structure of a structure; equality
- Abstracting over data definition: Object/genericity
- Abstracting over functional behavior
- Function objects
|2/27, 3/1, 2|
|Abstracting over Functional Behavior; Traversals|
- Abstracting traversals: Functional iterator
- Structural recursion vs. iteration
- Encapsulating functional behavior: Inner classes and the singleton
|3/13, 15, 16|
|The Big Picture|
- Java Collections and Algorithms: A case study in the design of class hierarchies
- Big Oh: Divide and conquer vs. sequential processing.
- Linearly organized data: List, stack, queue; Sequential vs. direct access.
|3/20, 22, 23|
- Graph Algorithms: Representing data, designing algorithms, processing cyclical data.
- Optimizing data representation: Map, TreeMap, HashMap
- Optimizing the result: Shortest path; Priority queue.
|3/27, 29, 30|
- Designing user interactions: Files, the console, GUIs, the network
- MVC: GUI components, layout; Events/actions
- Streams, ports: Data transfer and communication
|4/3, 5, 6|
|Algorithms, Data structures, Design patterns, Program evaluation; Epilogue|
- Data structure vs. the algorithm: Minimum spanning tree.
- Design patterns.
- Java classes that represent a Java program.
|4/10, 12, 13, 19|