Fundamentals of Programming Languages
CS 5535
| Bi-weekly homework assignments | 40% |
| Final project | 20% |
| Midterm exams | 20% |
| Final exam | 20% |
| Lectures | Topics | Readings |
| 1 | Course organization: types, polymorphism, memory management, control flow primitives, and exotics. Lectures in html , pdf | |
| TYPES | ||
| 2 | What are types? Typed and untyped languages, type safety, type equality, static and dynamic typing, strong and weak typing. Lectures in html pdf | Mitchell handout, Sections 5.1, 5.2, 5.3 |
| 1 | Types and their implications in languages: Modula 3. Lectures in pdf | Modula-3 type system (handout) |
| 1 | Types and their implications in languages: Java. Lectures in pdf | Java type system chapters 4 and 5 |
| 1 | Types and their implications in languages: Smalltalk. Lectures in pdf | The Smalltalk-80 system (handout)
Mitchell (handout) |
| POLYMORPHISM | ||
| 3 | Polymorphism, data abstraction. Lecture in pdf | Cardelli and Wegner |
| 2 | Polymorphism in languages and its implications(Modula-3, C++, Java, Smalltalk). Lectures in pdf | Stroustrup, "Multiple inheritance in C++" (avail. from Pat) |
| 2 | Polymorphism in languages and its implications (SML). Lectures in pdf | SML tutorial, Harper upto and including page 40 |
| 1 | Interaction of inheritance with encapsulation. Lectures in pdf Updated 9/25/99 | Snyder (from Pat) |
| 1 | Interaction of inheritance with concurrency | (postponed) |
| 1 | Type inference: what, why, and how? Lectures in pdf | Mitchell handout, Sections 5.4 (you should already have this handout) |
| 1 | Richer type systems: pointer analysis. Lectures in pdf Updated 9/25/99 | Pointer analysis upto and including section 5.2 |
| 1 | Review. Review 2 in pdf | |
| 1 | Richer type systems: finding bugs in programs Lectures in pdf | Bug detection |
| 2 | Using types to improve program performance. Lectures in pdf | types for optimizations |
| 1 | Types discussion | How the language got its spots, from Systems Programming in Modula-3, editor Greg Nelson |
| 1 | Types: the end Lectures in pdf | |
| CONTROL STRUCTURES | ||
| 1 | Closures. Lectures in pdf | Read up on activation records, static links, and dynamic links in your favorite programming languages text |
| 1 | Exceptions including Java and Modula-3 case studies. Updated 10/22/99 Lectures in pdf. | Exceptions
in Java chapters 11, 14.16, and 14.18
M-3 Discussion |
| 1 | Implementation implications of exceptions Lectures in pdf.Updated 10/25/99 | |
| 1-2 | Continuations including case studies. Lectures in pdf. | Notes from Hodas , Notes from Harper's tutorial |
| 1 | Implications of continuations. Lectures in pdf. | Representing control in the presence of first-class continuations, Hieb, Dybvig, Bruggeman (handed out in class) |
| MEMORY MANAGEMENT | ||
| 1 | Automatic versus manual allocation and deallocation. Lectures in pdf.Updated 11/03/99 | Wilson survey |
| 1 | Algorithms for memory management: accurate or conservative, copying, mark-and-sweep, and reference counting | |
| 1 | Review. Review 2 in pdf. | |
| 1 | Implications of language features for memory management implementation. Lectures in pdf. Updated 11/15/99 | Detlefs, Agesen, and Moss, 1998 |
| NEW TRENDS | ||
| 2 | Persistent programming languages. Lectures in pdf | Atkinson and Morrison, 1995 Upto and including section 4 |
| 1 | Delegation. Lectures in pdf | Self paper |
| 1 | Multiple dispatching. Lectures in pdf | Cecil paper |
| 1
Next Lecture |
Review. Lecture in pdf |