| 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. Remember, that the daily quizzes may refer not only to the material
covered during the lectures, but also to the weekly reading. 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. A comprehensive list of lectures from earlier semesters can be found
here. A complete list of lectures for Spring 2007 semester can be found
here. Lectures for Fall 2008 semester can be found
here. Current lecture notes (Spring 2011) will be posted
here. Topic of the Week: Lectures, Reading | Dates |
---|
1. Designing Programs: Abstractions, Accumulators - 1. Design Recipe: Loops, Abstractions, Functions, Accumulator style programs: pp. 430-473 HtDP
|
| 1/10 | 2. Designing Class Hierarchies - 2. Data Definitions: Classes of data, Containment, Class diagrams, Unions: 1-36
- 3. Data Definitions: Containment in unions; Mutual reference: 37-84
|
| 1/11, 13 | 3. Methods for simple classes; Understanding Method Evaluation - 4. Functional methods: Computing with primitive types and String; Methods for classes, containment; Conditional computation: 84-116
- 5. Methods for unions, Dispatch, Design Recipe; 117-145
- 6 Designing methods; Case Study: the World library. 145-198
|
| 1/19, 20, 24 | 4. Data Abstractions; Data Integrity: State Encapsulation, Preservation; - 7. Classes and Methods: Calls; Type checking; Errors. 199-226
- 8. Similarities in classes; World library 227-258
- 9. Designing class hierarchies with methods; How libraries work. State encapsulation, Self-preservation. 258-315
|
| 1/26, 27, 1/31 | 5. Understanding Equality; Data Integrity; Functions as Objects - 10. Extensional equality; Abstract classes, Privacy. 315-336
- 11. Methods as Objects. 572-577
- 12. Circular Data. 337-356
|
| 2/2, 3, 7 | 6. Circular Data; Methods for Circular Data; Assignment and Stateful Classes - 13. Methods for circular data. 357-369
- 14. Exam 1: In class
- 15. Assignment and changes in the World; Designing stateful classes and methods; Exceptions.
370-406
|
| 2/9, 10, 14 | 7. Assignment and Stateful Classes; Similarities Between Classes - 16. More Stateful Classes, Imperative Methods. 407-464
- 17. Similarities between plain classes; Subtyping; Types and similarities between class
hierarchies; Generics. 465-494
|
| 2/16, 17 | 8. Designing to Interfaces; Exceptions - 18. General classes, frameworks, Exceptions 497-524
- 19. Designing to interfaces: getters, setters, predicates. Case study: Towers of Hanoi. 525-567
- 20. Direct access data structures; Stack and Queue data structure. Patterns in traversals. 567-602
|
| 2/23, 24, 3/7 | 9. Traversals; Visitors; Direct Access Data Structures; Loops - 21. Abstracting over method calls; Visitor traversals; Designing visitors. 603-635
- 22. Exam 2: in class
- 23. Traversing with effects. 636-660;Loops: recursive loops, imperative loops, generic loops
|
| 3/9, 10, 14 | 10. Designing Libraries. Using Libraries - 24. Loops: recursive loops, imperative loops, generic loops
- 25. Visitor traversals; Designing visitors.
- 26. Java Collections Framework: Map, HashMap, TreeMap; Equality
|
| 3/16, 17, 21 | 11. Libraries; Algorithms and Data Structures - 27. Java Collections Framework: Array.
- 28. Sorting algorithms; Priority Queue and HeapSort.
- 29. Graph traversal algorithms.
|
| 3/23, 24, 28 | 12. Complexity of Computation - 30. Complexity of computation: Searching (linear, binary, map-based)
- 31. Complexity of computation: Sorting (quadratic, n-log-n); Exponential explosion
- 32. Visitors revisited.
|
| 3/30, 31, 4/4 | 13. User Interactions - 33. Designing synchronous user interactions: coding and decoding.
- 34. Designing asynchronous user interactions: event handling; GUIs.
- 35. Review and Summary. (Exam 3: in the evening 6:00 - 9:00)
|
| 4/6, 7, 11 | 14. Project Code Walks. - 36. Software Design Process.
- 37. Project Code Walks.
- 38. Project Code Walks.
|
| 4/13, 14, 20 |
|