Overview:
---------
- event-driven programming and programming with the AWT,
- synchronization
- server push, client pull, etc.
- I/O, streams, execeptions, sockets, server sockets, readers and writers, etc.
- building communities of interacting objects
- basic Web servers
- basic RMI
- volunteer computing
Event-driven programming and AWT
--------------------------------
- Components, Containers, class hierarchy of java.awt components (e.g., Frame,
Panel, Canvas, etc.)
- painting (how do you paint?)
- Events, event handlers, listeners, adapters
- applets -- just basic knowledge, like "how do they differ from applications?"
- review what you did for Scribble Lab
Synchronization
---------------
- How do synchronization problems happen?
- How do you solve them?
- Grouping objects together (e.g., using Point instead of separate x and y)
- using the synchronized keyword
- review how you addressed synchronization in Cat and Mouse
Push and Pull
-------------
- What does push and pull mean?
- What does client and server mean?
- Two different ways to move data: Server-Push, and Client-Pull
- connecting incompatible servers and clients (e.g.,
connecting a server-push server with a client-pull client)
- passive repositories and active constraints
I/O Streams, etc.
-----------------
- What's an InputStream, OutputStream?
- What's the difference between ObjectInputStream and InputStream?
- What is the Serializable interface and how and when do you use it?
- What are IOExceptions? (in general -- you don't need to know
all the specific types of IOExceptions)
When do they happen? How do you handle them?
- How do you create InputStreams and OutputStreams?
- How does a ReaderWriter work?
Sockets
-------
- What's a Socket and how do you use it?
- What's a ServerSocket? How do you use it?
Is a ServerSocket a Socket? What's the difference?
- What's the relation between Sockets and streams?
Building "Communities" of Objects
---------------------------------
- How to put objects together and get them to interact.
- connecting objects together (e.g., connecting mouse handlers to repositories
to canvas, etc., in Scribble)
- specifying and implementing interfaces (e.g., event listeners, RMI, etc.)
- polymorphism
- types and casting (e.g., when reading objects from ObjectInputStreams)
- static, abstract, and final methods (when do you use them?)
- high level appreciation of how programs are actually interacting communities
of objects
Web Server
----------
- What does it do?
- How does a client request a file?
(What are the steps?)
- How would you build one? (High level idea of what components
you need.)
- How are sockets used here?
- How does it deal with multiple connections?
RMI
---- What does it stand for? - What functionality does it give you? - How do you make a remote object? - How do call a remote method? - What is the interface java.rmi.Remote used for? - What is the class java.rmi.UnicastRemoteObject used for? - Advantages / disadvantages / problems
Volunteer Computing and Project Bayanihan -----------------------------------------
- What's the idea and the goal? - What are the motivations? - possible applications - what's currently going on in Project Bayanihan? - (see http://www.cag.lcs.mit.edu/bayanihan/posters/ for the slides)
OK. I hope this helps.
Don't worry too much about the last three "application" topics (Web Server, RMI, volunteer computing). There will be at most only one or two questions about each of these.
Also, if you did your labs and final projects, and understood what you were doing, you're in pretty good shape.
If you have any more questions, please email 6.096-staff.
Good luck!
- Luis