The table specifies the topics we will cover in each
week. You must read the relevant sections of the
text for each week. Read as much as possible
before you come to class and
lab. Daily quizzes may refer to the material covered
during the lectures, and in the
weekly reading.
Lecture notes will be posted (eventually) on the Blog.
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
|
9/8 |
2. Designing Class Hierarchies; Methods for simple classes
- 2. Data Definitions: Classes of data, Containment, Class diagrams, Unions: 1-36
- 3. Data Definitions: Containment in unions; Mutual reference: 37-84
- 4. Functional methods: Computing with
primitive types and String; Methods for
classes, containment; Conditional
computation: 84-116
|
9/9, 13, 15 |
3. Understanding Method Evaluation
- 5. Methods for unions, Dispatch, Design Recipe; 117-145
- 6 Designing methods; Case Study: the World library. 145-198
- 7. Classes and Methods: Calls; Type checking; Errors. 199-226
|
9/17, 21, 23 |
4. Data Abstractions; Data Integrity: State Encapsulation, Preservation;
- 8. Similarities in classes. 227-258
- 9. Designing class hierarchies with methods; How libraries work. 258-297
- 10. State encapsulation, Self-preservation. 297-315
|
9/23, 27, 29 |
5. Understanding Equality; Data Integrity; Functions as Objects
- 11. Extensional equality; Abstract classes, Privacy. 315-336
- 12. Methods as Objects. 572-577
- 13. Exam 1: In class
|
9/30, 10/4, 10/6 |
6. Circular Data; Methods for Circular Data
- 14. Circular Data. 337-356
- 15. Methods for circular data. 357-369
|
10/7, 11 13
|
7. Assignment and Stateful Classes; Similarities Between Classes
- 16. Assignment and changes in the World; Designing stateful
classes and methods.370-406
- 17. More Stateful Classes, Imperative Methods. 407-464
- 18. Similarities between plain classes;
Subtyping; Types and similarities
between class hierarchies;
Generics. 465-494
|
10/14, 18, 20 |
8. Designing to Interfaces; Exceptions
- 19. General classes, frameworks, Exceptions 497-524
- 20. Designing to interfaces: getters, setters, predicates. 525-563
- 21. Case study: Towers of Hanoi. 545-567
|
10/21, 25, 27 |
9. Traversals; Visitors; Function Objects
- 22. Patterns in traversals. 567-602
- 23. Abstracting over method calls. Visitor traversals;
Designing visitors. 603-635
- 24. Traversing with effects. 636-660
|
10/28, 11/1, 3 |
10. Direct Access Data Structures; Loops
- 25. Exam 2: In class
- 26. Direct Access Data Structures: ArrayList
- 27. Short Lab in 212 WVH
|
11/4, 8, 10, 11 |
11. Libraries
- 28. Loops: recursive loops, imperative loops, generic loops
- 29. Java Collections Framework: ArrayList, Stack, Queue
- 30. Java Collections Framework: Map, HashMap, TreeMap, Array
|
11/16, 18, 19 |
12. Complexity of Computation
- 31. Complexity of computation: Searching (linear, binary, map-based)
- 32. Complexity of computation: Sorting (quadratic, n-log-n); Exponential explosion
|
11/22, 29
|
13. User Interactions
- 33. Designing synchronous user interactions: coding and decoding.
- 34. Designing asynchronous user interactions: event handling; GUIs.
- 35. Project Presentations.
- 36. Project Presentations.
|
12/1, 2, 6, 8 |
|