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.
A comprehensive list of lectures from earlier semesters can be found
A complete list of lectures for Spring 2007 semester can be found
Lectures for Fall 2008 semester can be found
Current lecture notes (Summer 2010) will be posted as needed on the wiki.
|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
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
3. Methods for simple classes; Understanding Method Evaluation
- 4. Functional methods: Computing with primitive types and String; Methods for classes, containment; Conditional computation. Methods for unions, Dispatch. 84-145
- 5. Designing methods: Design Recipe; Case Study: the World library. 145-198
4. Data Abstractions; Data Integrity: State Encapsulation, Preservation;
- 6. Classes and Methods: Calls; Type checking; Errors. Similarities in classes. 199-258
- 7. Designing class hierarchies with methods; How libraries work. State encapsulation, Self-preservation; Abstract classes, Privacy. 258-315
5. Extensional equality. Functions as Objects
- 8. Extensional equality. Methods as Objects. Traversals. 316-336, 572-577
- 9. Exam 1. Game code reviews.
6. Circular Data; Methods for Circular Data; Assignment and Stateful Classes
- 10. Circular Data; Methods for circular data; Equality; Tests. 337-369
- 11. Assignment and changes in the World; Designing stateful classes and methods. The need for mutation.
7. Abstracting over the Data Type; Assignment and Stateful Classes
- 12. Abstracting over the Data Type: Generics. ArrayList: Mutating the contents.
8. Traversals; Imperative loops.
- 13. Patterns in traversals. 567-602
- 14. Iterator interface, Iterable interface; for-each loops. 635-660
9. Efficiency Considerations: Priority queue; Arrays. Stress Tests.
- 15. Big Oh: searching, sorting. Arrays. Representing images.
- 16. Quicksort, mergesort. Priority queue: heap and heapsort.
10. Efficiency Considerations: Priority queue; Arrays. Stress Tests.
- 17. Exam 2. Music: representation, composition, design.
- 18. Data representation; transformation. toString, encoding, parsing. Designing with Frameworks and Interfaces. 498-534
11. Efficiency Considerations: HashMap. Defining equals and hashCode.
- 19. Java Collections Framework: Map, HashMap, TreeMap; Equality; Huffman encoding: compression. 446-465
- 20. General classes, frameworks, Exceptions; Designing to interfaces: getters, setters, predicates. 534-563
12. User Interactions
- 21. Designing synchronous user interactions: coding and decoding; event handling; GUIs.
- 22. Exam 3.
13. Client Server Program Design. Project Code Walks.
- 23. Designing client-server games: messages, sequence diagrams.
- 24. Client-server models: pass through, administrator, two-player games.
14. Project Presentations.
- 25. Reflection. Good Bye.
- 25. Project Presentations.