| 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 second part of the course will be either in the form of additional reading, lab notes,
or lecture notes (either new ones, or from the past years).
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. A comprehensive list of lectures from the Spring 2007 can be found
here. Week | Topic of the Week: Lectures, Reading | Dates |
---|
| Designing Programs: Abstractions, Accumulators - 1. Design Recipe: Loops, Abstractions, Functions pp. 430-473 HtDP
- 2. Accumulator style programs: pp. 430-473 HtDP
|
| 9/5, 6 | | Classes of Data - 3. Data Definitions: Classes of data, Containment, Class diagrams, Unions: 1-37
- 4. Data Definitions: Containment in unions; Mutual reference: 37-82
- 5. Functional methods: Computing with primitive types and String; Methods for classes, containment; Conditional computation: 84-117
|
| 9/10, 12, 13 | | Methods for Class Hierarchies - 6. Methods for unions, Dispatch, Design Recipe. 117-145
- 7. Methods for mutually refeerential data. 145-177
- 8. Designing methods; World library. 177-198
|
| 9/17, 19, 20 | | Methods for Class Hierarchies; Data Abstractions - 9. Classes and Methods: Intermezzo 199-221
- 10. Abstracting classes; Creating a super class; Creating a union; Deriving classes;
Designing class hierarchies
- 11. Designing classes for special objects; How libraries work
|
| 9/24, 26, 27 | | Data Integrity; Understanding OO Compututation; Circular Data - 12. State encapsulation, Self-preservation: Data integrity: Overloading constructors
- 13. Intermezzo: Looking back, looking forward
- 14. Circular data
|
| 10/1, 3, 4 | | Review, Reflection, Assessment; Methods for Circular Data - 15. Review: EXAM 1
- 16. Methods for circular data
|
| 10/10, 11 | | Stateful Classes, Imperative Methods; Equality - 17. Assignment; Changes in the World; Designing Stateful Classes, Imperative Methods
- 18. Case studies of stateful classes
- 19. Equality
|
| 10/15, 17, 18 | | Abstracting over the Data Type and Functional Behavior; Exceptions - 20. Abstracting over the data type; Generics
- 21. Function objects; Encapsulating functional behavior
- 22. Abstracting over Traversal; Exceptions
|
| 10/22, 24, 25 | | Loops; Direct Access Data: ArrayList - 23. Understanding Accumulators: Designing loops
- 24. ArrayList: mutation, traversal, loops
- 25. Java Libraries; Stack, Queue, Linked List
|
| 11/29, 31, 11/1 | | Algorithms and Data Structures: Complexity of Computation - 26. Abstract Data Types: sorted container, map, stack, queue
- 27. Complexity of computation: Searching (linear, binary, map-based)
- 28. Complexity of computation: Sorting (quadratic, n-log-n); Exponential explosion
|
| 11/5, 7, 8 | | Techniques for Optimizing the Performance - 29. Divide and conquer; Mutating sorting algorithms
- 30. Key-value based data structures: IMapping, BST, HashMap, TreeMap; Linked lists
- 31. Graph traversal algorithms: DFS, BFS, Shortest path. Priority queue: heap
|
| 11/14, 15, 19 | | User Interactions: Model-View-Controller - 32. Designing synchronous user interactions: coding and decoding
- 33. Review: EXAM 2
- 34. Designing asynchronous user interactions: event handling
- 35. Designing GUIs
- 36. Design patterns; Reflection and looking ahead
|
| 11/26, 28, 29, 12/3, 5 |
|