Skip to content

Commit 8b36bdd

Browse files
committed
Project description
1 parent 7c2026e commit 8b36bdd

File tree

1 file changed

+54
-4
lines changed

1 file changed

+54
-4
lines changed

www/project.scrbl

Lines changed: 54 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,64 @@ several weeks of the course. The project will involve extending the
77
design and implementation of the programming language and its compiler
88
that 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

2070
The goal of this project is to put together everything you've

0 commit comments

Comments
 (0)