Princeton University
Computer Science Dept.

Computer Science 595
Advanced Topics in Software Systems
Modularity, Abstraction & Protection in Programming Languages

Andrew Appel

Fall 1997


Directory
Schedule | Readings

Abstraction and modularity help build reliable, maintainable systems. Some of the most interesting recent research in programming languages is in new ways to support modularity. Another new development is the use of language-level, compile-time type checking to enforce system security (as in Web applets). In this course we will study some of this research: in module systems, functional programming, object-oriented programming, and related work.

General Information

Seminar: TTh 3:00--4:20pm, room 301 CS building.

Professor: Andrew Appel, 409 CS Building, 258-4627, appel@cs, office hours by appointment (send e-mail).

Course structure

In the first half of the semester we will study modularity mechanisms in C, ML, Modula-3, and Java.

We will use modularization of buffered IO as a case study for each language. Modern IO systems are commonly built in at least two layers: a lower layer corresponding to the OS's system-call interface, and an upper layer providing buffering. We will examine the abstract data types for each layer as designed and implemented in C, Modula-3, ML, and Java, and see how the programming language's modularity mechanisms influenced the design.

In the second half of the semester we will study protection and security as implemented through language-level type-checking and modularization, and also as implemented through other means.

Course requirements

This is a seminar course. As such, students will be expected to read the papers, participate in discussions, and present one or two of the papers for the class. Not much written work will be required, and therefore this class will not satisfy any part of the Graduate Course Requirements.