CS 421: Programming Languages and Compilers
Objectives
Students taking this course can expect to be able to:
  • Program in a functional programming language
  • Understand the evaluation of programs in a functional programming language
  • Write a type checker / type inferencer given a formal type system
  • Write a lexer, and a parser using recursive-descent parsing, or a parser-generator
  • 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

Class and Exam Attendance
  • Attendance in CS 421 is expected, and the student accepts that work done in the class period or a proctored examination may only be made up because of a reason outlined in the student code in Section 1-501 d-f, or because of illness immediately affecting the day of absence, with notification being given to the instructor before the class or examination, or as soon as possible afterwards if the illness is serious enough to have reasonably prevented earlier contact.
  • In-class quizzes may be rescheduled for two weeks (14 days) after the original date of the exam, if the absence has been excused. All other work missed as a result of an excused absence must be made up with three (3) business days of the missed class for in-class events unless a letter of absence from the Student Assistance Center is provided and indicates a reason for absence of a greater period of time. In the case of a prolonged absence, as documented in an absence letter, work must be made up within three (3) business days of the end of documented need for absence.
  • When a quiz or exam is held in the CBTF, students are required to register for the event before the testing period opens. Failure to do so will not automatically grant the right to a make-up.
  • Reasons that do not count as a conflict, but as the student's personal choice not requiring consideration include
    • Travel, except as part of a University sponsored event.
    • Family visits, whether the student travels to their family or their family travels to them.
      • Travel because of a family emergency should be discussed with the instructor to determine what accommodation is possible.
    • Appointments that could reasonably be scheduled/rescheduled not to conflict with the class period.
    • Reasons listed in 1-501.d.6.(i)-(iii), and for other reasons which do not satisfy the standard of significant and compelling, as determined by the course instructor.
  • Requests for personnal accommodation may be considered, but they will be handled in as uniform a manner as the circumstances allow. Requests must be made at least one week in advance of the date of the desired absence, unless clearly not possible by the circumstances of the reason for the request.

Contacting the Course Staff
  • For email and Campuswire please allow about 24 or so hours for a response, except on weekends (see below).
  • The staff do not work on the weekends. If you send or post something late Friday or over the weekend then you should not expect a reply before Monday.

Quiz and Exam Policies
  • This course uses the Grainger College of Engineering’s Computer-Based Testing Facility for its Midterm exams.
  • The quizzes and Final will be in PraireLearn through PrairieTest in class using the student's computer.
  • The policies of the CBTF are the policies of this course, and academic integrity infractions related to the CBTF are infractions in this course. This includes examinations given in the CBTF and those given in other setting such as the classroom.
  • If you have accommodations identified by the Division of Rehabilitation-Education Services (DRES) (http://www.disability.illinois.edu/) for exams, please submit your Letter of Accommodations (LOA) through the CBTF website ( https://cbtf.illinois.edu/students/dres ) and by email to the instructor as soon as possible. It can take up to five days for your LOA to be processed by the CBTF and if you make a reservation before your LOA has been processed, your reservation will not include your testing accommodations and you will be required to reschedule. This must be done each semester you use the CBTF.
  • If you have any issue during an exam, inform the proctor immediately. Work with the proctor to resolve the issue at the time before logging off. If you do not inform a proctor of a problem during the test then you forfeit all rights to addressing the problem you experienced during your exam.
  • Take the CBTF Orientation ( https://go.illinois.edu/student-orientation ) (10 minutes) and review all instructions on the CBTF website ( https://cbtf.illinois.edu/students ) before your first exam.

Doing and Submitting Coding Questions on Assignments and Quizzes and Exams

All work submitted for credit this semester is submitted through PrairieLearn. Please go to prairielearn.com and enroll in CS 421, if you have not already done so.

This semester, there are two kinds of assignments in this course: machine problems (MPs), and web assignments (WAs). Six of the MPs will be submitted for credit in their entirety in PrairieLearn as MPs. On the other five, credit will be received by taking an in-class quiz on them instead. The quiz will be a selection of problems from the given MP.

The questions on the MPs are submitted as text files, one for each problem, with the file usually named after the code being implemented. WAs are calculational exercises, also submitted in PrairieLearn. Both types of questions may appear on Midterms and the Final.

For each problem in an MP or coding problem on an examination, you will be given in PrairieLearn a separate VSCode window, containing a directory (listed to the left), an editor (VSCode) with a window for opening the file for you to complete with the answer to the problem. That file typically will already contain a bit of starter code sufficient for you to begin testing your work. VSCode also has the ability for you to start a terminal window, which will open placing you in a directory (as listed on the left) with all the files you need to complete and test the assignment, and with full access to the compiler for OCaml, the programming language we will be using this semester.

Before submitting a coding question on a examination or an MP assignment, you MUST make sure that your answer to the coding question compiles with the student grading script supplied with the assignment or exam. You can do this by typing make in the terminal window and making sure that your are given a grade report with a list of tests run and whether they were passed, with the points earned for the student test suite. If your question fails to compile with the student grading script, your question submission will receive NO CREDIT. There will be no partial credit for coding questions that fail to compile.

You may do multiple commits of either the MPs or the WAs. Your best score will be your score for the assignment. Work submitted before the late deadline will not be subject to the late penalty, but work submitted after will.

Questions on quizzes and exams typically will only be allowed one submission. However, for coding questions, you will still be given the full VSCode environment to help you develop your answer. You may build and run the student grader as many times as you wish.


Extensions

Each MP/WA will normally have an automatic 48-hour extension with a penalty on that MP/WA that it is capped at 80% the total value of the assignment. If we cannot give such an extension for a particular MP/WA, for example due to scheduling constraints, we will announce that when the MP/WA is handed out.

During the automatic extension, staff is not obliged to answer questions for that MP/WA. You are on your own.

Extensions without a point penalty for the first 48 hours and any extension beyond the 48 hours will only be granted under very unusual circumstances such as a medical or family emergency. A signed note from a responsible party, or similar evidence, will be required. If you do need such an extension for some legitimate reason, do your best to let us know as soon as possible, preferably before the normal MP/WA deadline.


Regrade Policy

All grading is done automatically in PrairieLearn via algorithms that are fairly generic and in no way specialized to your code. A regrade for you will likely mean a regrade for the entire class. Requesting a regrade requires an explanation of why you believe your answer was incorrectly graded.

In order to have your regrade considered you must provide the following:

  • your netid;
  • which assignment or exam question was graded incorrectly; and
  • what evidence you have that your answer was incorrectly graded.

You must also submit your regrade request for a particular assignment within one week of receiving grades for that assignment . It must be submitted directly to the course instructor, not to the TAs. Late regrade requests will not be accepted or read.

Good reasons to ask for a regrade:

  • The grading was inconsistent with the description of how to do the problem given in class. Details need to be provided.
  • The grading was inconsistent with the problem statement. You must indicate what you believe the inconsistency to be.

Bad reasons to ask for a regrade:

  • Part of your answer "matched" the answer given in the solution. A partially correct answer is still wrong.
    "The difference between an almost right word and a right word is the difference between a lightning bug and lightning." -- Mark Twain
  • You wrote the right answer in VSCode. The answer submitted is the answer that counts, not work done in VSCode.
  • You expended a lot of effort answering the problem. We are measuring mastery, not effort.
  • You wrote something down.

Collaboration

You are allowed to collaborate on the machine problems (MPs) and the web assignments (WAs) of this course, in order to figure out how to solve the problem, resolve things you don't understand, and help each other track down errors or bugs. Nevertheless, you must each write and test your code separately and submit your own solution. Similarly, you must write up your own WA separately from others.

If your collaboration extended beyond understanding for what the problem was asking, then you should note on your assignment with whom you collaborated. As always, you are subject to the rules for plagiarism. Whether you pass this course or not will depend heavily on whether you pass the exams -- and those are non-collaborative.

We allow you to collaborate for several reasons:

  • substantial research done indicates that students learn more when they are allowed to work together;
  • our own ability to respond to student questions is increased because your peers are able to give help.

However, you have to collaborate intelligently in order to get the most out of it. If you ask a friend to describe the solution completely to you and then you write it down, you will get the credit but you'll fail the exam because you never learned the methods/techniques/concepts.

  • If you verbatim copy, or copy with name and whitespace changes, from a friend's solution or other source, wholly or substantially, if you cite, this is still violation of course policy and you will receive a zero on the assignment if it is determined such copying took place.
  • If you verbatim copy, or copy with only name and whitespace changes, from a friend's solution or other source, wholly or substantially, if you did not cite, or did not cite truthfully, that will be considered cheating.
  • If you work as a group, each writing part and sharing it with the others, that is also considered cheating, unless you cite all members from whom you copied. Again, it will be a violation of course policy if you copy verbatim or with only name and whitespace changes, even if you cite and you will risk losing all credit for the parts so copied.
  • If you copied your answer from a source on the internet, that is considered cheating, unless you both cite your source, and clearly indicate what was copied. If you cite, but copy verbatim or with only name and whitespace changes, again that is a course policy violation, and if determined, will result in the loss of credit for those parts so copied.

The penalties for being discovered cheating are described in the next section, below. If you offer your solution for others to copy, you should protect yourself from being accused of cheating by reporting this as well. Then, if some of those to whom you have lent your work fail to cite you, you will be protected from cheating accusations (unless they also claim they lent the same problem to you).

If you copy your solutions from friends or other sources, you must cite your source, and the degree and extent of copying. Also, to get credit, you must do your writing without direct copying.

Think of MPs and web assignments as being part of the practice for the exam. Many of the problems will be used as a basis for the exam problems themselves. In fact, when it comes time to study, we will likely advise you to redo your MPs and written assignments.


Policy on Cheating

We will be looking for cheating on both assignments and exams. The penalty for being caught cheating a first time -- either sharing your solution or copying anyone or anything else's solution on an exam, or copying anyone else's solution on an assignment without citation -- is that you will receive a negative score for the unit cheated on equal to the value of the unit . Having a cheat sheet of similar forbidden resource present during and exam or quiz will result in receiving a negative score on every question with content related to the forbidden resource.
An assignment (MP or web assignment) is one unit. A PrairieLearn question on a test, including all its parts, is one unit. The penalty if you are caught cheating a second time, after being informed of the first time, is a grade of F for the class. You should take all reasonable precautions to prevent others from cheating and report any suspected cheating.

All policies of the CBTF are the policies of this course, and academic integrity infractions related to the CBTF are infractions in this course. In particular

  • Utilizing a cellphone, smartwatch, or any other electronic device during an examination. These resources will be assumed to relate to all questions on the exam.
  • Having available during the exam or bringing into the CBTF external papers, index cards, scratch paper, Help Sheets, or any materials containing information related to the exam.
  • Accessing files, apps or internet resources other than a browser and PrairieLearn through PrairieTest during an examination.
  • Exiting the laboratory premises while in possession of used or unused scratch paper supplied by the CBTF. Similarly, when a quiz or exam is given in the classroom, exiting the classroom while in possession of used scratch paper supplied by the course staff with content related to the quiz or exam.
  • Initiating the examination before receiving authorization from the proctor.
  • Continuing to work on the exam even after the designated end time has been announced.
  • Engaging in any other activities that contravene the guidelines outlined for 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. Read the Code at the following URL: http://studentcode.illinois.edu/ .

Academic dishonesty may result in a failing grade. Every student is expected to review and abide by the Academic Integrity Policy: https://studentcode.illinois.edu/article1/part4/1-401/ . 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.


Grading

All grading is done automatically in PrairieLearn, and you will receive your results for each problem when you press the Save & Grade button. You can see the scores of all past assessments in the PrairieLearn gradebook.

It should be noted, however, that the value for WAs and for MPs submitted as MPs, not quizzes, is the number of points assigned in PrairieLearn; they are not all valued equally. The score tells you the percentage of the points you received, but you will need to refer back to the assignment itself to view how many points it was worth. There seems to be no way to make PrairieLearn report points rather than scores in the gradebrook. The contribution of the MPs and WAs is the number points earned cumulatively for all MPs and WAs divided by the total points possible, times the percentage of the course the MPs and WAs combined are worth (10% for 3 credit students, and 7.5% for 4 credit students).

Below is a table giving the percentage each major category of work in the class contributes to the final grade.

Grading Breakdown
Work Weight (3cr) Weight (4cr)
Machine Problems, and
Web Assignments (combined)
10% 7.5%
Quizzes10%7.5%
Midterm 115%11.25%
Midterm 215%11.25%
Midterm 315%11.25%
Final Exam35%26.25%
ProjectNA25%


Grading Scale
Grade If your overall
score is at least
A+100%
A93%
A-90%
B+87%
B83%
B-80%
C+77%
C73%
C-70%
D+67%
D63%
D-60%

Textbooks
There is no required textbook for this course. However, the following textbooks are recommended reading: (see also the resources page)
  • The Objective Caml system, release 3.12 Documentation and user's manual by Xavier Leroy (with Damien Doligez, Jacques Garrigue, Didier Rémy and Jérôme Vouillon), from the official INRIA website for OCAML.
  • an online book about OCaml from CalTech.
  • Modern Compiler Implementation in ML by Andrew Appel. Published by Cambridge University Press. ISBN 0-521-60764-7 (paperback).
  • Compilers: Principles, Techniques, and Tools, also known as "The Dragon Book"; by Aho, Sethi, and Ullman. Published by Addison-Wesley. ISBN: 0-201-10088-6.
  • Essentials of Programming Languages, 2nd Edition; by Friedman, Wand, and Haynes. Published by MIT Press 2001. ISBN: 0-262-06217-8.
  • Advanced Programming Language Design, by Raphael A. Finkel. Addison Wesley Publishing Company, 1996.
  • Programming Language Pragmatics, by Michael L. Scott. Morgan Kaufman Publishers, 2000.
  • Concepts, Techniques, and Models of Computer Programming Peter Van Roy and Seif Haridi, MIT Press, 2004 ISBN 0-262-22069-5


Mental Health Assistance
Significant stress, mood changes, excessive worry, substance/alcohol misuse or interferences in eating or sleep can have an impact on 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 which are covered through the Student Health Fee. 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
  • McKinley Health Center (217) 333-2700
  • National Suicide Prevention Lifeline (800) 273-8255
  • Rosecrance Crisis Line (217) 359-4141 (available 24/7, 365 days a year)
If you are in immediate danger, call 911.
  • This statement is approved by the University of Illinois Counseling Center

Caring Community

As members of the Illinois community, we each have a responsibility to express care and concern for one another. If you come across a classmate whose behavior concerns you, whether in regards to their well-being or yours, we encourage you to refer this behavior to the Student Assistance Center (217-333-0050 or http://odos.illinois.edu/community-of-care/referral/ ). Based on your report, the staff in the Student Assistance Center reaches out to students to make sure they have the support they need to be healthy and safe.

Further, we want to support you in your overall wellness. We know that students sometimes face challenges that can impact academic performance (examples include mental health concerns, food insecurity, homelessness, personal emergencies). Should you find that you are managing such a challenge and that it is interfering with your coursework, you are encouraged to contact the Student Assistance Center (SAC) in the Office of the Dean of Students for support and referrals to campus and/or community resources.


Inclusive Community

The effectiveness of this course depends on each of us contributing to a safe and encouraging learning environment that allows for the open exchange of ideas while also ensuring equitable opportunities and respect for all of us. Everyone is expected to help establish and maintain an environment where students, staff, and faculty can contribute without fear of personal ridicule, or intolerant or offensive language. If you witness or experience racism, discrimination, micro-aggressions, or other offensive behavior, you are encouraged to bring this to the attention of the course instructor, if you feel comfortable. You can also report these behaviors to Campus Belonging Resources ( https://diversity.illinois.edu/diversity-campus-culture/belonging-resources/ ). Based on your report, Members of the Office of the Vice Chancellor for Diversity, Equity & Inclusion staff will follow up and reach out to students to make sure they have the support they need to be healthy and safe. If the reported behavior also violates university policy, staff in the Office for Student Conflict Resolution may respond as well and will take appropriate action.


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 and provide the instructor with a Letter of Academic Accommodations from Disability Resources and Educational Services (DRES). To ensure that disability-related concerns are properly addressed from the beginning, students with disabilities who require assistance to participate in this class should apply for services with 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 217-333-1970, e-mail disability@illinois.edu or visit the DRES website at http://www.disability.illinois.edu/. Here is the direct link to apply for services at DRES, https://www.disability.illinois.edu/applying-services.


Disruptive Behavior

Behavior that persistently or grossly interferes with classroom activities is considered disruptive behavior and may be subject to disciplinary action. Such behavior inhibits other students’ ability to learn and an instructor’s ability to teach. A student responsible for disruptive behavior may be required to leave class pending discussion and resolution of the problem and may be reported to the Office for Student Conflict Resolution ( https://conflictresolution.illinois.edu ; conflictresolution@illinois.edu ; 333-3680) for disciplinary action.


Emergency Response Recommendations

Emergency response recommendations and campus building floor plans can be found at the following website: https://police.illinois.edu/em/run-hide-fight/ . You are encouraged to review this website within the first 10 days of class.


Religious Observances
Illinois law requires the University to reasonably accommodate its students' religious beliefs, observances, and practices in regard to admissions, class attendance, and the scheduling of examinations and work requirements. Students should complete the Request for Accommodation for Religious Observances form should any instructors require an absence letter in order to manage the absence. In order to best facilitate planning and communication between students and faculty, students should make requests for absence letters as early as possible in the semester in which the request applies.

Sexual Misconduct Reporting Obligation

The University of Illinois is committed to combating sexual misconduct. Faculty and staff members are required to report any instances of sexual misconduct to the University’s Title IX and Disability Office. In turn, an individual with the Title IX and Disability Office will provide information about rights and options, including accommodations, support services, the campus disciplinary process, and law enforcement options.

A list of the designated University employees who, as counselors, confidential advisors, and medical professionals, do not have this reporting responsibility and can maintain confidentiality, can be found here: wecare.illinois.edu/resources/students/#confidential. Other information about resources and reporting is available here: wecare.illinois.edu.

README