7400: iPPL (Fall 2024)

Mini-Project

The mini-project is an approximately two-week long individual assignment with an open-ended scope in which you will explore a course topic not otherwise covered by previous assignments. The goal is to produce an explanatory artifact about a programming languages topic. You have two key choices to make: topic and artifact.

Important Dates

  • Monday, November 25: Post your chosen topic and format to Piazza.
  • Friday, December 6: Submit all electronic files for your project to Gradescope.
  • Monday, December 9 (by start of class): Submit presentation slides
  • Monday, December 9 and Thursday, December 12: Presentations (randomized order, so pleased be prepared to present on December 9)

Topics

The objective for the final assignment (mini-project) of the course is for you to explore in depth some topic that is in scope for this course but not directly covered by previous assignments. Ideally, you will choose one of the lecture topics covered since Assignment 4:

  • Control stacks
  • Call by push value/effects
  • Mutable state
  • Linearity
  • Mechanizing metatheory
These additional topics are also in scope:
  • First-class continuations and coroutines (PFPL Chapter 30)
  • Existential types and representation independence (PFPL Chapter 17)
  • Inductive and Coinductive Types (PFPL Chapter 15)
Finally, any other topic representing a chapter of PFPL is also potentially in scope. If you find a topic in the book that you're interested in, but isn't on the above list, contact the instructor and they will probably grant you permission to choose it.

Artifact Formats

You have two options for artifact formats:
  • Zine (a booklet with drawings and text)
  • Interpreter implementation (a source code repository implementing an interpreter, with abundant documentation and examples)
Both options also require an in-class presentation during finals week (December 9 or 12).

Presentations

Everyone will be given 15 minutes to present their work and 5 minutes for questions. Your presentation should include two things:

  • (~10 minutes) A mini-lecture on your topic, using your explanatory artifact as a visual aid: show pages of your zine or give a demo of your code running on examples to introduce and teach the topic to the class.
  • (~5 minutes) Meta-level commentary: how did you approach the explanatory artifact? How did that go? Are you happy with how it turned out? What would you do differently if you did it again?

There will also be some time at the end of each presentation day to read the zines, look through the code repos, and chat about each other's projects. Chris will bring snacks.

Grading

The grading of your mini-project will depend on the format you choose; each of the above links gives more detail. In addition, 5% of your grade for the course will come from presenting your project in class.