Skip to content

Commit 80f6521

Browse files
authored
Merge pull request #50 from dvanhorn/next
Project write-up.
2 parents 26849c6 + bbc2be6 commit 80f6521

File tree

1 file changed

+68
-0
lines changed

1 file changed

+68
-0
lines changed

www/project.scrbl

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,71 @@ that we will develop throughout the semester.
1111
@item{Final Project Assessment: @bold{@final-date}}
1212
]
1313

14+
@(define repo "https://classroom.github.com/a/t5KO9b5-")
15+
16+
The goal of this project is to put together everything you've
17+
learned over the semester to complete a full-featured compiler.
18+
19+
Project repository:
20+
@centered{@link[repo repo]}
21+
22+
You are given a working compiler for an extension of the language we
23+
have been developing all semester.
24+
25+
Your overall object is to improve the @emph{run-time} performance of
26+
code generated by your compiler while maintaining correctness.
27+
28+
There will be two releases of benchmark programs:
29+
30+
@itemlist[
31+
@item{Tuesday 12/3}
32+
@item{Tuesday 12/10}
33+
]
34+
35+
The final due date for your project is 10:30 AM on Saturday 12/14.
36+
37+
You will have an allowance of 10 minutes to @emph{compile} all benchmark
38+
programs. Exceeding the allowance result in a penalty, but there is
39+
no reward for improving @emph{compile-time} performance so long as you
40+
come in under the 10 minute mark.
41+
42+
You will have an allowance of 10 minutes to @emph{run} all benchmark
43+
programs. For full-credit, you must improve the overall run-time
44+
performance by 20\%. Run-time will compute as the average of three
45+
runs, done on the GRACE cluster.
46+
47+
Full credit solutions will be entered in a compiler tournament to
48+
determine the most performant (and correct) compiler. Tournament
49+
results do not count toward your grade and will involve compiling
50+
programs not included in the benchmark suite.
51+
52+
Benchmark programs will be batch I/O programs: read some input,
53+
compute something, produce a result and/or write some output.
54+
55+
I/O primitives include @racket[read-char], @racket[write-char]
56+
(limited to the standard input and output ports).
57+
58+
The compiler supports a standard library, with source level
59+
definitions provided to you. See the @racket[stdlib] function
60+
in the compiler.
61+
62+
There will be a garbage collector provided by the second round of
63+
benchmarks which you will need to incorporate in to your compiler.
64+
65+
66+
@bold{There is separate a repository for tests.} When you push your
67+
code, Travis will automatically run your code against the tests. If
68+
you would like to run the tests locally, clone the following
69+
repository into the directory that contains your compiler and run
70+
@tt{raco test .} to test everything:
71+
72+
@centered{@tt{https://github.com/cmsc430/fp-test.git}}
73+
74+
This repository will evolve as the week goes on, but any time there's
75+
a significant update it will be announced on Piazza.
76+
77+
@section[#:tag-prefix "fp-" #:style 'unnumbered]{Submitting}
78+
79+
Pushing your local repository to github ``submits'' your work. We
80+
will grade the latest submission that occurs before the deadline.
81+

0 commit comments

Comments
 (0)