Home
Teaching
 
CS U213 Fl '08
General
Readings
Syllabus
Assignments
Communication
Blog
Labs
Office Hours
Advice

Syllabus

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 previous semesters can be found here.

Current lecture notes (Fall 2008) will be posted as needed here.

Topic of the Week: Lectures, ReadingDates
1. Designing Abstractions; Accumulators
  • 1. Design Recipe: Loops, Abstractions, Functions, Accumulator style programs: pp. 430-473 HtDP
9/10
2. Representing Information: Classes of Data
  • 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: 85-116
9/11, 15, 17
3. Methods for Class Hierarchies
  • 5. Methods for unions, Dispatch, Design Recipe, World library 117-145
  • 6.Methods for mutually referential data; Designing methods 145-184
  • 7. Case Study: the World library. 185-198
9/18, 22, 24
4. Understanding Method Evaluation; Data Abstraction
  • 8. Methods: Calls, Type Checking, Errors. 199-226
  • 9. Similarities in classes. 227-240
  • 10. Similarities in classes. 241-258
9/25, 29, 30
5. Data Integrity: State Encapsulation, Preservation; Understanding OO Compututation
  • 11. Designing class hierarchies with methods. 258-273
  • 12. Designing class hierarchies with methods. 274-298
  • 13. State encapsulation, Self-preservation. 297-315
10/1, 6, 8
6. Equality, Privacy; Circular Data
  • 14. Extensional equality; Abstract classes, Privacy. 315-336
  • 15. Circular Data. Methods for circular data. 337-369
10/9, 15
7. Assignment and Stateful Classes; Imperative Methods; Equality
  • 16. Assignment and changes in the World. 370-383
  • 17. Designing stateful classes and methods. 384-406
  • 18. More Stateful Classes, Imperative Methods; Equality; Testing State Change. 407-464
10/16, 20, 22
8. General Classes, Frameworks; Exceptions; Designing to Interfaces
  • 19. Similarities between plain classes; Subtyping; Types and similarities between hierarchies; Generics. 465-497
  • 20. General classes, frameworks, Exceptions. 497-524
  • 21. Designing to interfaces: getters, setters, predicates. 525-563
10/23, 27, 29
10. Abstracting Data Traversals
  • 22. Patterns in Traversals. 567-602
  • 23. Abstracting over Method Calls. 603-612
  • 24. Visitor Traversals; Designing Visitors. 613-635
10/30, 11/3, 5
11. Loops
  • 25. Traversing with Effects. 636-660
  • 26. Function objects; Inner classes
  • 27. Abstracting traversals: recursive loops, imperative loops, generic loops
11/6, 10, 12
12. Java Libraries: The Collections Framework; Complexity of Computation
  • 28. Java Libraries: ArrayList, Stack, Queue; Array
  • 29. Java Libraries: Map, Hash Map, Tree Map
  • 30. Complexity of computation: Searching (linear, binary, map-based); Sorting (quadratic, n-log-n)
11/13, 17, 19
13. User Interactions: Model-View-Controller
  • 31. Designing user interactions: coding and decoding; event handling; GUIs
  • 32. Lab replaces the lecture
11/20, 24
14. Review; Presentations
  • 33. Review
  • 34. Design Patterns
  • 35. Project Presentations - in the lab
12/1, 3, 4
15. Project Presentations
  • 36. Project Presentations - in the lab
  • 37. Project Presentations - in the lab
12/8, 10

last updated on Wed Oct 1 12:17:15 EDT 2008generated with PLT Scheme