The midterm is open-book, open-notes; bring anything you like.
- Definitions
- Computation and communication
- Name spaces (packages)
- Collection objects: hash tables, linked lists, sets, iterators
- Hash function
- HCI (Human Computer Interface), GUI (Graphical User Interface)
- Visualization
- Inner classes: nested top-level, member, local, anonymous classes
- Concurrency, threads, exclusion, synchronization, deadlock
- Race conditions, atomicity, visibilty
- Deadlock detection, deadlock avoidance, resource ordering
- Name spaces
- Java keywords: package and import
- Design considerations
- Protection, access
- Collections
- Map interface,
HashMap implementation
- Set interface,
HashSet implementation
- List interface,
LinkedList implementation
- Iterators and their uses
- HCI/GUI
- Design considerations (like KWIC lab) to visualize an object
- Implementation via Swing: menus, panels, buttons, labels, textfields
- Drawing on panels via paintComponent
- Inner classes
- When should inner classes be used?
- Anonymous classes
- When should you use them?
- How are they implemented?
- Why must local variables be
final if they are
referenced by an inner class?
- Concurrency
- Issues of safety and liveness (deep issues here!)
- Threads
- How do you make a Thread in Java?
- What is the life of a Thread?
- How can you take a block of code and cause it to
execute in a new Thread?
- What is the difference between
run and start?
- How can you stop a Thread?
- How can you make a Thread go to sleep for a while?
- Race conditions
- What is a race condition and what causes it to occur?
- How do you avoid race conditions in code?
- What is the role of exclusion in avoiding races?
- Atomicity
- What operations are guaranteed atomic in Java?
- How do you obtain atomicity for other operations?
- What is the role of exclusion in obtaining atomicity?
- Synchronization
- What exactly does
synchronized do in Java
and how can you use it to control concurrency?
- Recursive locks
- Semantics of lock requests
- How can you obtain locks on multiple objects before
running a block of code?
- Deadlock
- What causes deadlock?
- How can deadlock be detected?
- How can you use resource ordering to avoid deadlock?
- How are the following ideas used to control concurrency?
- Immutability
- Dynamic locks
- Hiding (method confinement, thread confinement)
Last modified 08:18:20 CST 07 March 2003
by Ron K. Cytron