Location and Times #

  • Course Title: Programming Languages and Compilers
  • Dates: January 26 to May 5th, 2021
  • Section B3 and B4 (CRN: 31375 and 31376)
    • Dates: Tuesday and Thursday
    • Time: 12:30–13:45
    • Location: Zoom
  • Section D3 and D4 (CRN: 48194 and 48195)
    • Dates: Tuesday and Thursday
    • Time: 15:30–16:45
    • Location: Zoom
  • Instructor: Mattox Beckman
  • Textbook: course notes
  • Office Hours: tba

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 a interpreter based on a formal operational semantics of the language

Assignments and Grading #

This course will use specifications grading (Nilson2015). The grade for this course will not be determined by total number of points, but by completing a required number of learning modules, and a required number of machine problems.

Learning Modules #

A learning module is a bundle of objectives (skills you should acquire) along with assessments that measure these skills.

  • Each learning module will typically contain four or five assessments.
  • Each assessment is graded pass/fail. An assessment is passing if your score is 80% of its points.
  • You will have more than one opportunity to complete each assessment.
  • To complete a learning module, you must obtain 80% of the points of the underlying assessments.

Machine Problems #

Typically there will be about six machine problems, called machine problems (MPs). they will be released approximately one every two weeks. You are allowed to get help on the machine problems, but you need to cite your help.

In-class Activities #

This class is an active learning / flipped lecture class. The intent is that you will watch a “pre-lecture video” before class, and then during class you will participate in a team activity. These activities are POGIL activities.

Attendance and participation in the team activities are strongly encouraged.

But… because the course is all online, time zone issues, and general pandemic-related stress, attendance is not required. We will post videos of the class interaction as we can (but note that sometimes technology betrays us and deletes a recording), but in our opinion you will receive a lot more value from the course is you can attend the activities rather than just watching them.

Web Assignments #

In addition to the written part that is done in class, there is an online part that tests the concepts you learned in class. You are allowed as many attempts as you need to solve the problems, and most activities will fulfill part of the associated learning module. You will have one week to complete them for full credit. After that, you will get only 80% of the point. (The implication is this: if it’s late, you will need to get everything right to fulfill the learning module requirements. You should be doing that anyway.)

Exams #

There will be three midterm exams and one final exam. The exams do not confer points, but each problem on the exam will fulfill part of a mastery area. Each of these mastery area components will appear again on the final exam, which gives you a “second chance” if you need it: If you have already gotten credit for an area, you may ignore it on the final exam without penalty. If you did not get credit on an area from taking the midterm, you can still get credit by doing that problem on the final. This also means that the entire final exam is optional if you have already obtained the grade you want.

One week before an exam, we will provide a practice exam that follows the same format for your studying pleasure.

This course uses the college of engineering computer-based testing facility (CBTF) for its exams. The policies of the CBTF are the policies of this course, and academic integrity infractions related to the CBTF are infractions in this course.

If you have accommodations identified by the division of rehabilitation-education services (DRES) for exams, please take your letter of accommodation (LOA) to the CBTF proctors in person before you make your first exam reservation. The proctors will advise you as to whether the CBTF provides your accommodations or whether you will need to make other arrangements with your instructor.

Any problem with testing in the CBTF must be reported to CBTF staff at the time the problem occurs. If you do not inform a proctor of a problem during the test then you forfeit all rights to redress.

4th Hour Project #

If you are a graduate student taking the course for 4 hours, then you need to complete a project. The project does not confer a grade, but if you do not do a satisfactory job on it you will lose a letter grade.

Late Policy / Missing Exams #

Late submissions are built into PrairieLearn. For machine problems, you will have one week to turn it it for 80% credit. For activities, you will have until the end of the semester, also for 80% credit.

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 request 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 any regrade requests.

Grade Cutoffs #

We will determine your grade based on how many of the 20 learning modules and 6 MPs you complete.

Grade Learning Modules MPs
A 18 6
B 16 5
C 14 4
D 10 3

If you complete more MPs than are required for your grade, or enough learning modules for the next higher grade, we will give you a + grade. E.g., if you did 16 learning modules but all 6 MPs, you would get a B+. Similarly if you completed 18 learning modules but only 5 MPs.

To get an A+, you must complete all 20 learning modules and all 6 MPs.

As explained above, 4 credit hour students must also complete the project or else lose a letter grade.

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.

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 insure 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 see the instructor as soon as possible. If you need accommodations for any sort of disability, please speak to me after class, or make an appointment to see me, or see me during my office hours. 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 e-mail a message to

Emergency Response Recommendations #

The university police have posted some emergency response recommendations. I encourage you to review this website and the campus building floor plans website within the first 10 days of class.

Of course, since we’re all online, your classroom is likely your living space. Have you considered making a fire safety plan with your family or roommates?

Family Educational Rights and Privacy Act (FERPA) #

Any student who has suppressed their directory information pursuant to 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, Illinois 61801