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
Typically there will be between six and eight programming assignments, called machine problems (MPs). They will be released approximately one every week. They are not graded per se; instead your learning from doing the MP will be tested in the computer based testing center with an exam called a Machine Lab (ML). Typically, you will be given a partial solution to the MP and asked to complete it. So, the ML is what determines your grade for what you did on the MP.
The machine labs will account for 15% of your grade.
There will also be in-class assignments / activities. These will have two parts. A written part that is done in class, and an online part that tests the concepts of the written part. These will be mastery based: you can keep attempting the problem until you get it right, but you have only two days to complete it. An activity can be turned in up to 48 hours late for 80% of the credit.
Regardless of number, the activities will be worth 5% of your grade.
We will make extensive use of the computer based testing center. Rather than having two or three midterms, we will have weekly quizzes. The quizzes will be broken into mastery areas. The final exam will retest these mastery areas, and if you show an improvement in that area, we will upgrade your quiz score using your final score.
The exact dates are still to be determined, but we expect to release the first quiz around June 9.
The quizzes and the final, combined, are worth 80% of your grade.
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 you do not do a satisfactory job on it you will lose a letter grade.
If your assignment is going to be late, we will accept it up to 48 hours after the due time for a maximum of 80% of the credit. In practice this will only apply to the activities.
If you happen to miss an exam/ML, contact the intructor (not the TAs) by email (certainly not over Piazza) as soon as possible.
Assignments later than 48 hours are not accepted under any circumstances. If you have a legitimate reason for missing an assignment, it is possible to have it excused. Occasionally the instructor may extend the due date of an assignment for the entire class, but this is rare.
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.
Grade cutoffs will be determined as follows: We will take the average of the top 10% undergraduate scores, and then take a percentage of that to determine the grade cutoffs. This is similar to the technique used in the Psychology department.
Percentage | Grade |
---|---|
99 | A+ |
93 | A |
90 | A- |
87 | B+ |
83 | B |
80 | B- |
77 | C+ |
73 | C |
70 | C- |
60 | D |
<60 | F |
So, as an example, if the top 10% undergradute scores averaged to be 95%, then the A- cutoff would be $95 \times 0.90 = 85.5$
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.
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 disability@uiuc.edu.
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.
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.