CS 440, Fall 2019: Programming Languages and Translators http://cs.iit.edu/~cs440

(Last updated Oct 14, 13:23)

Class Meetings

Staff Information (Last updated Aug 22, 17:02)

Role Person Office Hours
Instr. http://cs.iit.edu/~sasaki
TA Tue / Thu 3:30 - 5:00 pm, SB 004, x7-4153

Academic Honesty

Students are responsible for maintaining the highest level of academic integrity as discussed in the IIT Code of Academic Honesty. The normal penalty for a violation of this policy for a nonfinal Exam is a score of zero, with no Test Score Replacement (see below); for the Final Exam, the penalty is a final grade of E. In either case, Academic Honesty and the student's advisor and/or department (or other relevant administrators) will be notified. Note that the College of Science specifically prohibits cell phones and other electronic devices during exams.

Course Goal

To understand scanning, parsing, and and basic compiler design and creation. To study and compare features found in various different modern languages, with a view toward understanding the trade-offs needed to create a language.

Disability Policy

Students with disabilities requiring academic accommodations should contact the Center for Disability Resources (disabilities@iit.edu, 312.567.5744). Please do this well in advance of needing an accommodation. (Note: They've moved to the 3rd floor of the IIT Tower.)

Blackboard, Piazza, Office Hours

Blackboard will be used to submit work and to list grades, but links to lecture notes, homeworks, etc. will be on this page. We'll use Piazza for discussions outside class -- feel free to post questions or answers. The TAs and instructor will hold regular office hours. You can send email to them, too.

Lectures and Attendance [Changes 10/14]

You're expected to keep up with lectures by attending them or watching them online. In-class attendance will be taken intermittently in the live section. Attendance can be used at the end of the semester as a tie-breaker for the final grade. The Handout / Reading column indicates lecture readings (possibly as links to files). Lectures may include in-class activities; these are generally not graded or reviewed, but can be. Solutions to activities (if posted) are appended to the notes.

Tentative Class Schedule (Last updated Oct 14, 12:58)

The schedule below includes information on lectures, tests, and homeworks. Dates are added or changed when an entry is added or changed, so check the schedule often.

Date Type Event / Topic Handout / Reading Note
Mon 8/19 Lect 1 Haskell 1 Lec_01_Haskell1.pdf8/17
Wed 8/21 Lect 2 Haskell 2 Lec_02_Haskell2.pdf8/23
Fri 8/23 Post HW 1 On Lect 1-2 HW_01.pdf8/26 Q2, 8/28 Q4, 9/2 Q4
Mon 8/26 Lect 3 Haskell 3 Lec_03_Haskell3.pdf8/28, 8/31 p.11, 9/1 p.12
Wed 8/28 Lect 4 Haskell 4 Lec_04_Haskell4.pdf8/28, 9/1 p.5, 9/2 v.2, 9/7 Activity added, pp. 9-11
Mon 9/2 Holiday Labor Day
Wed 9/4 Due HW 1 (Solved) HW_01_soln.pdf9/22
Wed 9/4 Post HW 2 On Lect 3-4 HW_02.pdf9/3, 9/9 Q.2,5,7
Wed 9/4 Lect 5 Haskell 5 Lec_05_Haskell5.pdf9/4, 9/15 Act. Q's added
Mon 9/9 Lect 6 Regular Expr, FSM, Scanners Lec_06_RegExpr.pdf9/8, 9/13 v.2, 9/14
Wed 9/11 Due HW 2 (Solved) HW_02_soln.pdf9/22
Wed 9/11 Lect 7 Regular Expr, FSM, Scanners Lec_07_RE_FA.pdf9/11; 9/22 brand new; 9/23 p.6; 10/2 pp.9,11
Thu 9/12 Post HW 3 On Lect 5-6 HW_03.pdf9/14 p.2, 9/17 p.1, 9/18 p.2
Mon 9/16 Lect 8 Regular Expr, FSM, Scanners Lec_08_NFA_DFA_RE.pdf9/22, 9/29, 10/2 pp. 6-8
Wed 9/18 Lect 8 (continued)
Mon 9/23 Lect 9 Grammars and Productions Lec_09_Gram_Prod.pdf9/22; 9/23 pp.1-3,7
Mon 9/23 Due HW 3 (Solved) HW_03_soln.pdf9/28
Tue 9/24 Post HW 4 On Lect 7-9 HW_04.pdf9/24, 9/27 p.1
Wed 9/25 Lect 10 Top-down/Rec Desc. Parsing 1 Lec_10.zip9/29, 10/8 activities
Wed 9/25 Lect 11 Recursive Descent Parsing Lec_11.zip10/8
Mon 10/2 Lect 12 LL Table-Driven Parsing 1 Lec_12_LL1.pdf10/8, 10/13 pp.2,3,5-7
Wed 10/2 Due HW 4 (No submissions after 10/3) HW_04_soln.pdf10/4
Mon 10/7 Holiday Fall Break
Wed 10/9 Exam 1 Lec. 1-9, HW 1-4
Mon 10/14 Lect 13 LL Parsing 2 Lec_13_LL2.pdf10/14
Wed 10/16 Lect 14 Bottom-up parsing; LR 1
Mon 10/21 Lect 15 LR Parsing 2
Wed 10/23 Lect 16 LR Parsing 3
Mon 11/18 Exam 2 Lec 10-19 ?, HW 5-? ??
Fri 12/06
10:00 - 12:00
Exam (Final) (Comprehensive with emphasis TBA)


cover (Required) Learn You a Haskell for Great Good, by Miran Lipovača, © 2011, ISBN-13: 978-1-59327-283-8. There's a free online version and electronic and print versions. cover (Optional) Haskell (wikiBook) Online; printed, pdf, and e-book versions are available.
cover (Required) Algorithms for Compiler Design, by O.G. Kakde, © 2002, ISBN-13: 978-1-58450-100-8. To access the boook, log into the MyIIT portal, then sign in at Books 24x7, then access the Kakde book. We'll concentrate on Chapters 1 - 7. cover (Optional, Reference) Real World Haskell, by Bryan O'Sullivan, Don Stewart, and John Goerzen, © 2008, ISBN-13: 978-0-59651-498-3, O'Reilly press. There's a free online version and a print version.

Homework Policies


Links to assignment handouts and information on due dates are included in the schedule. The number and timing of assignments may change as time goes on. If posted, solutions are appended to the assignment handout. Solutions to programming problems aren't typically posted.

Final Project: There will be an individual (not group) final project. Stay tuned for more information.

Homeworks and Activities are Important!

It's important to do the homeworks and any lecture activities because they will help you prepare for the tests. If solutions to lecture activites are posted, they are appended to the lecture handout. Solutions to programming problems aren't typically posted.

Late or Malformed Work

Work may be handed in up to two days late with a 5% penalty for one day late and a 10% penalty for two days late. (Saturday and Sunday count as days.) After this, work can be discussed but it earns a score of 0. You can't turn in a bunch of things at the end of the semester and get them graded.

It is your responsibility to make sure that you submit what you intend to submit and that what you submit is readable. If you submit a bad or unreadable assignment, etc., you may earn a penalty anywhere from a point off to no credit at all.

For programs, we'll specify some standard testing environment and grade relative to that. Stay tuned for further information.

Extensions and Regrades

If you have an emergency or are ill, it may be possible to excuse you from an assignment or to get you an extension, but contact the instructor (or have a friend or family member contact the instructor) as soon as you can. Please don't wait. Overly delayed requests may be denied. You can't get a retroactive extension on work you've already turned in or once the semester ends.

The regrade policy for assignments (and tests) appears in the Test Policies section below.

Work With Others; How to Submit

You're encouraged to work in groups of three or fewer on homeworks. Submit your answers from just one person in your group. Be sure to include the names and A-id numbers of all the group members at the top of the submission. Don't submit as a group; each person should submit separately. Submit using the Assignment folder on Blackboard; a pdf is best. (A scan of a handwritten solution is okay.) You can submit multiple times, but we'll grade only the last submission, so submit the entire homework every time. Written work can also be turned in class. If the CS office is open, you can also turn in work there. (In that case, please get it time-stamped.)

Unless otherwise specified, work is due at 11:59 pm on the specified day. (Recommendation: Don't wait until 11:58 to submit -- Blackboard can sense fear and will act accordingly. :-)

Test Policies


The dates of tests and the materials covered by the tests will be listed in the schedule. They're pretty firm, but it's possible they might be tweaked, so keep an eye out. The Final Exam will be comprehensive, with an emphasis on later material. (Details will be announced near the end of the semester.) The date and location of the Final Exam will be posted once it's set by the Registrar. If you need to take a test at a nonstandard time, contact the instructor well in advance for permission.

Tests for Internet Sections: If you're in the regular Internet section, then if you want to, you can take tests on main campus with the live class. (No need for advance permission; just show up.) If you're outside the Chicago area or you want to take your test off-campus, contact the Office of Digital Learning well in advance to arrange for a proctor. If you need to take a test at a nonstandard time, in addition to contacting the instructor, contact the Office of Digital Learning, again, well in advance of the test date. If you're in the India Internet student, coordinate with IIT India for test times and locations.

Tests: One Page of Notes Allowed

Tests are closed-book but you can bring one 8.5" × 11" or A4 page of notes, both sides. It can be hand-written, printed, etc. Bringing more than one page breaches academic honestly. Don't use the notes as a substitute for learning the material. The one-page limit also applies to the Final Exam even though the exam is comprehensive. College of Science policy specifically prohibits cell phones and other electronic devices during exams except as accommodation aids specified by the Center for Disability Resources.

Test Score Replacement

If you earn a bad score on Exams 1 and/or 2, the Final Exam will give you a chance to recover. When calculating End-Of-Semester (EOS) scores, if your Final Exam score is greater than your earlier exam score, we use it instead of the earlier score. (The replacement gets done when calculating EOS scores; the exam score shown on Blackboard doesn't change.) The Final Exam will include a review of earlier material that (on average) the class did badly on.

If You're Sick During An Test; Makeup Tests

For heaven's sake, if you're sick, don't take the exam and turn it in. Tell me before, so I can try to figure something out. Once you turn in an exam, we're supposed to grade it, and we can't just ignore the grade.

If you're going to be out of town the day of a test, arrange well in advance for a change in test time. If you just don't show up for a test due to illness or other emergency, it might be possible to get a makeup test, but contact the instructor as soon as possible. Overly delayed requests may be denied; requests made after the end of the semester will be denied.

Test and Homework Regrades

For test regrades, see the instructor. For homework regrades, see the TA who graded it before seeing the instructor. For the Final Exam, requests must be made within two weeks after the exam score is announced. For Homeworks and earlier exam(s), requests must be made within a week after the grade is posted.

You can't just get a whole long problem or homework or test regraded; you must specify particular errors and include an explanation for each request. Don't just say "I think it's worth more points". Point out specific errors, such as adding up your points wrong or show that we missed something. Note that "needing" more points is absolutely not a justification.

Final Grade Policies

The Final Grade Describes the Quality of Your Work

At the end of the semester, my job is to look at the pile of work you've done and assess its size and quality. Students "earn" grades; I don't "give" them. I'm bound professionally and ethically to work as objectively and fairly as I can. This doesn't mean every student must be treated identically — for example, if you're sick, I might give you extra time to work on something — it means that students should have the same opportunity to earn grades.

How do I Figure Out Final Grades?

At the end of the semester, assessing the size and quality of your work is most often so obvious that there's no doubt involved. If the answer is not obvious, then first, if you're two points short on the Final Exam, I'll give you the benefit of the doubt and mark down the higher grade. (That's two exam points, not two EOS points.) If you're five points short, expect the lower grade. Otherwise, I look for every reason I can find to push you up to the next higher grade; if I can't find any, or I find negative reasons, then I figure you've earned the lower grade. For example, having a Final Exam score that's much higher than average is a big plus. (Having one that's much lower than average is a big minus.)

If Your Final Grade Causes Problems

Unfortunately, you can come to every lecture, work hard on every assignment, and still earn a bad grade. I know that a bad grade can put you in a very painful or even disastrous position. Personally, I feel bad for you, but professionally, I can't use your situation to affect your final grade. The final grade can only depend on the quality of your work, else we cheat the other students.

Said another way, the answer to "Can I get a better grade because I need it because [insert reason]?"" is No. This is even true if we talk in person.

No Just Giving a Higher Grade; No Extra Work to Raise Grade

If you don't like your final grade, we can certainly discuss why it's X and not X+1, but the answer to "Can't you just give me an X+1?" is no. (Remember, I don't "give" grades, students "earn" them.) I've already looked at everything I can think of before deciding that you earned X, but maybe you can point out something about your grades that I didn't notice. Certainly if I've made a calculation error, let me know.

The other main questions I get are "Can I do extra work to raise my grade? (or "Retake this exam?" or "Turn in this homework I skipped?"). Sorry, no. To be fair, all students must have the same opportunities to do the coursework. Giving one student a chance that others don't get cheats the other students.

Final Grade Calculation

End-of-Semester Score: (Tentative): [10/14] Homework: 11%; Final Project: 9%; Exams 1 and 2: 20% each; Final Exam: 40%. (All scores are scaled to 100.)

Final Grade Cutoffs: A: 90-100; B: 80-89; C: 70-79; D: 60-69; E: < 60. You can also earn an E by having an average Homework score < 30% or Final Exam score < 40. Grade cutoffs are only rarely changed, and never by increasing them. (Note: the 30% Homework rule isn't aimed toward causing people to fail, it's more to warn people: If you have such a score, you're either failing or very close to it.)

Final Grade Curving

In general, I like the class average Final Grade to be a high C or low B.If a curve is needed, it's done by adding a constant > 0 to everyone's final score. Individual exams etc. don't get curved. I don't know what curve there will be until the end of the semester. If there's a midterm grade and it's curved, that curve implies nothing about any final grade curve.


Talk to the instructor as early as you can if you think you need an Incomplete. Note the registrar's deadline for requesting an Incomplete is before Final Exam week (barring an emergency like being hit by a meteor [please try to duck]). Definitely don't take the Final Exam and then ask for an Incomplete — taking a Final Exam is pretty much the definition of "completing a course".

Posted Mon Oct 14, 2019; Copyright © 2019; James Sasaki, Illinois Institute of Technology. xhtml css