CS655: Programming Languages, Spring 2001
Calendar |
Challenges |
Lectures |
Manifests |
Problem Sets |
Projects |
Resources |
Syllabus
|
Lectures
Thursday, 18 January: Lecture 1: Introduction - what is Computer Science, goals for CS655, programming languages, language designTuesday, 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
University of Virginia Department of Computer Science CS 655: Programming Languages |
David Evans evans@virginia.edu |