Fall 2006

Problem Sets

Office Hours:
Thursdays, 10:30am-noon

Small Hall Hours:
Sundays (7-8pm)
Mondays (6-7pm)
Wednesdays (6-7pm)
Thursdays (5-6pm)

Michael Lew


Lecture slides are available as either the original PowerPoint slides (download the PPT link) or PDF for printing (6 slides per page).

Class 1 (Notes only)

What is Engineering?
Engineering Software
Tools for managing complexity

Class 2: Introducing Java (Slides [PPT] [PDF])

Programming Languages
Expressiveness and "Truthiness"
Java Platform
Class 3: Java Semantics, Procedural Abstraction (Slides [PPT] [PDF])
Objects, Stack, and Heap
Specifying Procedures
Preconditions and Postconditions
Class 4: Specifying Procedures

Class 5: Valication (Slides [PPT, PDF])

Class 6: Exceptions (Slides [PPT, PDF])

Class 7: Data Abstraction (Slides [PPT, PDF])

Class 8: Data Abstraction (Notes) (Slides [PPT, PDF])

Class 9: Data Abstraction (Notes) (Slides [PPT, PDF])

Class 10: Reasoning about Data Abstractions (Notes) (Slides [PPT, PDF])

Class 11: Reasoning about Data Abstractions

Class 12: Subtyping and Inheritance (Notes)

Class 13: Subtyping and Inheritance

Class 14: Substitution Principle (Notes)

Class 15: Substitution Principle (Notes) (Slides [PPT, PDF])

Class 16: Object-Oriented Programming (Slides [PPT, PDF])

Class 17: Object-Oriented Programming (Slides [PPT, PDF])

Class 18: Array Subtyping, Design

Class 19: Design

Class 20: Design

Class 21: Concurring Concurrently (Notes) (Slides [PPT, PDF])

Class 22: Locking (Notes) (Slides [PPT, PDF])

Class 23: Starving Philosophers (Notes) (Slides [PPT, PDF])

Class 24: Monitors

Class 25: Concurrency Without Locks (Notes) (Slides [PPT, PDF])

Class 26: Concurrency on Mars (Slides [PPT, PDF])

Class 27: Java Security: Real or Decaf? (Notes) (Slides [PPT, PDF])

Class 28: Running Untrusted Code (Notes) (Slides [PPT, PDF])

Class 29: Forgiveness and Permissions (Notes) (Slides [PPT, PDF])

Class 30: Java Byte Codes (0xCAFEBABE) (Notes) (Slides [PPT, PDF])

Class 31: Byte Code Verification (Notes) (Slides [PPT, PDF])

Class 32: Byte Codes

Class 33: Hair Dryer Attacks (Notes) (Slides [PPT, PDF])

Class 34: Security

Class 35: GUI Design and Implementation (Notes) (Slides [PPT, PDF])

Class 36: Wimpy Interfaces (Notes) (Slides [PPT, PDF])

Class 37: Network Programming (just enough to make you dangerous) (Notes) (Slides [PPT, PDF])

Class 38: Software Disasters and Rocket Scientists (Notes) (Slides [PPT, PDF])

Class 39: Avoiding Software Disasters (Notes) (Slides [PPT, PDF])

Class 40: Program Verification

Class 41: Course Summary and Project Presentations (Slides [PPT, PDF])