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