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