Contact: | Phone: x6141 (8am-11pm M-F, Noon-Midnight Sat-Sun) |
Email: jwalker@cs.oberlin.edu |
This ExCo will study advanced topics related to object-oriented programming. Main topics are the connections between functional and object-oriented styles, a formal look at design patterns, the use of C++ to express object-oriented programming (no knowledge of C++ required but knowledge of Java will be assumed), refactoring as described by Martin Fowler in his book by that name, and the use of parametric polymorphism (templates in C++ and generics in GJ) to improve object-oriented designs. Other topics that may be covered include Extreme Programming and a survey of object-oriented languages. Prerequisites: CSCI 150 & 151, CSCI 275 or consent of instructor. CSCI 280 recommended.
Topics Covered | Readings | Assignments | ||||
---|---|---|---|---|---|---|
Functional and OO - Language History | ||||||
Functional and OO - Examples (Scheme & λ-calc booleans & ML) | Lab 1 assigned | |||||
Talk by James Cooper | ||||||
Design Patterns - Introducution Class Example: List - Introduction | Gamma chap. 1 & 2 Stroustrup chap. 2 | |||||
| Null Pattern Stroustrup chap. 9 p. 165-185 | |||||
| Gamma p. 81-85, 127-138, 163-173 Stroustrp chap. 10 | Lab 1 due | ||||
Code Cleanup - Memory Management & const | Lab 2 assigned | |||||
| Gamma p. 221-222, 305-113, 257-271 Stroustrup chap. 14 | |||||
C++ and Patterns - Visitor Strategy (sorting) & Command (map) & Decorator (lazy list) | Gamma p.331-334, 315-323, 233-242, 175-184, 345-349 chap. 6 | Lab 2 due | ||||
Refactoring | Fowler chap. 1-5, 13-15 | Quiz | ||||
Parametric Polymorphism Generic Java | GJ: Extending the Java... | Lab 3 assigned | ||||
Parametric Polymorphism Generic Visitors and Collections | GJ Specification | |||||
Parametric Polymorphism Templates in C++ | Stroustrup chap. 13 | Lab 3 due |
jwalker@cs.oberlin.edu |