Skip to content

Commit 68dc141

Browse files
authored
Merge pull request #161 from cmsc430/ziggy
Ziggy
2 parents 5665f28 + f959d2f commit 68dc141

5 files changed

Lines changed: 126 additions & 130 deletions

File tree

www/assignments/1.scrbl

Lines changed: 42 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,59 @@
11
#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}
43

5-
@title[#:tag "Assignment 1" #:style 'unnumbered]{Assignment 1: Learning about Programming Languages}
4+
@bold{Due: Monday, February 5, 11:59PM}
65

7-
@bold{Due: Wednesday, January 31, 11:59PM}
6+
The goal of this assignment is to gain practice programming in Racket.
87

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.
1011

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.
1219

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.
1523

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.
1828

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}
2430

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:
2732

28-
]
33+
@itemlist[
2934

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.}
3039

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.}]
3444

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.
3647

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}
3949

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.
4253

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}
4655

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.

www/defns.rkt

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,20 +23,21 @@
2323
(define KEY "KEY")
2424

2525

26-
(define m1-date "TBD")
27-
(define m2-date "TBD")
26+
(define m1-date "March 6")
27+
(define m2-date "April 17")
2828
(define midterm-hours "24")
29-
(define final-date "TBD")
29+
(define final-date "May 14")
3030
(define elms-url "https://umd.instructure.com/courses/1359023")
3131

3232

3333
(define racket-version "8.11")
3434

3535
(define staff
36-
(list (list "William Wegand" "wwegand@terpmail.umd.edu")
36+
(list (list "Henry Blanchette" "blancheh@umd.edu")
3737
(list "Pierce Darragh" "pdarragh@umd.edu")
38-
(list "Henry Blanchette" "blancheh@umd.edu")
38+
(list "Advait Kushe" "akushe@terpmail.umd.edu")
3939
(list "Deena Postol" "dpostol@umd.edu")
40+
(list "William Wegand" "wwegand@terpmail.umd.edu")
4041
(list "Kazi Tasnim Zinat" "kzintas@umd.edu")
4142
#;(list "Fuxiao Liu" "fl3es@umd.edu")
4243
#;(list "Vivian Chen" "vchen8@terpmail.umd.edu")
@@ -57,6 +58,6 @@
5758

5859
;(define discord "TBD")
5960
(define piazza "https://piazza.com/class/lrs6masma6h2o1/")
60-
(define gradescope "https://www.gradescope.com/") ; FIXME
61+
(define gradescope "https://www.gradescope.com/courses/723511")
6162

62-
(define feedback "https://docs.google.com/forms/d/e/1FAIpQLSc80xQELhHb_Ef-tn0DkpH2b6pYadQiT3aYSEJFNqEqBjzdGg/viewform?usp=sf_link")
63+
(define feedback "https://docs.google.com/forms/d/e/1FAIpQLSc80xQELhHb_Ef-tn0DkpH2b6pYadQiT3aYSEJFNqEqBjzdGg/viewform?usp=sf_link")

www/main.scrbl

Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -42,27 +42,17 @@ implement several related languages.
4242

4343
@bold{Office hours:} AVW 4140
4444

45-
Schedule, TBD.
46-
47-
@;{
4845
@tabular[#:style 'boxed
4946
#:row-properties '(bottom-border ())
50-
(list (list @bold{Time} @bold{Monday} @bold{Tuesday} @bold{Wednesday} @bold{Thursday} @bold{Friday})
51-
(list "9 AM" "William" 'cont "William" 'cont 'cont)
52-
(list "10 AM" "William" 'cont "Ian, William" 'cont 'cont)
53-
(list "11 AM" 'cont "Pierce" "Ian" 'cont 'cont)
54-
(list "12 PM" "Dalton, Fuxiao" "Pierce" "Dalton" 'cont 'cont)
55-
(list "1 PM" "Dalton, Fuxiao, Ian" 'cont "Matthew, Wilson" "Fuxiao" "Wilson")
56-
(list "" "Wilson" 'cont 'cont 'cont 'cont)
57-
(list "2 PM" "Ian, Wilson" "Pierce" "Matthew" "Fuxiao" 'cont)
58-
(list "" 'cont 'cont 'cont "Pierce" 'cont)
59-
(list "3 PM" "Matthew, Yuhwan" "Pierce" "Matthew, Yuhwan" "Pierce" "Vivian")
60-
(list "4 PM" "Yuhwan" 'cont "Yuhwan, Dalton" 'cont 'cont)
61-
(list "5 PM" 'cont "Vivian" 'cont "Vivian" 'cont)
62-
(list "6 PM" 'cont 'cont 'cont "Vivian" 'cont))]
63-
}
64-
65-
47+
(list (list @bold{Time} @bold{Monday} @bold{Tuesday} @bold{Wednesday} @bold{Thursday} @bold{Friday})
48+
(list "9 AM" 'cont "Deena" "Deena" 'cont 'cont)
49+
(list "10 AM" 'cont "Deena" "Deena" 'cont 'cont)
50+
(list "11 AM" "Advait" 'cont "Advait" 'cont 'cont)
51+
(list "12 PM" 'cont 'cont "Pierce" 'cont 'cont)
52+
(list "1 PM" "Kazi" "Kazi" "Pierce" 'cont 'cont)
53+
(list "2 PM" "Kazi" "Kazi" 'cont "Henry" 'cont)
54+
(list "3 PM" 'cont 'cont 'cont "Henry" "Henry")
55+
(list "4 PM" 'cont "William" 'cont "William" "Henry"))]
6656

6757
@bold{Communications:} @link[@elms-url]{ELMS}, @link[@piazza]{Piazza}
6858

www/schedule.scrbl

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,15 @@
2929

3030

3131
(list @wk{1/29}
32-
@seclink["Assignment 1"]{A1}
33-
@elem{@secref["OCaml to Racket"]}
32+
""
33+
@elem{@secref["OCaml to Racket"]}
3434
@elem{@secref["OCaml to Racket"]})
35-
#|
36-
(list @wk{9/11}
37-
@seclink["Assignment 2"]{A2}
38-
@elem{@secref["a86"]}
39-
@elem{@secref["Abscond"]})
4035

36+
(list @wk{2/5}
37+
@seclink["Assignment 1"]{A1}
38+
@elem{@secref["a86"]}
39+
@elem{@secref["Abscond"]})
40+
#|
4141
(list @wk{9/18}
4242
""
4343
@itemlist[@item{@secref["Blackmail"]}

www/software.scrbl

Lines changed: 60 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -60,59 +60,12 @@ This course will make use of the following software:
6060
Instruction for using each system are below:
6161

6262
@itemlist[
63-
@item{@secref{GRACE}}
6463
@item{@secref{Linux}}
6564
@item{@secref{mac}}
6665
@item{@secref{Windows}}
66+
@item{@secref{GRACE}}
6767
]
6868

69-
@section[#:tag "GRACE"]{Using GRACE}
70-
71-
The @link["http://www.grace.umd.edu/"]{GRACE} system gives students
72-
access to an x86-64 Linux system that meets all of the system
73-
requirements for the software in this course. If you have an
74-
incompatible system, or if you'd rather avoid installing and setting
75-
up the software for this course, you can use GRACE.
76-
77-
Before using GRACE, you should locally install an implementation of
78-
the X.Org X Window System which will enable you to run GUI programs
79-
from GRACE on your computer (or any other computer that uses X11). On
80-
Linux, this is likely set up by default. On Mac, you will need to
81-
install @link["https://www.xquartz.org/"]{XQuartz}. On Windows, you
82-
can use @link["https://mobaxterm.mobatek.net/"]{MobaXterm}.
83-
84-
To use GRACE, open a terminal on your computer and
85-
type:
86-
87-
@verbatim|{ ssh -Y <directoryID>@grace.umd.edu}|
88-
89-
You will prompted for your UMD Directory ID password. After entering
90-
your password, you will be at the GRACE command line prompt.
91-
92-
The @tt{-Y} command line option sets up X11 forwarding, which lets you
93-
run GUI applications from GRACE. If you leave this off, programs like
94-
DrRacket will fail to launch when started.
95-
96-
Racket and @tt{nasm} are already installed, but you will
97-
need to modify your @tt{PATH} environment variable so that you can
98-
execute them from the command-line. You can do this with the
99-
following commands:
100-
101-
@verbatim|{
102-
# CMSC 430 set up
103-
set path = ( /cell_root/software/racket/8.4/sys/bin $path )
104-
set path = ( /cell_root/software/nasm/2.15.05/sys/bin/ $path )}|
105-
106-
If you add these lines to the @tt{.path} file in your home directory, then you
107-
won't have to run this command manually every time you login; it will happen
108-
automatically.
109-
110-
Once set, you should be able to run commands such as @tt{racket},
111-
@tt{raco}, and @tt{nasm}. Other tools such as @tt{gcc} are already
112-
available.
113-
114-
Finally, you will need to install @secref{langs-package}.
115-
11669
@section[#:tag "Linux"]{Using Linux}
11770

11871
If you have an ARM-based machine, you will need to use
@@ -237,6 +190,59 @@ some Linux Distribution. Here is a breakdown of the steps:
237190
Regardless of the IDE used, you can now run your tests from your Linux
238191
subsystem by entering the project directory and using the raco command.
239192

193+
@section[#:tag "GRACE"]{Using GRACE}
194+
195+
@margin-note{GRACE is unfortunately not well maintained by the
196+
university and is recommended only as a last resort. Please contact
197+
course staff if you plan to use GRACE for this class so we can help
198+
make sure everything is set-up properly.}
199+
200+
The @link["http://www.grace.umd.edu/"]{GRACE} system gives students
201+
access to an x86-64 Linux system that meets all of the system
202+
requirements for the software in this course. If you have an
203+
incompatible system, or if you'd rather avoid installing and setting
204+
up the software for this course, you can use GRACE.
205+
206+
Before using GRACE, you should locally install an implementation of
207+
the X.Org X Window System which will enable you to run GUI programs
208+
from GRACE on your computer (or any other computer that uses X11). On
209+
Linux, this is likely set up by default. On Mac, you will need to
210+
install @link["https://www.xquartz.org/"]{XQuartz}. On Windows, you
211+
can use @link["https://mobaxterm.mobatek.net/"]{MobaXterm}.
212+
213+
To use GRACE, open a terminal on your computer and
214+
type:
215+
216+
@verbatim|{ ssh -Y <directoryID>@grace.umd.edu}|
217+
218+
You will prompted for your UMD Directory ID password. After entering
219+
your password, you will be at the GRACE command line prompt.
220+
221+
The @tt{-Y} command line option sets up X11 forwarding, which lets you
222+
run GUI applications from GRACE. If you leave this off, programs like
223+
DrRacket will fail to launch when started.
224+
225+
Racket and @tt{nasm} are already installed, but you will
226+
need to modify your @tt{PATH} environment variable so that you can
227+
execute them from the command-line. You can do this with the
228+
following commands:
229+
230+
@verbatim|{
231+
# CMSC 430 set up
232+
set path = ( /cell_root/software/racket/8.4/sys/bin $path )
233+
set path = ( /cell_root/software/nasm/2.15.05/sys/bin/ $path )}|
234+
235+
If you add these lines to the @tt{.path} file in your home directory, then you
236+
won't have to run this command manually every time you login; it will happen
237+
automatically.
238+
239+
Once set, you should be able to run commands such as @tt{racket},
240+
@tt{raco}, and @tt{nasm}. Other tools such as @tt{gcc} are already
241+
available.
242+
243+
Finally, you will need to install @secref{langs-package}.
244+
245+
240246
@section[#:tag "install-racket"]{Installing Racket}
241247

242248
Racket is available for all major operating systems from:
@@ -246,6 +252,12 @@ Racket is available for all major operating systems from:
246252
We will be using Racket @racket-version, but any version from the past several
247253
years should work fine.
248254

255+
It's best to install Racket using the Racket installer rather than any
256+
package management system (e.g. Homebrew) as these bundles are often
257+
out-of-date, missing features, or will select the wrong platform
258+
(remember: you need to be running the Intel 64-bit version, even if
259+
you're on Apple Silicon).
260+
249261
There are two essential references:
250262

251263
@itemlist[

0 commit comments

Comments
 (0)