Course Information
- Course Title: Programming Languages and Compilers
- Term: Summer 2026
- Dates: May 18 – August 7, 2026 (12 weeks)
- Format: 100% asynchronous online
- Instructor: Mattox Beckman
- Textbook: online (free) — see below
- Office Hours: see Office Hours Schedule
Official Description and Learning Goals
The instructor’s course goals are on the homepage, but here’s the university description of the course:
Structure of programming languages and their implementation. Basic language design principles; abstract data types; functional languages; type systems; object-oriented languages. Basics of lexing, parsing, syntax-directed translation, semantic analysis, and code generation.
Course information: 3 undergraduate hours. 3 or 4 graduate hours.
Prerequisite: CS 233 and CS 374.
Here are the official learning goals:
- Learn to program in a functional programming language
- Understand the evaluation of programs in a functional programming language
- Be able to write a type checker / type inferencer given a formal type system
- Be able to write a lexer and a parser using recursive-descent parsing
- Program translation: be able to write a syntax-directed translator from abstract syntax to intermediate representations
- Recognize and use major methods of specification of dynamic semantics
- Write an interpreter based on a formal operational semantics of the language
Textbook and Readings
We do not have an official textbook for the course. Many students have found the online book Learn You a Haskell for Great Good helpful for learning Haskell. Some weeks will have written notes prepared by the instructor, and a few weeks will have optional readings from research literature for students who want to dig deeper.
Format
This course is fully asynchronous. You will:
- Watch pre-recorded lecture videos on MediaSpace (linked from the Lecture Schedule).
- Complete weekly activities (homework-style practice problems on PrairieLearn).
- Complete six Machine Problems (programming assignments) on PrairieLearn.
- Take three midterm exams plus a retake final exam via ProctorU.
- Optionally, complete a 4-hour project (required for graduate students taking the course for 4 credit hours).
You should expect to invest somewhere between 12–16 hours per week, but individual timings vary greatly.
Assignments and Grading
Note that 4 credit hour students have an extra project they must complete. Most graduate students take this course for 4 hours; most undergraduates take it for 3 hours.
| Category | 3 Hour | 4 Hour |
|---|---|---|
| Activities | 15% | 12% |
| Machine Problems | 35% | 28% |
| Midterm Exams (3) | 50% | 40% |
| Final Project | n/a | 20% |
The final exam is a retake opportunity for mastery areas from the midterm exams; it does not have its own weight in the gradebook. See the Exam FAQ for details.
Activities
Activities are homework-style problem sets released each week. They reinforce the material covered in the lecture videos. Format varies — some are mathematical questions, some involve small programming exercises, some are conceptual.
- Activities are due one week after release.
- There is an automatic two-day extension at 80% credit.
- We drop the lowest three activity scores, so you have some breathing room for hectic weeks. Some activities late in the term (e.g., metaprogramming) are intended to be optional/enrichment material; the drops accommodate this.
- You may attempt each activity as many times as you like; your best score counts.
Machine Problems
There are six programming assignments, called Machine Problems (MPs). You are allowed to get help on the MPs, but you must cite your help.
- MPs are released on Mondays, due Sundays two weeks later.
- There is an automatic one-week extension at 80% credit after the due date.
- We drop the lowest MP score. Historically MP6 has a low completion rate; extra credit may be offered for completing it.
- See Your GitHub Repository for how to track your scores.
Exams
There are three midterm exams plus a retake final. Each exam is AI-proctored online through ProctorU and accessed via an LTI link on a separate PrairieLearn course instance (Su26-LTI).
Each exam is broken into mastery areas (also called “zones”). Each mastery area represents a specific learning goal and is weighted equally in your grade. A mastery area with 20 points and a mastery area with 10 points contribute the same to your final grade.
A practice version of each exam will be released one week before the exam window opens.
If you have accommodations identified by the Division of Rehabilitation-Education Services (DRES), email Mattox Beckman before your first exam so we can arrange the appropriate ProctorU accommodation.
See the Exam Schedule for dates and the Exam FAQ for the retake mechanics.
Final Exam
The final exam window (August 6–7) gives you a chance to retake mastery areas from the midterms. You may repeat any mastery area where you want to try to improve your score. If your retake score is higher, we use the new score; if lower, we keep the original. See the Exam FAQ for more.
4-Hour Project (Graduate Students)
If you are a graduate student taking the course for 4 hours, you need to complete a Project. This project is worth 20% of your grade. Details will be released on Friday of Week 4 (June 12, 2026). Most graduate students enrolled in CS 421 take it for 4 credit hours.
Late Policy / Missing Exams
Late submission windows are built into PrairieLearn.
- Activities: automatic 2-day extension at 80%.
- MPs: automatic 1-week extension at 80%.
- No submissions will be accepted after the last day of class (August 7, 2026). MP6 in particular is hard-capped at this date.
If you miss an exam, please email Mattox Beckman as soon as possible so we can make arrangements. If you have made a ProctorU reservation but realize you can’t keep it, please cancel it through ProctorU so the slot opens up for another student.
Code Efficiency
Unless stated otherwise, you should assume that code that does not compile, or code that is inefficient (in terms of time and space complexity), will not earn any points. We will not hand grade non-compiling code.
Regrade Requests
If there is an error in the grading of an assignment, please file an issue on Your GitHub Repository. Please assign the tag “regrade” and assign the issue to the instructor.
Once grades are released, you have one week to file regrade requests.
Grade Cutoffs
We use the standard 10-point per letter grade scale.
| Grade | Points |
|---|---|
| A+ | 97 |
| A | 93 |
| A- | 90 |
| B+ | 87 |
| B | 83 |
| B- | 80 |
| C+ | 77 |
| C | 73 |
| C- | 70 |
| D | 60 |
| F | 0 |
Undergraduates are encouraged to do the extra project as well. It will not affect your grade, but it will give me something to say if you happen to want a letter of recommendation later.
Note that we do not round up grades for any reason. In a class this size, there will always be plenty of students who are painfully close to the next cutoff. (I have been the highest scorer on the wrong side of a cutoff more than once, so I know how it feels.)
Code of Conduct
Our class (and life in general!) will work better if we maintain professionalism and respect for each other. We expect courteous and respectful communication at all times, as well as a commitment to integrity and honesty in your work.
Academic Integrity
The University of Illinois at Urbana-Champaign Student Code should also be considered as a part of this syllabus. Students should pay particular attention to Article 1, Part 4: Academic Integrity. Academic dishonesty may result in a failing grade. Every student is expected to review and abide by the academic integrity policy. Ignorance is not an excuse for any academic dishonesty. It is your responsibility to read this policy to avoid any misunderstanding. Do not hesitate to ask the instructor(s) if you are ever in doubt about what constitutes plagiarism, cheating, or any other breach of academic integrity.
Students with Disabilities
To obtain disability-related academic adjustments and/or auxiliary aids, students with disabilities must contact the course instructor as soon as possible. To ensure that disability-related concerns are properly addressed from the beginning, students with disabilities who require assistance to participate in this class should contact Disability Resources and Educational Services (DRES) and email the instructor as soon as possible. If you need accommodations for any sort of disability, please email me and we can arrange a meeting. DRES provides students with academic accommodations, access, and support services. To contact DRES you may visit 1207 S. Oak St., Champaign, call 333-4603 (v/tdd), or email disability@uiuc.edu.
Family Educational Rights and Privacy Act (FERPA)
Any student who has suppressed their directory information pursuant to the Family Educational Rights and Privacy Act (FERPA) should self-identify to the instructor to ensure protection of the privacy of their attendance in this course. See the FERPA site for more information.
Mental Health
Diminished mental health, including significant stress, mood changes, excessive worry, substance/alcohol abuse, or problems with eating and/or sleeping can interfere with optimal academic performance, social development, and emotional wellbeing. The University of Illinois offers a variety of confidential services including individual and group counseling, crisis intervention, psychiatric services, and specialized screenings at no additional cost. If you or someone you know experiences any of the above mental health concerns, it is strongly encouraged to contact or visit any of the University’s resources provided below. Getting help is a smart and courageous thing to do — for yourself and for those who care about you.
Counseling Center: 217-333-3704, 610 East John Street, Champaign, IL 61820
McKinley Health Center: 217-333-2700, 1109 South Lincoln Avenue, Urbana, IL 61801