Computer Science 47/147: Advanced Object-Oriented Programming
Instructor: Joe Vanderwaart
Syllabus.
Final Exam
The exam is now available. Download it any time you like and take
it during the 24-hour period of your choice, finishing before 10
p.m. on Friday evening. Further instructions are on the first page.
You may read the first page ahead of time, but once you read beyond
the first page you commit to finishing within 24 hours. The LaTeX
source for the exam is provided so you can copy and paste anything you
wish into your solution writeup. Good luck!
Updated Tuesday 5:08 p.m., correcting typos in method
signatures in part 3.
[tex][pdf]
Announcements
- Exam Dates (11/30/06) Regarding the confusion in class today, I did, in fact, misread my calendar. The last day of
finals is Friday, so that's when the exam will be due.
- Sample Solution for Homework 3: [pdf]
Lecture Notes
| Tuesday | Thursday |
| 1. What is this about?
[ppt][pdf] |
2. Java Bootstrap
[ppt][pdf]
Demo Code [tgz]
|
3. Classes, Interfaces and Observers
[ppt][pdf]
Demo Code [py]
|
4. Types and Interfaces
[ppt][pdf]
|
| 5. Abstraction I
[ppt][pdf]
|
6. Abstraction II
[ppt][pdf]
|
| 7. Generics
[ppt][pdf]
|
8. Subtyping
[ppt][pdf]
|
| 9. Subtyping (II)
[ppt][pdf]
|
10. Exception Handling
[ppt][pdf]
|
| 11. Exceptions (II); Sockets
[ppt][pdf]
|
12. Threads (I)
[ppt][pdf]
Demo code: [tgz]
|
| 13. Threads (II)
[ppt][pdf]
|
14. Threads (III); Serialization |
| 15. [pdf] |
16. [pdf] |
| 17. Factories; Inheritance(2)
[ppt][pdf]
|
18. [pdf] |
| 19. [pdf] |
|
Assignments
-
For Thursday, 9/28/2006: Read the Foreword and the Introduction to the
Bloch book, as well as Items 30 (Know and use the libraries) and 38
(Adhere to generally accepted naming conventions). Re-learn, if
you have forgotten, how to compile and run Java programs on the
computer of your choice.
-
For Tuesday, 10/3/2006: Bloch 19: Replace structures with classes; 20: Replace unions with class hierarchies; 22: Replace function pointers with classes and interfaces. (Skip item 21 for now.)
-
For Thursday, 10/5/2006: Bloch Items 2, 3, 16, 17, 34.
-
Homework 1 Due Thursday, 10/5/2006 before midnight. Implementation of a simple maze viewer.
Specification: [pdf]
Starter Code: [tgz]
Sample Mazes: [maze] [maze]
- For Thursday, 10/12/2006: Bloch Items 1, 11, 12, 13, 18, 23, 25, 28.
- For Tuesday, 10/17/2006 (reading): Bloch Items 11 and 13 (previously assigned but not yet discussed); also 24, 27 and 37. Also read:
- Homework 2 Due Tuesday, 10/17/2006 before midnight. Implementation of a logic simulator and a maze solver.
Specifications: [pdf]
Starter Code for Simulator: [tgz]
Starter Code for Maze Solver: [tgz]
(also use your HW1 implementation.)
Sample Maze Repository: [directory]
Note: The specification has changed since it was first posted on Tuesday, correcting a typo in the signature of the Oscillator constructor (it should take a Scheduler argument as the Gates do).
-
For Tuesday, 10/24/2006: Bloch Items 7 and 8 (assigned in lecture on 10/17 but not listed here -- my fault).
The following supplemental readings are optional:
- Kim Bruce et al. On Binary Methods. Theory and Practice of Object Systems 1(3), 1995. [available here]
- Barbara Liskov and Jeanette Wing. A Behavioral Notion of Subtyping. ACM Transactions on Programming Languages and Systems 16(6), 1994.
[available here]
These papers are challenging -- if you do look at them, concentrate on understanding the problems described in each one, rather than the solutions.
-
Homework 3 Due Thursday, 10/26/2006 before midnight. ADTs and
subtyping.
Specification: [pdf]
- For Thursday, 11/2/2006: Bloch Items 48,52. Also, Chapter
8, Items 39-47 (assigned in class earlier but not listed online). In
addition, read about HW4 (below) and come to class prepared to ask any
questions you have about the protocol or design requirements.
-
Homework 4 Due Tuesday, 11/7/2006 before midnight. Exceptions
and Sockets.
Assignment writeup: [pdf]
Maze Challenge Protocol v1.0
specification: [pdf]
Public MCP
Server: 131.215.45.102, port 47147. I will make reasonable efforts to
keep the server running all week with minimal downtime. As of now, it
is completely open, but I may find it necessary to block non-Caltech
IP addresses; if such a policy would affect you negatively, let me
know and I will try to keep your needs in mind.
-
For Tuesday, 11/7/2006: Read Bloch Chapter 9 (Threads). Also read
-
For Thursday, 11/9/2006: Read Bloch Chapter 10 (Serialization).
- Homework 5 Due Wednesday, 11/22/2006 before midnight. Threads, proxies, factories and observers.
Assignment writeup: [pdf].
Starter code: [tgz] (Updated 6:48 pm on 11/15 fixing bug in AbstractExplorer.)
- Homework 6 Due Friday, 12/1/2006 before midnight.
Inheritance.
Assignment writeup: [pdf]
Starter code: [tgz]
Caution: The above are listed by in order by due date, so the reading assignment for the next class may not be the last item on the list!