CMSC 838Y: Agile and Adaptive Programming Systems
Instructor Michael Hicks
CSI 3118 TuTh 12:30pm-1:45pm
Office Hours TuTh 2:00pm-3:00pm AVW 4131
Syllabus / Schedule / Resources / Review Papers
- Extend Cardelli's formalism of linking to be more realistic. Some
- additional language features
- an object-oriented language
- use an actual compilation system
- use a different module system (e.g. a more component-based approach)
- Implement your own linker. This project is outlined throughout the Linkers and Loaders book.
- Implement a dynamic linker for C programs. For example,
dlopen typically uses ELF-style PLT linking with a GOT. Instead,
build your own dlopen library that uses a different strategy, like
load-time code modification, or run-time code modification.
- Make C's dynamic linker type-safe, following ideas from safe linking for
native code. Alternatively, implement a dynamic linker for a safe C
language like Cyclone (talk to me about
this, as I'm a maintainer of Cyclone).
- Propose a solution to an open problem in extensible systems, or do a
survey of the area. Open issues can be found on the last slide of the lecture notes.
- Explore and evaluate one or more module systems. For those with an
implementation, try porting some significant piece of code to using them.
What are the practical advantages and disadvantages that you find? What
improvements do you propose? What features of use are they currently not
considering, perhaps in the areas of security, ease-of-use, design patterns,
- Tighten up Gupta's formal framework to use more traditional operational
semantics. Can you state and prove the properties more elegantly or
concisely? Consider I/O in the formalism. How does it change things?
How might this methodology be adapted to consider particular programs?
- Implement a dynamic updating system for your language of choice, and/or
explore different dynamic updating systems that are available. For example,
there are at least trhee dynamic updating approaches that I know of for Java:
How do language features like objects, first-class functions
(i.e. closures), exceptions, etc. affect updating mechanisms?