7
7
8
8
@(require "../notes/ev.rkt " )
9
9
10
- @bold{Due: Thursday , December 10th , 11:59PM EST}
10
+ @bold{Due: Saturday , December 19th , 11:59PM EST}
11
11
12
- @(define repo "www.example .com " )
12
+ @(define repo "https://classroom.github .com/a/B_5JCtgA " )
13
13
14
14
The goal of this assignment is to (1 ) implement arity checking in a
15
15
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
328
328
instead of copy from a list to a stack, you'll need to copy from the
329
329
stack to a list.
330
330
331
- @section[#:tag-prefix "a6- " #:style 'unnumbered ]{Bonus }
331
+ @section[#:tag-prefix "a6- " #:style 'unnumbered ]{Program Optimization }
332
332
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):
338
335
339
- This isn't worth any credit, but you might learn something.
340
336
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.
341
359
342
360
@section[#:tag-prefix "a6- " #:style 'unnumbered ]{Testing}
343
361
@@ -361,17 +379,6 @@ You can test your code in several ways:
361
379
Note that only a small number of tests are given to you, so you should
362
380
write additional test cases.
363
381
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
-
375
382
@section[#:tag-prefix "a6- " #:style 'unnumbered ]{Submitting}
376
383
377
384
Pushing your local repository to github ``submits'' your work. We
0 commit comments