Please note that this is a preliminary schedule, which might change often during the course. Please
revisit shortly before each class. The lecture notes will be made available on this page. We will try
to post them here one day before each class.
| Day | Topics | Lecture Notes | Background Reading |
| April 23. |
Course outline and logistics
Why study programming languages?
Evaluating Languages
Languages and Computability
Introduction to LISP / Scheme
| download |
[Sebasta] Chap. 1
[Scott] Chap. 2
[Mitchell] Chap. 3
[SchemeTutorial]
|
| April 30. |
Describing Syntax and Semantics
Names, Scopes, Bindings
| download |
[Scott] Chap. 3
[Sebasta] Chap. 4
[MS01]
|
| May 7. | Expressions and Assignments
Structuring Control Flow
Continuations
| download |
[Scott] Chap. 6
[Sebasta] Chap. 6+7
[Mitchell] Chap. 8
[FD01]
|
| May 14. |
Data Types
Pointer Types
Garbage Collection
Copying and Comparing
Exception Handling
| download |
[Scott] Chap. 7 and 8.5
[Sebasta] Chap. 5
[GS00]
|
| May 21. |
Subroutines
Parameter Passing
Type System Basics
| download |
[Scott] Chap. 7.1/2, 8.2
[Car97]
[Mitchell] Chap. 6
|
| May 28. |
Type Inference in ML
Data Abstraction and Modularity
|
download |
[Mitchell] 6.3,9,10
[Scott] 7.2.5
|
| June 4. |
From Abstract Data Types and Modules to Objects
Subtyping
Covariance Problem
Multiple Dispatch
|
download
|
[Booch]Chap. 2,3
[Craig] Chap. 2
[Bruce]
[Shang]
[MultiJava]
|
| June 11. |
Inheritance
Multiple Inheritance
Linearization and Mixins
F-Bounded Parametric Polymorphism
| download |
[Craig] Chap. 4
[Taivalsaari]
[Snyder]
|
| June 18. | Aspect-Oriented Programming with AspectJ | download |
AspectJ Homepage
[AspectJ] |
| June 25. |
Efficient Implementation of Programming Languages
Introduction to the Jikes Virtual Machine (by C. Bockisch)
|
part1
part2
|
[Scott] Chap. 13 |
| July 2. | Introduction to Self and Smalltalk (by M. Haupt) | download |
| July 9. | Guest Lecture by Gregor Kiczales from the University of British Columbia | | |
| July 17. | 16.00-18.00: Final Examination in S101/10 | |