Skip to content

Commit 55c78bd

Browse files
committed
Assignment 6 is a go
1 parent 3f624c5 commit 55c78bd

File tree

1 file changed

+27
-20
lines changed

1 file changed

+27
-20
lines changed

www/assignments/6.scrbl

Lines changed: 27 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77

88
@(require "../notes/ev.rkt")
99

10-
@bold{Due: Thursday, December 10th, 11:59PM EST}
10+
@bold{Due: Saturday, December 19th, 11:59PM EST}
1111

12-
@(define repo "www.example.com")
12+
@(define repo "https://classroom.github.com/a/B_5JCtgA")
1313

1414
The goal of this assignment is to (1) implement arity checking in a
1515
language with functions, (2) to implement the @racket[apply]
@@ -328,16 +328,34 @@ is an arity error.) So like @racket[apply], you'll need a loop, but
328328
instead of copy from a list to a stack, you'll need to copy from the
329329
stack to a list.
330330

331-
@section[#:tag-prefix "a6-" #:style 'unnumbered]{Bonus}
331+
@section[#:tag-prefix "a6-" #:style 'unnumbered]{Program Optimization}
332332

333-
Should you find yourself having completed the assignment with time to
334-
spare, you could try adding proper tail calls to the compiler. You
335-
will have to make it work with arity checking and calling
336-
@racket[apply] in tail position should make a tail call to the
337-
function.
333+
Choose one of the following compiler optimizations (you will want to read up on
334+
them a bit before you pick one):
338335

339-
This isn't worth any credit, but you might learn something.
340336

337+
@itemlist[
338+
339+
@item{Common sub-expression elimination}
340+
341+
@item{Constant folding/propagation}
342+
343+
@item{Dead store elimination (in our languages a `dead store' would be creating
344+
a box that is then never used).}
345+
346+
]
347+
348+
In your repos there is a file @tt{optimization.txt}. For the optimization you
349+
have chosen write approximately 500-1000 words explaining how you might
350+
implement your chosen optimization in Shakedown in that file. Make sure you
351+
consider that Shakedown has the ability to perform arbitrary side-effects
352+
(printing to the screen, for example), and therefore your explanation should
353+
discuss how that might affect where the optimization might apply.
354+
355+
The wordcount is meant to be a ballpark, wordcounts below 500 @emph{might} be
356+
okay, but it would probably be difficult to describe the important
357+
considerations. You @emph{can} show code in your answer, but it will not count
358+
towards your word count.
341359

342360
@section[#:tag-prefix "a6-" #:style 'unnumbered]{Testing}
343361

@@ -361,17 +379,6 @@ You can test your code in several ways:
361379
Note that only a small number of tests are given to you, so you should
362380
write additional test cases.
363381

364-
@bold{There is separate a repository for tests!} When you push your
365-
code, Travis will automatically run your code against the tests. If
366-
you would like to run the tests locally, clone the following
367-
repository into the directory that contains your compiler and run
368-
@tt{raco test .} to test everything:
369-
370-
@centered{@tt{https://github.com/cmsc430/assign06-test.git}}
371-
372-
This repository will evolve as the week goes on, but any time there's
373-
a significant update it will be announced on Piazza.
374-
375382
@section[#:tag-prefix "a6-" #:style 'unnumbered]{Submitting}
376383

377384
Pushing your local repository to github ``submits'' your work. We

0 commit comments

Comments
 (0)