@@ -7,14 +7,64 @@ several weeks of the course. The project will involve extending the
77design and implementation of the programming language and its compiler
88that we will develop throughout the semester.
99
10- Details will be announced later in the semester.
11-
12- @;{
10+ For your project you should turn in your extension code, a directory
11+ of examples that showcase your extension and the differences in
12+ behavior compared to the original language, and a @bold{short}
13+ paragraph describing anything you found interesting. Submission will
14+ be handled by gradescope, with more details to follow.
15+
16+ The suggested deadline is the last date of classes - May 11th - to
17+ avoid overlap with finals week. That said, you're free to take a few
18+ extra days and submit after that deadline until the nominal date
19+ of the final exam (which would have been on Tuesday, May 18th if it
20+ was happening). That is a strict deadline, not imposed by me, so make
21+ sure you have turned in your projects by then.
22+
23+ As a first step, you have to pick a project idea as your "assignment "
24+ for this week. Just write a @bold{short} paragraph with your project
25+ of choice: what you hope to accomplish and a high-level description of
26+ your approach. This assignment should be live on Gradescope.
27+
28+ Here are some project ideas that have been discussed throughout the
29+ semester:
1330
1431@itemlist[
15- @item{Final Project Assessment: @bold{@final-date}}
32+
33+ @item{Error handling. Currently, our languages return a
34+ not-very-informative @tt{'err } symbol when things go wrong. Real
35+ languages offer a lot more information: the reason that something
36+ went wrong, context, expressions involved, file name, line numbers,
37+ etc. This project would aim to improve the error reporting for Loot.
38+ Improving that behavior for an interpreter is pretty straightforward
39+ and should be an easy first step for this project until you're happy
40+ with the output error messages. Porting that better error behavior
41+ on the compiler is a bit more involved - there are multiple possible
42+ approaches to this , but hacking on the runtime system is always an
43+ option!
44+ }
45+
46+ @item{Typing Loot. We have discussed typing for @tt{Hustle} and its
47+ implications in the compiler (deleting a whole lot of assertions), as
48+ well as typing for a simple lambda calculus. This project would aim
49+ to combine the two threads, implementing a type system on top of Loot.
50+ There are interesting design decisions here, so feel free to reach out
51+ to talk about them!}
52+
53+ @item{Loot Optimizations. Sky's the limit here. You can try
54+ high-level optimizations (e.g. inlining, lambda lifting, dead-code
55+ elimination, partial evaluation, etc.) or low-level ones (register
56+ allocation, register-based calling conventions etc.). Optimizations
57+ can be tricky to get right, so make sure you reuse all the unit
58+ tests we have provided throughout the semester and expand upon them!}
59+
60+ @item{Whatever feature you want to add! Get in touch to discuss whether
61+ its scope is appropriate for a final project.}
1662]
1763
64+
65+ @;{
66+
67+
1868@(define repo "https://classroom.github.com/a/t5KO9b5- " )
1969
2070The goal of this project is to put together everything you've
0 commit comments