Home
Teaching
 
CS U213 Sp '08
General
Texts
Syllabus
Assignments
Communication
Labs
Ofc Hrs
Announcements
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 (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.

Current lecture notes (Spring 2008) can be found here.

Topic of the Week: Lectures, ReadingDates
1. Designing Programs: Abstractions, Accumulators; Classes of Data
  • 1. Design Recipe: Loops, Abstractions, Functions, Accumulator style programs: pp. 430-473 HtDP
  • 2. Data Definitions: Classes of data, Containment, Class diagrams, Unions: 1-36
  • 3. Data Definitions: Containment in unions; Mutual reference: 37-84
1/7, 9, 10
2. Methods for Class Hierarchies
  • 4. Functional methods: Computing with primitive types and String; Methods for classes, containment; Conditional computation: 85-116
  • 5. Methods for unions, Dispatch, Design Recipe, World library 117-145
  • 6.Methods for mutually referential data; Designing methods 145-183
1/14, 16, 17
3. Understanding Method Evaluation
  • 7. Case Study: the World library. 183-197
  • 8. Classes and Methods: Intermezzo. 198-224
1/23, 24
4. Data Abstractions
  • 9. Similarities in classes. 225-255
  • 10. Designing class hierarchies with methods. 256-296
  • 11. Designing classes for special objects; How libraries work. 277-296
1/28, 30, 31
5. Data Integrity: State Encapsulation, Preservation; Understanding OO Compututation
  • 12. State encapsulation, Self-preservation. 297-313
  • 13. Extensional equality; Abstract classes, Privacy. 314-328, 329-334
  • 14. Circular Data. 335-356
2/4, 6, 7
6. Methods for Circular Data; Assignment and Stateful Classes
  • 15. Methods for circular data. 357-367
  • 16. Assignment and changes in the World. 368-381
  • 17. Designing stateful classes and methods. 382-408
2/11, 13, 14
7. Stateful Classes, Imperative Methods; Equality
  • 18. More Stateful Classes, Imperative Methods. 409-442
  • 19. Equality; Assignments. 459-461
2/20, 21
8. Abstracting over the Data Type; Exceptions
  • 20. Similarities between plain classes; Subtyping; Generics. 462-473
  • 21. Types and similarities between hierarchies; Generics. 474-494
  • 22. General classes, frameworks, Exceptions 495-521
2/25, 27, 28
9. Designing to Interfaces; Generic Classes
  • 23. Designing to interfaces: getters, setters, predicates. 522-545
  • 24. Case study: Towers of Hanoi. 545-567
  • 25. Generic classes.
3/10, 12, 13
10. Abstracting Traversals
  • 26. Abstracting traversals: recursive loops, imperative loops, generic loops
  • 27. Inner classes.
  • 28. Function objects.
3/17, 19, 20
11. Algorithms and Data Structures: Complexity of Computation
  • 29. Algorithms and Data Structures: sorted container, map, stack, queue; Java Collections Framework
  • 30. Complexity of computation: Searching (linear, binary, map-based)
  • 31. Complexity of computation: Sorting (quadratic, n-log-n); Exponential explosion
3/24, 26, 27
12. User Interactions: Model-View-Controller
  • 32. Designing synchronous user interactions: coding and decoding.
  • 33. Designing asynchronous user interactions: event handling; GUIs.
  • 34. Case study.
3/31, 4/2, 3
13. Algorithms and Data Organization
  • 35. Graph traversal algorithms: Data representation.
  • 36. Graph traversal algorithms: DFS, BFS, Shortest path; Priority queue: heap.
  • 37. Graph traversal algorithms: Minimum spanning tree: Union/Find.
4/7, 9, 10
14. Conclusion
  • 38. Design principles and practice.
  • 39. Design patterns; Reflection and looking ahead.
4/14, 16

last updated on Tue Feb 5 23:00:57 EST 2008generated with PLT Scheme