Skip to content

Commit

Permalink
Merge pull request #50 from dvanhorn/next
Browse files Browse the repository at this point in the history
Project write-up.
  • Loading branch information
dvanhorn authored Nov 27, 2019
2 parents 26849c6 + bbc2be6 commit 80f6521
Showing 1 changed file with 68 additions and 0 deletions.
68 changes: 68 additions & 0 deletions www/project.scrbl
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,71 @@ that we will develop throughout the semester.
@item{Final Project Assessment: @bold{@final-date}}
]

@(define repo "https://classroom.github.com/a/t5KO9b5-")

The goal of this project is to put together everything you've
learned over the semester to complete a full-featured compiler.

Project repository:
@centered{@link[repo repo]}

You are given a working compiler for an extension of the language we
have been developing all semester.

Your overall object is to improve the @emph{run-time} performance of
code generated by your compiler while maintaining correctness.

There will be two releases of benchmark programs:

@itemlist[
@item{Tuesday 12/3}
@item{Tuesday 12/10}
]

The final due date for your project is 10:30 AM on Saturday 12/14.

You will have an allowance of 10 minutes to @emph{compile} all benchmark
programs. Exceeding the allowance result in a penalty, but there is
no reward for improving @emph{compile-time} performance so long as you
come in under the 10 minute mark.

You will have an allowance of 10 minutes to @emph{run} all benchmark
programs. For full-credit, you must improve the overall run-time
performance by 20\%. Run-time will compute as the average of three
runs, done on the GRACE cluster.

Full credit solutions will be entered in a compiler tournament to
determine the most performant (and correct) compiler. Tournament
results do not count toward your grade and will involve compiling
programs not included in the benchmark suite.

Benchmark programs will be batch I/O programs: read some input,
compute something, produce a result and/or write some output.

I/O primitives include @racket[read-char], @racket[write-char]
(limited to the standard input and output ports).

The compiler supports a standard library, with source level
definitions provided to you. See the @racket[stdlib] function
in the compiler.

There will be a garbage collector provided by the second round of
benchmarks which you will need to incorporate in to your compiler.


@bold{There is separate a repository for tests.} When you push your
code, Travis will automatically run your code against the tests. If
you would like to run the tests locally, clone the following
repository into the directory that contains your compiler and run
@tt{raco test .} to test everything:

@centered{@tt{https://github.com/cmsc430/fp-test.git}}

This repository will evolve as the week goes on, but any time there's
a significant update it will be announced on Piazza.

@section[#:tag-prefix "fp-" #:style 'unnumbered]{Submitting}

Pushing your local repository to github ``submits'' your work. We
will grade the latest submission that occurs before the deadline.

0 comments on commit 80f6521

Please sign in to comment.