Project Ideas

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 possibilities:
    • 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, and others?
  • 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?

Web Accessibility