-
Notifications
You must be signed in to change notification settings - Fork 33
Expand file tree
/
Copy pathsyllabus.scrbl
More file actions
681 lines (519 loc) · 28.2 KB
/
syllabus.scrbl
File metadata and controls
681 lines (519 loc) · 28.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
#lang scribble/manual
@(require scribble/core
"defns.rkt")
@provide[exam-table]
@(define grades:m1 (list @elem{Midterm, @m1-date} "10%"))
@(define grades:f (list @elem{Final Exam, @final-date} "20%"))
@(define (make-grade-component-table . entries)
@tabular[#:style 'boxed
#:sep @hspace[1]
(list* (list @bold{Component} @bold{Percentage}) entries)])
@(define exam-table
@make-grade-component-table[
@grades:m1
@grades:f])
@title[#:style 'unnumbered]{Syllabus}
@local-table-of-contents[]
@section{Introduction to Compilers (@courseno)}
@bold{Term:} @string-titlecase[semester], @year
@bold{Professor:} @prof1 (@prof1-pronouns)
@bold{Email:} @prof1-email
@bold{Office Hours:} By appointment. Send email or ELMS message to set
up.
@bold{Credits:} 3
@bold{Course Dates:} From @start-date to @final-date
@bold{Lectures:}
@lecture-schedule1, @classroom1
@;{@bold{Lecture dates:} @lecture-dates}
@section{Course Description}
@;{
Have you wondered what @emph{really} happens when you compile and run
a program? Have you ever had dreams of making your own programming
language, but thought that seems hard or even... mystical? Like maybe
it involves a kind of wizard-level abilitiy that you don't have access
to, or perhaps even know about? Maybe the thought of making your own
programming language has never even occurred to you until reading this
just now. They have always seemed to be things given to you from on
high, right? Sure, you can choose from a bunch of existing options:
C, Rust, Java, PostScript, etc. But where did these choices come
from? How were they designed and built? And what if none of the
existing choices are quite what you want and you decide to strike out
on your own?
As you read this, your mind is maybe spawning a background process
asking itself, what would even be involved in making my own
programming language? What even is a programming language, if you
really think about it? What are they made of? Are they made of the
same stuff as other kinds of programs? Are they like the pedestrian
kind I learned to write in school:,the ones that shuffle lists or find
the shortest path between two vertices in a graph? If they are like
other programs, what are they written in? Some sort of programming
language ostensibly, but where did @emph{that} lanuage come from?
What's @emph{it} made of? Where's the bottom? Is there a bottom? I
thought I was just going to read a syllabus and now I've lost my
computational footing.
}
@courseno is an introduction to compilers. Its major goal is to arm
students with the ability to design, implement, and extend a
programming language. Throughout the course, students will design and
implement several related high-level programming languages, building
compilers that target the x86 CPU architecture.
The course assumes familiarity with a functional programming such as
OCaml from CMSC 330, and, to a lesser extent, imperative programming
in C and Assembly as covered in CMSC 216.
@bold{Prerequisite:} a grade of C or better in CMSC330; and permission
of department; or CMSC graduate student.
@section{Learning Outcomes}
After successfully completing this course, you will be able to:
@itemlist[
@item{Design a programming language.}
@item{Implement a high-level programming language via interpretation in a high-level programming language.}
@item{Implement a high-level programming language via compilation into a low-level programming language.}
@item{Define and test a compiler's correctness.}
@item{Analyze language design choices.}
@item{Evaluate language implementation choices.}
@item{Evolve a large software artifact with complex invariants and specifications.}
]
@section{Topics}
The following list of lecture topics will vary according to the pace
of the course:
@itemlist[
@item{Overview of compilation}
@;item{Operational semantics}
@item{Interpreters}
@item{Intermediate representations and bytecode}
@item{Code generation}
@item{Run-time systems}
@item{Garbage collection}
@item{Type systems, type soundness, type inference}
@item{Register allocation and optimization}
@item{Language design}
@item{Advanced topics in compilation}]
@;section{Required Resources}
@section{Course Structure}
The course will consist of in-person lectures, which will be recorded
and available on ELMS immediately after each lecture. There are two
midterms, a final project, which counts as the final assessment for
the class, several assignments, and several quizes and surveys.
Midterms are take-home exams and completed online over a
@|midterm-hours|-hour period.
@section{Tips for Success in this Course}
@itemlist[#:style 'numbered
@item{@bold{Participate.} Engage deeply, ask questions, and talk about
the course content with your classmates. You can learn a great deal
from discussing ideas and perspectives with your peers and
professor. Participation can also help you articulate your thoughts
and develop critical thinking skills.}
@item{@bold{Stay current.} This is a deeply cumulative class. If you
fall behind it will be challenging to get back on track. The moment
you disconnect with the material, seek help (from TAs, classmates,
prof, etc.).}
@item{@bold{Go slow; you'll get there faster.} You will be asked to
implement several parts of a compiler. The code will not be large,
but it will require thought and precision. You will be served well to
make sure you know the material and have a clear idea of what you
intend to do before you start doing it. The other path is pain.}
@item{@bold{Start early.} Thinking requires time and can't be rushed,
but if you spend the time thinking, it will ultimately be a huge time
saver. This means you have to start thinking early, which means
starting early.}
@item{@bold{Submit often.} Things happen. Life goes sideways. Make
sure you submit your work as you go, as often as you can.}
@item{@bold{Bring your curiosity.} The study of programming languages
is rooted in logic, philosophy, computation, algorithms, optimization,
and design. If you approach it with an open and curious mind, it will
be rewarding.}
]
@section{Policies and Resources for Undergraduate Courses}
It is our shared responsibility to know and abide by the University of
Maryland's policies that relate to all courses, which include topics
like:
@itemlist[
@item{Academic integrity}
@item{Student and instructor conduct}
@item{Accessibility and accommodations}
@item{Attendance and excused absences}
@item{Grades and appeals}
@item{Copyright and intellectual property}
]
Please visit the
@link["https://www.ugst.umd.edu/courserelatedpolicies.html"]{Office of
Undergraduate Studies' full list of campus-wide policies} and follow
up with the course staff if you have questions.
@section{Course Guidelines}
@bold{Names/Pronouns and Self-Identifications:} The University of
Maryland recognizes the importance of a diverse student body, and we
are committed to fostering inclusive and equitable classroom
environments. We invite you, if you wish, to tell us how you want to
be referred to in this class, both in terms of your name and your
pronouns (he/him, she/her, they/them, etc.). Keep in mind that the
pronouns someone uses are not necessarily indicative of their gender
identity. Visit @link["https://trans.umd.edu"]{https://trans.umd.edu}
to learn more.
Additionally, it is your choice whether to disclose how you identify
in terms of your gender, race, class, sexuality, religion, and
dis/ability, among all aspects of your identity (e.g., should it come
up in classroom conversation about our experiences and perspectives)
and should be self-identified, not presumed or imposed. Course staff
will do their best to address and refer to all students accordingly,
and we ask you to do the same for all of your fellow Terps.
@bold{Communication with Instructor:}
Email: If you need to reach out and communicate with @prof1,
please email at @|prof1-email|. Please DO NOT email
questions that are easily found in the syllabus or on ELMS (i.e. When
is this assignment due? How much is it worth? etc.) but please DO
reach out about personal, academic, and intellectual
concerns/questions.
ELMS: IMPORTANT announcements will be sent via ELMS messaging. You
must make sure that your email & announcement notifications (including
changes in assignments and/or due dates) are enabled in ELMS so you do
not miss any messages. You are responsible for checking your email
and Canvas/ELMS inbox with regular frequency.
@bold{Communication with Peers:}
With a diversity of perspectives and experience, we may find ourselves
in disagreement and/or debate with one another. As such, it is
important that we agree to conduct ourselves in a professional manner
and that we work together to foster and preserve a virtual classroom
environment in which we can respectfully discuss and deliberate
controversial questions. We encourage you to confidently exercise your
right to free speech—bearing in mind, of course, that you will be
expected to craft and defend arguments that support your
position. Keep in mind, that free speech has its limit and this course
is NOT the space for hate speech, harassment, and derogatory
language. We will make every reasonable attempt to create an
atmosphere in which each student feels comfortable voicing their
argument without fear of being personally attacked, mocked, demeaned,
or devalued.
Any behavior (including harassment, sexual harassment, and racially
and/or culturally derogatory language) that threatens this atmosphere
will not be tolerated. Please alert the instructor immediately if you
feel threatened, dismissed, or silenced at any point during the
semester and/or if your engagement in discussion has been in some way
hindered by the learning environment.
@;{section{Office Hours}}
@;{TA office hours will be held online and in-person. Details TBD.}
@;{Please make sure that you fill out
@link["https://docs.google.com/spreadsheets/d/1sDCpekBHIGjVSuGDsabPb74wZ5nHA_sTLvIPOzTUQ4k/edit?usp=sharing"]{
this sheet} so that we can make sure that everyone is being heard. If office
hours end and your issue wasn't addressed, we will reach out to you to make
sure you get time with staff.
Additionally, the benefit of registering on the sheet is that when topics come
up repeatedly, the staff can make an announcement that addresses the concern
for the entire class. Lastly, it helps the course staff keep an eye on what
topics might need more attention.}
@;{The discord server is there for you to organize as a class, ask questions of
each other, and to get help from staff. Its main purpose is as a vehicle for
office hours. That said, feel free to use the discord for discussion. I (@prof-initials)
will check periodically, but if you would like to ask a question directly to
the course staff, office hours and email remain the prioritized forms of
communication.
There is a channel '#course-discussion' that is meant for
discussion/questions/help regarding the material of the course, make sure that
you keep that channel free from noise so that other students and course staff
can easily see what issues are being brought up.}
@section{Grades}
All assessment scores will be posted on the course
@link[elms-url]{ELMS} page.
Late work will not be accepted for course credit so please plan to
have it submitted well before the scheduled deadline.
Any formal grade disputes must be submitted in writing and within one
week of receiving the grade. Final letter grades are assigned based
on the percentage of total assessment points earned. To be fair to
everyone I have to establish clear standards and apply them
consistently, so please understand that being close to a cutoff is not
the same as making the cut (89.99 ≠ 90.00). It would be unethical to
make exceptions for some and not others.
Your final course grade will be determined according to the following
percentages:
@make-grade-component-table[
(list "Assignments" "45%")
(list @elem{Quizzes & surveys} "15%")
(list "Midterms (2)" "25%")
(list "Final project" "15%")]
Final letter grades are assigned following this grading scheme:
@tabular[#:style 'boxed @;#:sep @;"|" @;@hspace[1]
(list (list "A+" "[100,97]" "B+" "(90,87]" "C+" "(80,77]" "D+" "(70,67]" " " " ")
(list "A" "(97,94]" "B" "(87,84]" "C" "(77,74]" "D" "(67,64]" "F" "(60,0]")
(list "A-" "(94,90]" "B-" "(84,80]" "C-" "(74,70]" "D-" "(64,60]" " " " "))]
This table uses interval notation, so "(@math{x},@math{y}]" means any
number less than @math{x} and greater than or equal to @math{y}.
@section[#:tag "syllabus-videos"]{Videos}
Lectures will be recorded and posted to ELMS shortly after every
class. There are also prepared videos available covering the
material. These videos will be made available as the course
progresses. If there is ever any issue with accessing these videos,
let the instructor know as soon as possible.
@section[#:tag "syllabus-assignments"]{Assignments}
There will be several programming @secref{Assignments}, often with a
full week given for completion and submission (e.g. if it assigned on
a Tuesday it will be due the following Tuesday at 11:59pm EST unless
otherwise noted). Assignments will be submitted through
@link[gradescope]{Gradescope}.
@section[#:tag "syllabus-quiz"]{Quizzes & surveys}
There will be @bold{many} quizzes and surveys. These will be administered
through ELMS. Completed surveys receive full credit. Instructors reserve the
right to reject survey responses that are not considered thoughtful.
@section[#:tag "syllabus-midterms"]{Midterms}
There will be two @secref{Midterms}, which will be @bold{take-home}
exams. Exams will be distributed at least @|midterm-hours| hours
before the due date of the midterm.
@itemlist[
@item{Midterm 1: @bold{@m1-date}}
@item{Midterm 2: @bold{@m2-date}}
]
@section[#:tag "syllabus-project"]{Project}
There will be a course @secref{Project} that will be assessed during
the final exam period for the course:
@itemlist[
@item{Final Project Assessment: @bold{@final-date}}
]
The project description will be distributed approximately 3 weeks
before the due date.
@section{Computing Resources}
Programming projects can be developed on your own system and subitted
via @link[gradescope]{Gradescope}, which will provide virtual machines
suitably configured for running your code. All project submissions
@bold{must} work correctly on the Gradescope VMs, and your projects
will be graded solely based on their results on those
machines. Because language and library versions may vary with the
installation, in unfortunate circumstances a program might work
perfectly on your system but not work at all on the VMs. Thus we
strongly recommend that as you develop any project, you should run it
@bold{several days early} on Gradescope to have time to address any
compatibility problems.
@section{Outside-of-class communication with course staff}
Course staff will interact with students outside of class in primarily
two ways: office hours, and electronically via e-mail. The use of
@link[piazza]{Piazza} and/or other classroom forums is allowed, and
discussion amongst the students is encouraged, as long as the discuss
is @italic{about the concepts} and not @italic{the solutions}. @;{The
majority of communication should be via office hours.}
Personalized assistance, e.g., with assignments or exam preparation,
will be provided during office hours. Office hours for the
instructional staff will be posted on the course web page.
Additional assistance will provided via discussion on
@link[piazza]{Piazza}. You may use this forum to ask general
questions of interest to the class as a whole, e.g., administrative
issues or problem set clarification questions. The course staff will
monitor it on a daily basis, but do not expect immediate answers to
questions. Please do not post publicly any information that would
violate the university academic integrity policy (e.g., problem set
code).
@;{Discord allows students to send private questions that are only
visible to instructors. Please use this feature if you wish to ask
specific questions concerning your assignment solutions.}
Personal e-mail to TAs should be reserved for issues
that cannot be handled by the above methods.
Important announcements will be made in class or on the class web
page, and via Piazza.
@section{Excused Absences}
Any student who needs to be excused for an absence from a single
lecture or lab due to illness shall:
@itemlist[#:style 'numbered
@item{Make a reasonable attempt to inform the instructor of his/her
illness prior to the class.}
@item{Upon returning to the class, present their instructor with a
self-signed note attesting to the date of their illness. Each note
must contain an acknowledgment by the student that the information
provided is true and correct. Providing false information to
University officials is prohibited under Part 9(h) of the Code of
Student Conduct (V-1.00(B) University of Maryland Code of Student
Conduct) and may result in disciplinary action.}
]
Missing an @bold{exam} for reasons such as illness, religious
observance, participation in required university activities, or family
or personal emergency (such as a serious automobile accident or close
relative's funeral) will be excused so long as the absence is
requested in writing at least @bold{2 days} in advance and the student
includes documentation that shows the absence qualifies as excused;
@bold{a self-signed note} is not sufficient as exams are Major
Scheduled Grading Events. For this class, such events are the final
project assessment and midterms, which will be due on the following
dates:
@itemlist[
@item{Midterm 1: @bold{@m1-date}}
@item{Midterm 2: @bold{@m2-date}}
@item{Final Project Assessment: @bold{@final-date}}]
The final exam is scheduled according to the University Registrar.
For medical absences, you must furnish documentation from the health
care professional who treated you. This documentation must verify
dates of treatment and indicate the timeframe that the student was
unable to meet academic responsibilities. In addition, it must contain
the name and phone number of the medical service provider to be used
if verification is needed. No diagnostic information will ever be
requested. Note that simply being seen by a health care professional
does not constitute an excused absence; it must be clear that you were
unable to perform your academic duties.
It is the University's policy to provide accommodations for students
with religious observances conflicting with exams, but it is the your
responsibility to inform the instructor in advance of intended
religious observances. If you have a conflict with one of the planned
exams, you @bold{must} inform the instructor prior to the end of the
first two weeks of the class.
For missed exams due to excused absences, the instructor will arrange
a makeup exam. If you might miss an exam for any other reason other
than those above, you must contact the instructor @bold{in advance} to
discuss the circumstances. We are not obligated to offer a substitute
assignment or to provide a makeup exam unless the failure to perform
was due to an excused absence.
The policies for excused absences @bold{do not} apply to project
assignments. Projects will be assigned with sufficient time to be
completed by students who have a reasonable understanding of the
necessary material and begin promptly. In cases of @bold{extremely
serious} documented illness of @bold{lengthy duration} or other
protracted, severe emergency situations, the instructor may consider
extensions on project assignments, depending upon the specific
circumstances.
Besides the policies in this syllabus, the University's policies apply
during the semester. Various policies that may be relevant appear in
the @link["http://www.umd.edu/catalog"]{Undergraduate Catalog}.
If you experience difficulty during the semester keeping up with the
academic demands of your courses, you may consider contacting the
Learning Assistance Service in 2201 Shoemaker Building at (301)
314-7693. Their educational counselors can help with time management
issues, reading, note-taking, and exam preparation skills.
@section{Students with Disabilities}
Students with disabilities who have been certified by Disability
Support Services as needing any type of special accommodations should
see the instructor as soon as possible during the schedule adjustment
period (the first two weeks of class). Please provide DSS's letter of
accommodation to the instructor at that time.
All arrangements for exam accommodations as a result of disability
@bold{must} be made and arranged with the instructor @bold{at least}
three business days prior to the exam date; later requests (including
retroactive ones) will be refused.
@section{Academic Integrity}
The Campus Senate has adopted a policy asking students to include the
following statement on each examination or assignment in every course:
"I pledge on my honor that I have not given or received any
unauthorized assistance on this examination (or assignment)."
Consequently, you will be requested to include this pledge on each
exam and assignment. Please also carefully read the Office of Information
Technology's @link["http://www.nethics.umd.edu/aup/"]{policy}
regarding acceptable use of computer accounts.
Assignments and projects are to be completed @bold{individually},
therefore cooperation with others or use of unauthorized materials on
assignment or projects is a violation of the University's Code of
Academic Integrity. Both the person receiving assistance @bold{and the
person providing assistance} are in violation of the honor
code. @bold{Any evidence} of this, or of unacceptable use of computer
accounts, use of unauthorized materials or cooperation on exams or
quizzes, or other possible violations of the Honor Code, @bold{will be
submitted} to the Student Honor Council, which could result in an XF
for the course, suspension, or expulsion.
@itemlist[
@item{For learning the course concepts, students are welcome to study
together or to receive help from anyone else. You may discuss with
others the assignment or project requirements, the features of the
programming languages used, what was discussed in class and in the
class web forum, and general syntax errors. Examples of questions that
would be allowed are "Does a cond expression always end with an
else-clause?" or "What does a 'mismatched parenthesis' error
indicate?", because they convey no information about the contents of an
assignment.}
@item{When it comes to actually writing an assignment, other than help
from the instructional staff, assignments must solely and entirely be
your own work. Working with another student or individual, or using
anyone else's work @bold{in any way} except as noted in this
paragraph, is a violation of the code of academic integrity and
@bold{will be reported} to the Honor Council. You may not discuss
design of any part of an assignment with anyone except the instructor
and teaching assistants. Examples of questions you may @bold{not} ask
others might be "How did you implement this part of the assignment?"
or "Please look at my code and help me find my stupid syntax
error!". You may not use any disallowed source of information in
creating either the design or code. When writing assignment you are
free to use ideas or @bold{short fragments} of code from
@bold{published} textbooks or @bold{publicly available} information,
but the specific source must be cited in a comment in the relevant
section of the program. }
]
@bold{AI tool disclosure:} If a student chooses to use an AI tool to
assist in any course work (e.g. assignments, programs, projects,
reports, etc), they must disclose this information to the
instructor. This disclosure should include the name of the AI tool and
explain how it was used.
Failure to adhere to this policy may result in a zero on the
particular course work where the AI tool is used. In addition the
university honor code is applicable here: violation of the honor code
and appropriate action will be enforced.
@bold{Violations of the Code of Academic Integrity may include, but
are not limited to:}
@itemlist[
@item{Failing to do all or any of the work on a project by yourself,
other than assistance from the instructional staff.}
@item{Using any ideas or any part of another person's project, or copying any other individual's work in any way.}
@item{Giving any parts or ideas from your project, including test
data, to another student.}
@item{Allowing any other students access to your program on any
computer system.}
@item{Posting solutions to your projects to publicly-accessible sites,
e.g., on github.}
@item{Transferring any part of an assignment or project to or from another
student or individual by any means, electronic or otherwise.}]
If you have any question about a particular situation or source then
consult with the instructors in advance. Should you have difficulty
with a programming assignment you should @bold{see the instructional
staff in office hours}, and not solicit help from anyone else in
violation of these rules.
@bold{It is the responsibility, under the honor policy, of anyone who
suspects an incident of academic dishonesty has occurred to report it
to their instructor, or directly to the Honor Council.}
Every semester the department has discovered a number of students
attempting to cheat on assignments, in violation of academic integrity
requirements. Students' academic careers have been significantly
affected by a decision to cheat. Think about whether you want to join
them before contemplating cheating, or before helping a friend to
cheat.
You may not share, discuss, or compare assignment solutions even after
they have been graded since later assignments may build upon earlier
solutions.
@;{
You are welcome and encouraged to study and compare or discuss their
implementations of the assignment with any others after they are
graded, @bold{provided that} all of the students in question have
received nonzero scores for that assignment, and if that assignment
will not be extended upon in a later assignment.
}
@section{Course Evaluations}
If you have a suggestion for improving this class, don't hesitate to
tell the instructor or TAs during the semester. You may submit
feedback anonymously using this @link[feedback]{form}. If you are
uncomfortable contacting the instructor or if issues are not addressed
to your satisfaction, you may use the
@link["https://www.cs.umd.edu/classconcern"]{CS Class Concern Form}.
At the end of the semester, please provide your feedback using the
campus-wide @link["https://www.courseevalum.umd.edu/"]{Student
Feedback on Course Experiences} system. Your comments will help make
this class better.
@section{Mandatory Reporting of Disclosures of Inappropriate Behavior}
Instructors and teaching assistants are designated as Responsible
University Employees by the University and are required to to promptly
notify the Title IX Coordinator when they become aware of any type of
sexual misconduct. @bold{They are not confidential resources.}
If you wish to speak with someone confidentially, please contact one
of UMD's confidential resources, such as CARE to Stop Violence
(located on the Ground Floor of the Health Center) at 301-741-3442 or
the Counseling Center (located at the Shoemaker Building) at
301-314-7651.
You may also seek assistance or supportive measures from UMD's Title
IX Coordinator, Angela Nastase, by calling 301-405-1142, or emailing
titleIXcoordinator@"@"umd.edu. To view further information on the above,
please visit the Office of Civil Rights and Sexual Misconduct’s
website at @link["https://ocrsm.umd.edu/"]{ocrsm.umd.edu}.
@section{Right to Change Information}
Although every effort has been made to be complete and accurate,
unforeseen circumstances arising during the semester could require the
adjustment of any material given here. Consequently, given due notice
to students, the instructors reserve the right to change any
information on this syllabus or in other course materials. Such
changes will be announced and prominently displayed at the top of the
syllabus.
@section{Acknowledgments}
Portions of the course materials are based on material developed by
Ranjit Jhala and Joe Gibbs Politz.
We gratefully acknowledge the work of past CMSC 430 TAs Kaylan
Bhetwal, William Chung, Pierce Darragh, Justin Frank, Vyas Gupta,
Sankha Narayan Guria, Tasnim Kabir, John Kastner, Yiyun Liu, Dhruv
Maniktala, Christopher Maxey, Caspar Popova, Deena Postol, Ivan
Quiles-Rodriguez, Benjamin Quiring, Temur Saidkhodjaev, Emma Shroyer,
Matvey Stepanov, Alex Taber, Kazi Tasnim Zinat.