University of Virginia, Department of Computer Science
CS655: Programming Languages, Spring 2001

Calendar | Challenges | Lectures | Manifests | Problem Sets | Projects | Resources | Syllabus


Thursday, 18 January: Lecture 1: Introduction - what is Computer Science, goals for CS655, programming languages, language design

Tuesday, 23 January: Lecture 2: Languages - what is computable? what is a Universal Programming Language? what are languages made from? description of Scheme syntax and semantics, producing infinitely many different functions

Thursday, 25 January: Lecture 3: Of Lists and Slippery Slopes - language featuritis, representing and manipulating lists, higher order procedures

Tuesday, 30 January: Lecture 4: Metacircles - higer order procedures, metacircular evaluators

Thursday, 1 Feburary: Lecture 5: Thunking about Thunks - supporting primitives, lazy evaluation

Tuesday, 6 Feburary: Lecture 6: Lambda Calculus

Thursday, 8 Feburary: Lecture 7: Lambda Calculus Revisited

Tuesday, 13 Feburary: Lecture 8: Making Primitives Out Of Nothing But Glue (and the meaning of life, the search for the truth, and a smattering of quantum physics)

Thursday, 15 Feburary: Lecture 9: Fixed Points

Tuesday, 20 Feburary: Lecture 10: Fixed Points, ad infinitum

Thursday, 22 Feburary: Lecture 11: Finding the Sage Bird; Introduction to Language Design

Tuesday, 27 February: Lecture 12: All About Algol

Thursday, 1 March: Lecture 13: Operational Semantics

Tuesday, 6 March: Lecture 14: Types of Types, Static Semantics

Tuesday, 20 March: Lecture 15: Data Abstraction - early attempts, what is necessary for data abstraction, implementing data abstraction, CLU, Parameterized Types, Reasoning about Data Abstractions (Abstraction Functions and Rep Invariants)

Thursday, 22 March: Lecture 16: Smalltalking about Objects - What is Object-Oriented Programming, Type Subsumption

Tuesday, 27 March: Lecture 17: Behavioral Subtyping - Implementation Inheritance, Issues with Multiple Inheritance, When is S <= T safe?

Thursday, 29 March: Lecture 18: Behavioral Subtyping and Eiffel - Behavioral subtyping example, co/contravariance rules for procedures, Eiffel's typing rules, C++ overloading and overriding

Tuesday, 3 April: No Lecture Slides

Thursday, 5 April: Lecture 19: Minding Ps and Qs - Axiomatic Semantics, Program Verification, Loop Invariants

Tuesday, 10 April: Lecture 20: Proof-Carrying Code

Thursday, 12 April: Lecture 21: Concurrency Primitives

Tuesday, 17 April: Lecture 22: Abstractions for Concurrency, Linda

CS 655 University of Virginia
Department of Computer Science
CS 655: Programming Languages
David Evans