Skip to content

Commit 208be95

Browse files
authored
Merge pull request #191 from cmsc430/fall-2025
Fall 2025
2 parents cce0433 + eff45eb commit 208be95

File tree

4 files changed

+40
-23
lines changed

4 files changed

+40
-23
lines changed

.github/workflows/push.yml

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
on:
22
- push
33

4+
name: Build and Deploy
5+
46
jobs:
5-
build-and-test:
7+
build:
68
runs-on: ubuntu-latest
79
steps:
810
- name: Checkout
@@ -15,12 +17,12 @@ jobs:
1517
sudo apt-get install fonts-stix
1618
sudo apt-get install libunistring-dev
1719
- name: Install Racket
18-
uses: Bogdanp/setup-racket@v1.11
20+
uses: Bogdanp/setup-racket@v1.14
1921
with:
2022
architecture: 'x64'
2123
distribution: 'full'
2224
variant: 'CS'
23-
version: '8.14'
25+
version: '8.18'
2426
- name: Install a86 and langs
2527
run: |
2628
git clone https://github.com/cmsc430/a86.git
@@ -33,13 +35,21 @@ jobs:
3335
# raco pkg install --auto www/
3436
raco make www/main.scrbl
3537
make -C www main
36-
- name: Archive www
38+
- name: Upload www for GitHub Pages
3739
uses: actions/upload-pages-artifact@v3
3840
with:
3941
name: github-pages
4042
path: www/main
41-
deploy:
42-
needs: build-and-test
43+
- name: Upload www as artifact
44+
uses: actions/upload-artifact@v4
45+
with:
46+
name: site-static
47+
path: www/main
48+
if-no-files-found: error
49+
retention-days: 7
50+
51+
deploy-github-pages:
52+
needs: build
4353
permissions:
4454
pages: write
4555
id-token: write

www/midterms/1.scrbl

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,14 @@
55

66
@title{Midterm 1}
77

8+
@(define prefix "m1-")
9+
810
@bold{Due: @m1-date 11:59PM}
911

1012
Midterm 1 will be released at least @midterm-hours hours prior to
1113
its due date.
1214

13-
@section{Practice}
15+
@section[#:tag-prefix prefix]{Practice}
1416

1517
There is a practice midterm available on ELMS. You may submit to the
1618
Practice Midterm 1 assignment on Gradescope to get feedback on your
@@ -19,7 +21,7 @@ level of feedback from the autograder. @bold{Make sure you do not
1921
submit your practice midterm solution for the real midterm! We will
2022
not allow late submissions if you submit the wrong work.}
2123

22-
@section{Instructions}
24+
@section[#:tag-prefix prefix]{Instructions}
2325

2426
The midterm will be released as a zip file on ELMS (see the
2527
description of Midterm 1 there for the link).
@@ -29,7 +31,7 @@ directory with a README and supplementary files. Read the README in
2931
each part for instructions on how to complete that part of the
3032
midterm.
3133

32-
@section{Communications}
34+
@section[#:tag-prefix prefix]{Communications}
3335

3436
If you have questions about the exam, send a @bold{private} message on
3537
@link[piazza]{Piazza}.
@@ -43,7 +45,7 @@ If you have trouble reaching the course staff via Piazza, email
4345
You may not communicate with anyone outside of the course staff about
4446
the midterm.
4547

46-
@section{Submissions}
48+
@section[#:tag-prefix prefix]{Submissions}
4749

4850
You should submit your work as a single zip file of this directory on
4951
Gradescope. Unlike past assignments, Gradescope will only do a basic

www/midterms/2.scrbl

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,14 @@
77

88
@title{Midterm 2}
99

10+
@(define prefix "m2-")
11+
1012
@bold{Due: @m2-date 11:59PM}
1113

1214
Midterm 2 will be released at least @midterm-hours hours prior to
1315
its due date.
1416

15-
@section{Practice}
17+
@section[#:tag-prefix prefix]{Practice}
1618

1719
There is a practice midterm available on ELMS. You may submit to the
1820
Practice Midterm 1 assignment on Gradescope to get feedback on your
@@ -21,7 +23,7 @@ level of feedback from the autograder. @bold{Make sure you do not
2123
submit your practice midterm solution for the real midterm! We will
2224
not allow late submissions if you submit the wrong work.}
2325

24-
@section{Instructions}
26+
@section[#:tag-prefix prefix]{Instructions}
2527

2628
The midterm will be released as a zip file on ELMS (see the
2729
description of Midterm 1 there for the link).
@@ -31,7 +33,7 @@ directory with a README and supplementary files. Read the README in
3133
each part for instructions on how to complete that part of the
3234
midterm.
3335

34-
@section{Communications}
36+
@section[#:tag-prefix prefix]{Communications}
3537

3638
If you have questions about the exam, send a @bold{private} message on
3739
@link[piazza]{Piazza}.
@@ -45,7 +47,7 @@ If you have trouble reaching the course staff via Piazza, email
4547
You may not communicate with anyone outside of the course staff about
4648
the midterm.
4749

48-
@section{Submissions}
50+
@section[#:tag-prefix prefix]{Submissions}
4951

5052
You should submit your work as a single zip file of this directory on
5153
Gradescope. Unlike past assignments, Gradescope will only do a basic

www/notes/abscond.scrbl

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,16 @@
3636

3737
@title[#:tag "Abscond"]{Abscond: a language of numbers}
3838

39-
@src-code["abscond"]
39+
@(define lang-name "abscond")
40+
@(define prefix (string-append lang-name "-"))
41+
42+
@src-code[lang-name]
4043

4144
@emph{Let's Make a Programming Language!}
4245

4346
@table-of-contents[]
4447

45-
@section{Overview}
48+
@section[#:tag-prefix prefix]{Overview}
4649

4750
A compiler is just one (optional!) component of a @emph{programming
4851
language}. So if you want to make a compiler, you must first settle
@@ -96,7 +99,7 @@ To begin, let's start with a dead simple programming language called
9699
literals. Running an abscond program just produces that integer.
97100
(Told you it was simple.)
98101

99-
@section{Concrete syntax for Abscond}
102+
@section[#:tag-prefix prefix]{Concrete syntax for Abscond}
100103

101104
We will simplify matters of syntax by using the Lisp
102105
notation of s-expression for the @bold{concrete} form of
@@ -153,7 +156,7 @@ line and then using the @racket[read] function to
153156
parse the concrete expression as an s-expression.
154157

155158

156-
@section{Abstract syntax for Abscond}
159+
@section[#:tag-prefix prefix]{Abstract syntax for Abscond}
157160

158161
While not terribly useful for a language as overly simplistic as Abscond, we use
159162
an AST datatype for representing expressions and another syntactic categories.
@@ -175,7 +178,7 @@ it is, otherwise it signals an error:
175178
(eval:error (parse #t))]
176179

177180

178-
@section{Meaning of Abscond programs}
181+
@section[#:tag-prefix prefix]{Meaning of Abscond programs}
179182

180183
The meaning of an Abscond program is simply the number itself. So
181184
@racket[(Lit 42)] evaluates to @racket[42].
@@ -267,7 +270,7 @@ operational semantics and an interpreter, which is (obviously)
267270
correct. Now let's write a compiler.
268271
}
269272

270-
@section{Toward a Compiler for Abscond}
273+
@section[#:tag-prefix prefix]{Toward a Compiler for Abscond}
271274

272275
A compiler, like an interpreter, is an implementation of a programming
273276
language. The key difference is that a compiler stages the work of
@@ -343,7 +346,7 @@ with an object file that contains @tt{entry} will produce an
343346
executable that, when run, will carry out the execution of an Abscond
344347
program.
345348

346-
@section{An Example}
349+
@section[#:tag-prefix prefix]{An Example}
347350

348351
Before trying to write the Abscond compiler, let's first make an
349352
example of what we would like the compiler to produce for a particular
@@ -408,7 +411,7 @@ We now have a working example. The remaining work will be to design a
408411
compiler that takes an Abscond program and emits a file like
409412
@tt{42.s}, but with the appropriate integer literal.
410413

411-
@section{A Compiler for Abscond}
414+
@section[#:tag-prefix prefix]{A Compiler for Abscond}
412415

413416
We will now write a compiler for Abscond. To heart of the compiler
414417
will be a function with the following signature:
@@ -510,7 +513,7 @@ Moreover, we can compare our compiled code to code compiled by Racket:
510513
"time -p racket 42.rkt"]
511514

512515

513-
@section{But is it @emph{Correct}?}
516+
@section[#:tag-prefix prefix]{But is it @emph{Correct}?}
514517

515518
At this point, we have a compiler for Abscond. But is it correct?
516519
What does that even mean, to be correct?

0 commit comments

Comments
 (0)