CS 201J
|
Engineering Software |
cs201j-staff@cs.virginia.edu | |
Schedule - Problem Sets - Exams - Lectures - Links |
CS201J - Lectures and Notes
Lecture 1: Engineering Software? (Notes): Can we Engineer Software?Lecture 2: Java Semantics, Valiation (Notes)
Why is engineering software different from engineering bridges?
Tools for managing complexity
Java Semantics: Stack and HeapLecture 3: Abstraction by Specification (Notes)
Object equality and mutability
Validation: Testing and Analysis
Black-box, glass-box testing
Semantics RecapLecture 4: Data Abstraction (Notes)
Modularity and Specification
Characteristics of a Good Specification
Formal and Information Specifications
Requires, Modifies, EffectsAbstract Data TypesLecture 5: Code Red, Ariane 5 and Gambling (Notes)
Specifying ADTs
Creators, Producers, Observers and Mutators
Representations
Rep Invariants, Abstraction FunctionsNo checking, run-time checking, static checkingLecture 6: Implementing Data Abstractions (Notes only)
Array bounds errors
Specifying data abstractions: Graph example
PS2 CommentsLecture 7: Tale of Two Graphs (Notes)
Implementing Data Abstractions
Criteria for selecting a good representation
Practice with Rep Invariants and Abstraction Functions Rep exposureWhy Design MattersLecture 9: Exceptions
Documenting Designs: Modular Dependency Diagrams
Evaluating DesignsExceptionsLecture 10: Design (no slides or notes)
Try and Catch
Exception Hierarchy
Defensive Programming
Lecture 11: Subtyping and Inheritance (Notes)
SubtypingLecture 12: Subtyping Rules (Notes)
Inheritance
Object-Oriented ProgrammingSubstitution Principle
Eiffel's Type RulesLecture 13: Concurrency (Notes) Substitution PrincipleLecture 14: Dining Philosophers (Notes Only)
Overloading and Overriding
Concurrency
Race Conditions and DeadlocksBags and SetsLecture 15: Using Low-Level Languages (Notes)
Dining PhilosophersArray SubtypingLecture 16: Pointers and Memory Management (Notes)
Survey
C Programming Language
Data Abstraction in CNull DereferencesLecture 17: Garbage Collection (Notes)
Explicit Memory Management
Annotations for Memory ManagementStack and Heap ReviewLecture 18: Deep C Garbage Collection (Notes)
Garbage Collection Approaches:
Mark and Sweep
Stop and Copy
Reference CountingPointers in CLecture 19: 0xCAFEBABE (Notes)
Type Checking in C
Computer ArchitectureLecture 20: Java (In?)Security (Notes)
Java Virtual Machine
Java Byte CodesLow-level Code SafetyLecture 21: Snakes (Notes)
Enforcing Security PoliciesAbstractionLecture 22: C#: "Sharp", "Pound" or "Hash"? (Notes)
What is Computer Science?
Game Playing
NetworkingDb and C#Lecture 23: Snakes Tournament (Notes)
CLU
What is the "J" for?Change the World!
University of Virginia Department of Computer Science CS 201J: Engineering Software |
Sponsored by the National Science Foundation |
cs201j-staff@cs.virginia.edu |