Classes

Notes for Classes 1-4

Class 1: Engineering Software? [PDF] [PPTX]

Can we really engineer software?
How is constructing software like and dislike constructing bridges?
Course overview

Class 2: Introducing Java [PDF] [PPTX]

Why so many programming languages?
Expressiveness vs. Truthiness
Java

Class 3: Java Semantics [PDF] [PPTX]

Stack and heap
Why it matters?
Objects vs. primitive types

Mutability

Class 4: Specifications [PDF] [PPTX]

Managing Complexity with specifications
What makes a good specification?
REQUIRES, MODIFIES, EFFECTS

Class 5: Validation (Slides: [PDF] [PPTX]; Notes)

Typed collections (ArrayList<String>, etc.)
Validation
Testing
Glass Box vs. Black Box Testing

Class 6: Programming Defensively (Slides: [PDF] [PPTX]

Path-Complete Testing
Statement Coverage Testing
Hopelessness of Analysis
Assertions
Exceptions



Class 7: Data Abstraction (Slides: [PDF] [PPTX]; Notes: [PDF])

Data Abstraction
Specifying Data Abstractions
Creators, Producers, Mutators, Observers
Problem Set 2

Class 8: Implementing Data Abstractions (Slides [PDF] [PPTX]; Notes: [PDF])

Choosing a Rep
Abstraction Functions

Rep Invariants



Class 9: Data Abstraction Practice (no slides, notes from Class 8 [PDF])

Class 10: Generics (Slides [PDF] [PPTX])

Class 11: Subtyping and Inheritance (Slides [PDF] [PPTX])

Class 12: Substitution Principle (Slides [PDF] [PPTX]) [Subtyping Nodes]

Class 13: Behavioral Subtyping (Slides [PDF] [PPTX])

Class 14: Array Subtyping (Slides: [PDF] [PPTX]; Substitution principle example: [PDF])

Class 15: Concurrency (Robbie Hott) (Slides: [PDF] [PPTX])

Class 16: Problem Set 4 (Slides: [PDF] [PPTX])

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

Class 18: Concurrency (wait and notify, Priority, Mars) (Slides: [PDF] [PPTX])

Class 19: Java Security (safe programming languages, Java byte codes, verification) (Slides: [PDF] [PPTX])

Class 20: Verifying Bytecodes [PPTX] [PDF]

Class 21: Hair-Dryer Attacks [PPTX] [PDF]

Class 22: Graphical User Interfaces [PPTX] [PDF]

Class 23: Network Programming [PPTX] [PDF]

Class 24: Garbage Collection [PPTX] [PDF]

Class 25: Software Disasters! [PPTX] [PDF]

Class 26: Software Interviewing Questions (no slides)

Class 27: Exam 2 [PPTX] [PDF]

Class 28: Course Summary [PPTX] [PDF]

Comments are closed.