Classes
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 LanguagesClass 3: Java Semantics, Procedural Abstraction (Slides [PPT] [PDF])
Expressiveness and "Truthiness"
Java Platform
Classes
Visibility
Objects, Stack, and HeapClass 4: Specifying Procedures
Specifying Procedures
Preconditions and Postconditions
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])