|
1 | 1 | #lang scribble/manual |
2 | | -@(require "../defns.rkt" |
3 | | - (only-in scribble/html/html div)) |
| 2 | +@title[#:tag "Assignment 1" #:style 'unnumbered]{Assignment 1: Racket Primer} |
4 | 3 |
|
5 | | -@title[#:tag "Assignment 1" #:style 'unnumbered]{Assignment 1: Learning about Programming Languages} |
| 4 | +@bold{Due: Monday, February 5, 11:59PM} |
6 | 5 |
|
7 | | -@bold{Due: Wednesday, January 31, 11:59PM} |
| 6 | +The goal of this assignment is to gain practice programming in Racket. |
8 | 7 |
|
9 | | -Find two programming languages that are new to you, and answer the following questions: |
| 8 | +@bold{This is a collaborative assignment.} You may work with anyone |
| 9 | +you'd like on this assignment, but each person must submit their |
| 10 | +@tt{submit.zip} file on Gradescope. |
10 | 11 |
|
11 | | -@itemlist[#:style 'ordered |
| 12 | +You are given a @tt{racket-basics.zip} file (on ELMS under "Files"), |
| 13 | +that contains a README, a Makefile, and a number of Racket modules. |
| 14 | +In each module there are several function ``stubs,'' i.e. incomplete |
| 15 | +function definitions with type signatures, descriptions, and a small |
| 16 | +set of tests. Each function has a bogus (but type correct) body |
| 17 | +marked with a ``TODO'' comment. Your job is to replace each of these |
| 18 | +expressions with a correct implementation of the function. |
12 | 19 |
|
13 | | -@item{When was the language first introduced, approximately, and who |
14 | | -developed it initially?} |
| 20 | +The last section of problems deals with functions that operate over a |
| 21 | +representation of expressions in a lambda-calculus-like language and |
| 22 | +asks you to compute a few simple facts about the given expression. |
15 | 23 |
|
16 | | -@item{Why was the language created? What community was the language |
17 | | -aimed at? What is unique, interesting, and novel about the language?} |
| 24 | +Make sure you do not rename any files. Also make sure not to change |
| 25 | +the name or signature of any function given to you. You may add any |
| 26 | +additional functions that help you solve the overall problem you're |
| 27 | +tackling. |
18 | 28 |
|
19 | | -@item{Show and describe a fragment of code (in the language) that you think |
20 | | -is particularly interesting, and describe what it does and why it is |
21 | | -interesting. You don't necessarily need to install the language |
22 | | -yourself and write your own code from scratch; examples from language |
23 | | -documentation are fine.} |
| 29 | +@section[#:tag-prefix "a2-" #:style 'unnumbered]{Testing} |
24 | 30 |
|
25 | | -@item{Is the language still used today (as far as you can tell) for |
26 | | -anything?} |
| 31 | +You can test your code in several ways: |
27 | 32 |
|
28 | | -] |
| 33 | +@itemlist[ |
29 | 34 |
|
| 35 | + @item{Running the code in DrRacket will (by default) run the |
| 36 | + test submodule and print out a report of any test failures. |
| 37 | + This is actually a configurable preference, but it is on by |
| 38 | + default.} |
30 | 39 |
|
31 | | -You should exclude the following languages from your search: C, C++, |
32 | | -C#, Java, Javascript, FORTRAN, LISP, OCaml, Pascal, Perl, Python, |
33 | | -Racket, Ruby, Scheme, SML, Visual Basic. |
| 40 | + @item{Using the command line @tt{raco test <filename.rkt>} from |
| 41 | + the same directory as your Racket code will test the module |
| 42 | + in @tt{<filename.rkt>}. If you run @tt{raco test .}, it will |
| 43 | + test all of the Racket files in the current directory.}] |
34 | 44 |
|
35 | | -@section[#:style 'unnumbered]{What to turn in} |
| 45 | +Note: running @tt{racket <filename.rkt>} will @bold{not} test the |
| 46 | +file; you need to use @tt{raco} or DrRacket. |
36 | 47 |
|
37 | | -Submit a PDF or plain text file containing your write-up via |
38 | | -@link[@gradescope]{Gradescope}. |
| 48 | +@section[#:tag-prefix "a2-" #:style 'unnumbered]{Submitting} |
39 | 49 |
|
40 | | -@;{Until this assignment is officially assigned (see the due date), submissions |
41 | | -will not be accepted.} |
| 50 | +Use the included Makefile to run @tt{make submit.zip} (or simply |
| 51 | +@tt{make}) to generate an appropriate @tt{submit.zip} file for |
| 52 | +submitting to Gradescope. |
42 | 53 |
|
43 | | -@;{We will be using GitHub Classroom. This means you will work with git |
44 | | -repositories and turning in your work consists of pushing the |
45 | | -repository to GitHub. |
| 54 | +@section[#:tag-prefix "a2-" #:style 'unnumbered]{Grading} |
46 | 55 |
|
47 | | -You will need a GitHub account. Please sign up for one (they are |
48 | | -free) if you don't already have one. |
49 | | - |
50 | | -Visit this URL in a browser: |
51 | | - |
52 | | -@centered{@link["https://classroom.github.com/a/aVZJ3fsm"]{https://classroom.github.com/a/aVZJ3fsm}} |
53 | | - |
54 | | -After signing in, you should see a list of ID numbers. Select your |
55 | | -UID from the list to associate your GitHub username with the UID. |
56 | | - |
57 | | -Press "Accept this assignment" which will create a repository for your work. |
58 | | - |
59 | | -Clone this repository to your machine. There are two template files |
60 | | -@tt{lang1.md} and @tt{lang2.md} for you to edit. There is also an |
61 | | -example solution in @tt{racket.md}. You only need to edit |
62 | | -@tt{lang1.md} and @tt{lang2.md}. @bold{Do not rename or move these |
63 | | -files.} |
64 | | - |
65 | | -At any point, you may save your work and push the repository. We will |
66 | | -grade the last push before the deadline.} |
| 56 | +Your submission will be graded for correctness. Passing the unit |
| 57 | +tests included in the file is necessary but @bold{not sufficient} to |
| 58 | +receive a perfect score. You are strongly encouraged to add your own |
| 59 | +tests to ensure the correctness of your solutions. |
0 commit comments