Princeton University

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

Reading List

Fall 1997


Modularity for software engineering

Parnas 72
On the Criteria To Be Used in Decomposing Systems into Modules. D. L. Parnas, Communications of the ACM, Vol. 15, No. 12, pp. 1053 - 1058, December 1972.
Cardelli 97
Program Fragments, Linking, and Modularization. Luca Cardelli, Conference Record of POPL '97: The 24th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pp. 266-277, January 1997.
Blume 97b
Hierarchical Modularity: Compilation Management for Standard ML. Matthias Blume and Andrew W. Appel, Princeton University, 1997.
Jacobson 87
Object Oriented Development in an Industrial Environment. Ivar Jacobson, OOPSLA '87: Object-Oriented Programming Systems, Languages and Applications, SIGPLAN Notices 22(12), 183-191, December 1987.

Tutorials on module systems in programming languages

Hanson 97
Chapter 2 of C Interfaces and Implementations. David R. Hanson, Addison-Wesley, 1997. (On reserve for COS 217 at the Engineering Library.)
Ullman 94
Elements of ML Programming. Jeffrey D. Ullman, Prentice Hall 1994. (On reserve for COS 320 at the Engineering Library.)
Tofte 96
Essentials of Standard ML Modules. Mads Tofte, in J. Launchbury, E. Meijer and T. Sheard (eds), Advanced Functional Programming, LNCS 1129, Springer-Verlag, 1996.
Cardelli 91
Modula-3: Language Definition. Luca Cardelli, James Donahue, Lucille Glassman, Mick Jordan, Bill Kalsow, and Greg Nelson, in Systems Programming with Modula 3, G. Nelson (ed.), pages 11-67, Prentice Hall, 1991. Reprinted in ACM SIGPLAN Notices, Volume 27, Number 8, August 1992, pp. 15-42.
Freeman 95
Partial Revelation and Modula-3. Steve Freeman, Dr. Dobb's Journal 20(10) pages 36-42 and 110-112, October 1995.
Arnold 96
The Java Programming Language. Ken Arnold and James Gosling, Addison-Wesley, 1996.
Bruce 97
Subtyping is not a good ``Match'' for object-oriented languages, Kim B. Bruce, Adrian Fiech, and Leaf Petersen. Extended abstract appeared in ECOOP '97 Proceedings, LNCS 1241, Springer-Verlag, pp. 104-127.
Fisher 97
On the relationship between classes, objects and data abstraction, Kathleen Fisher and John C. Mitchell, Proceedings of the International Summer School on Mathematics of Program Construction, Marktoberdorf, Germany, Springer LNCS, 1997 (to appear).

Case Studies: Interfaces and implementations of buffered I/O

Plauger 92
The Standard C Library, P. J. Plauger, Prentice Hall, 1992. (On reserve at the Engineering library.)
Brown 91
IO streams: Abstract types, real programs. Mark R. Brown and Greg Nelson, in Systems Programming with Modula 3, G. Nelson (ed.), pages 130-170, Prentice Hall, 1991. (On reserve at the Engineering library.)
Korn 91
SFIO: Safe/Fast String/File IO, David G. Korn and Kiem-Phong Vo, Proceedings of the Summer '91 Usenix Conference, pp. 235-256, 1991.
Appel 94
Proposed interface for Standard ML Stream I/O. Andrew W. Appel, Princeton University, 1994.
Gansner 97
IO subsystem from The Standard ML Basis Library, edited by Emden Gansner and John Reppy, 1997.
Gosling 96
The Package java.io, in The Java Language Specification. James Gosling, Bill Joy, and Guy Steele, Addison-Wesley, 1996, pp. 665-766.

ML-style modules

MacQueen 94
A semantics for higher-order functors. David MacQueen and Mads Tofte, Proc. 5th European Symposium on Programming (ESOP '94), 1994.
Lillibridge 97
Translucent Sums: A Foundation for Higher-Order Module Systems (Chapters 1-4). Mark Lillibridge, PhD Thesis, Carnegie-Mellon University, 1997. (Full thesis available here.)
Blume 97a
Lambda-Splitting: A Higher-Order Approach to Cross-Module Optimizations. Matthias Blume and Andrew W. Appel, Proc. ACM SIGPLAN International Conference on Functional Programming (ICFP '97), pp. 112-124, June 1997

Protection and security

Wahbe 93
Efficient Software-Based Fault Isolation. R. Wahbe, S. Lucco, T. Anderson and S. Graham, Proc. Fourteenth ACM Symposium on Operating System Principles pp. 203--216, 1993.
Bershad 95
Extensibility, Safety and Performance in the SPIN Operating System. Brian Bershad, Stefan Savage, Przemyslaw Pardyak, Emin Gun Sirer, David Becker, Marc Fiuczynski, Craig Chambers, Susan Eggers, Proceedings of the 15th ACM Symposium on Operating System Principles (SOSP-15), pp. 267--284, 1995.
Necula 97
Proof-Carrying Code. George C. Necula, Conference Record of POPL '97: The 24th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pp. 106-119, January 1997.
Wallach 97
Extensible Security Architectures for Java. Dan S. Wallach, Dirk Balfanz, Drew Dean, and Edward W. Felten, Technical Report 546-97, Department of Computer Science, Princeton University, April 1997.
Dean 97
The Security of Static Typing with Dynamic Linking. Drew Dean, Proceedings of the Fourth ACM Conference on Computer and Communications Security, April 1997.

Back to COS 595 front page | Schedule