|
2 | 2 |
|
3 | 3 | @title[#:tag "Assignment 4" #:style 'unnumbered]{Assignment 4: Let There Be (Many) Variables} |
4 | 4 |
|
5 | | -@bold{Part 1 Due: Wednesday, March 27, 11:59PM EST} |
6 | | - |
7 | | -@bold{Part 2 Due: Monday, April 8, 11:59PM EST} |
| 5 | +@bold{Due: Tuesday, October 29, 11:59PM EST} |
8 | 6 |
|
9 | 7 | The goal of this assignment is to extend a compiler with binding forms and |
10 | 8 | primitives that can take any number of arguments. |
11 | 9 |
|
12 | | -This assignment consists of two parts. In Part 1 you must submit test programs |
13 | | -written in the new Fraud+ language. In Part 2 you must implement Fraud+. |
14 | | - |
15 | | -@section[#:tag-prefix "a4-" #:style 'unnumbered]{Part 1} |
16 | | - |
17 | | -For the first part of the assignment, you must write test programs in the |
18 | | -Fraud+ language. These programs should be syntactically well-formed and |
19 | | -@bold{must produce an answer} when evaluated, i.e., these should be programs |
20 | | -that either produce values or are expected to return @tt{'err} according to the |
21 | | -Fraud semantics, but should not cause other errors. (The concept of an |
22 | | -@emph{answer} was introduced in @seclink["errors"]{Extort}.) |
23 | | - |
24 | | -You may write as many test programs as you like, but @bold{each program must be |
25 | | -written in a separate file}. You can put all of your files in one directory and |
26 | | -compress ("zip") that directory to submit it. Each program should be formatted |
27 | | -as usual for a standalone program, i.e., it should have the line @tt{#lang |
28 | | -racket} at the top and your program expression on a line below that. |
29 | | - |
30 | | -Your submission will be graded by running each program on a set of Fraud+ |
31 | | -compilers implemented by students in previous semesters, and your goal is to |
32 | | -craft test programs that discover bugs in these implementations. Your programs |
33 | | -will be run on many more compilers than you need to eliminate for a full score; |
34 | | -this is so students do not all need to find the same bugs. Additionally, we do |
35 | | -not know for certain that every compiler has a bug, so it may not be possible |
36 | | -to eliminate all of them. (We randomly select some compilers that pass all of |
37 | | -our tests so that students have the opportunity to write better tests than us. |
38 | | -This has helped us find deficiencies in our compilers before.) |
39 | | - |
40 | 10 |
|
41 | | -@section[#:tag-prefix "a4-" #:style 'unnumbered]{Part 2} |
| 11 | +@section[#:tag-prefix "a4-" #:style 'unnumbered]{Overview} |
42 | 12 |
|
43 | | -For the second part of the assignment, you are given a @tt{fraud-plus.zip} file |
44 | | -on ELMS with a starter compiler similar to the @seclink["Fraud"]{Fraud} |
| 13 | +For this assignment, you are given a @tt{fraud-plus.zip} file on ELMS |
| 14 | +with a starter compiler similar to the @seclink["Fraud"]{Fraud} |
45 | 15 | language we studied in class. |
46 | 16 |
|
47 | 17 | Unlike @seclink["Assignment 3"]{Assignment 3}, the following files have already |
@@ -85,7 +55,7 @@ You can test your code in several ways: |
85 | 55 | ] |
86 | 56 |
|
87 | 57 | Note that only a small number of tests are given to you, so you should |
88 | | -write additional test cases. We recommend using your tests from Part 1! |
| 58 | +write additional test cases. |
89 | 59 |
|
90 | 60 |
|
91 | 61 | @section[#:tag-prefix "a4-" #:style 'unnumbered]{Fraud+} |
|
0 commit comments