Fundamentals of Programming Languages
CSCI 5535
| Bi-weekly homework assignments | 50% |
| Class participation | 10% |
| Midterm exams | 20% |
| Final exam | 20% |
All assignments must be handed in on time except in the case of emergency. There will be a penalty of 20% per day for late assignments. Exams cannot be rescheduled except in the case of emergency.
The class participation component applies only to in-class students. It involves the following:
As mentioned above, most readings will be from papers and language specifications. These readings are always compulsory. When the reading is available on-line, I have a link to its on-line location. However, some of these readings are not available on-line: I will distribute hard copies of these readings.
All archives of the mailing list are available here
| Lectures | Topics | Readings |
| 1 | Course organization and overview. Lecture in pdf | |
| TYPES | ||
| 2 | What are types? Typed and untyped languages, type safety, type equality, static and dynamic typing, strong and weak typing. Lecture in pdf (Updated 8/30/00) | Ghezzi (3.4 upto and including 3.4.5) or
Scott (Sections 7.2.1, 7.2.2, 7.2.3) |
| 1 | Types and their implications in languages: Modula 3. Lecture in pdf (Updated 9/11/00) | Modula-3 type system (POPL 90) |
| 1 | Types and their implications in languages: Java, Java lecture in pdf. | Java type system chapters 4 and 5 |
| 1 | Types and their implications in languages: Smalltalk Lecture in pdf | The Smalltalk-80 system (Byte) and
[Sebesta (Sections 11.4, 11.5, 11.6) or
|
| 1 | Types discussion Discussion slides in pdf | How the language got its spots, from Systems Programming in Modula-3, editor Greg Nelson |
| POLYMORPHISM | ||
| 4 | Polymorphism, data abstraction. Lecture slides in pdf-1 Lecture slides in pdf-2 (updated 9/26/00) | Cardelli and Wegner
Sections 1 and 2 for first lecture Sections 3, 4, and 5 for second lecture Sections 6, 7, 8, and 9 for third lecture |
| 2 | Polymorphism in languages and its implications(Modula-3, C++, Java,
Smalltalk).Lecture slides in pdf
additional example |
Stroustrup, "Multiple inheritance in C++"
Optional but worthwhile: Chapter 12 of "The design and evolution of C++", Bjarne Stroustrup (on reserve) |
| 1 | Polymorphism in languages and its implications (SML). Lecture slides in pdf | SML tutorial, Harper upto and including page 40 |
| 1 | Interaction of inheritance with encapsulation. Lecture slides in pdf | Snyder (OOPSLA 86) |
| 1 | Type inference: what, why, and how? Lecture slides in pdf | Scott 7.2.5 |
| 1 | Richer type systems: pointer analysis. Lecture slides in pdf | Steensgaard upto and including section 5.2 |
| 1 | Richer type systems: finding bugs in programs Lecture slides in pdf | Callahan and Jackson |
| 2 | Using types to improve program performance. Lecture slides in pdf | Diwan, McKinley, and Moss |
| CONTROL STRUCTURES | ||
| 1 | Closures. Lecture slides in pdf | Scott: 3.3 or
Ghezzi: 2.7.1 to 2.7.4 inclusive or Sebesta: 9.3 |
| 1 | Exceptions including Java and Modula-3 case studies. Lecture slides in pdf | Exceptions
in Java chapters 11, 14.16, and 14.18
M-3 Discussion, Threads |
| 1 | Implementation implications of exceptions Lecture slides in pdf | |
| 1-2 | Continuations including case studies. Lecture slides in pdf | Notes from Hodas , Notes from Harper's tutorial |
| 1 | Implications of continuations. Lecture slides in pdf | Hieb, Dybvig, Bruggeman PLDI 90 |
| 1 | Language design discussion. | Guy Steele's OOPSLA talk |
| MEMORY MANAGEMENT | ||
| 2 | Automatic versus manual allocation and deallocation. Algorithms for memory management: accurate or conservative, copying, mark-and-sweep, and reference counting Lecture slides in pdf | Wilson survey |
| 1 | Implications of language features for memory management implementation. Lecture slides in pdf | Detlefs, Agesen, and Moss, 1998 |
| NEW TRENDS | ||
| 2 | Persistent programming languages. Lecture slides in pdf | Atkinson and Morrison, 1995 Upto and including section 4 |
| 1 | Introduction to language semantics | Ghezzi 2.1 (handout) |
| 1 | Delegation. Lecture slides in pdf | Self paper |
| 1 | Discussion | Aspect oriented programming |
| 1 | Review. Lecture slides in pdf |