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
1414The goal of this assignment is to (1 ) implement arity checking in a
1515language 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
328328instead of copy from a list to a stack, you'll need to copy from the
329329stack 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:
361379Note that only a small number of tests are given to you, so you should
362380write 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
377384Pushing your local repository to github ``submits'' your work. We
0 commit comments