|
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.