CS 421: Programming Languages and Compilers
News for Fall 2016
  • 12/5/16 - I have made up a WA for Lambda Calculus Evaluation and posted it to PL. Because there is less than a week of classes left, I have made the assignment extra credit. There is a practice version you may do as many times as you find helpful. There is only one problem, in three parts, which is shared in common between the practice and the extra credit. Modulo permuations of the parts, you will get the same problem each time. - ELG
  • 12/1/16 - I have posted a syllabus (increment) and sample final exam to exams. - ELG
  • 11/30/16 - The results from Midterm 2 have been posted to your directory and the cutoffs have been updated. - ELG
  • 11/28/16 - I have put up ML5 practice. It goes down at the end of the day tomorrow, Tuesday 11/29/16. I have distributed a new pdf to correct the type of lookup_cont. I have distributed a new ml5common.ml file because one a othe free_vars functions was missing its case of exceptions. Please do an svn up to ge these corrections. - ELG
  • 11/18/16 - I have posted ML5 to your svn repositories. - ELG
  • 11/17/16 - I have posted to your svn repositories a new pdf (version 1.2) that removes the erroneous rule for the unsupported declaration let _ = e, and a new version of mp6common.{ml,cm{i,o}} that restores equality to polymorphism. - ELG
  • 11/4/16 - I have posted a solution to the sample exam and solutions to ML3, MP3, ML4 and MP4. - ELG
  • 10/31/16 - I have posted a syllabus and sample exam to exams. - ELG
  • 10/30/16 - I have given a one day extension for MP5 to give me time to an example in class that is not as simple as resolving the associativity or precednce of infixed operators. - ELG
  • 10/29/16 - WA3 has been released. It was intended to be the first part of four. The second is pretty close to being done. It asks you to give a right regular grammar for each of the langauges given in WA3. The third gives a grammar and asks you to give a parse tree of for a given string. The fourth asks you to disambiguate a small grammar with a conflict of the same nature as occurs in the Picoml grammar. If I do not manage to finish building the checking engines for these problems, I will put up the parsing problems without the checker to facilitate adn recommend you try them before the midterm. - ELG
  • 10/25/16 - Elsa will be taking Eric's moved office hour today, Oct 25, 3:30pm-4:20pm. - ELG
  • 10/24/16 - Eric's office hour for Monday, Oct 24 is rescheduled to Tuesday, Oct 25, 3:30pm-4:20pm. - EH
  • 10/19/16 - Last night, WA2-Practice and WA2 were made available. In WA2-Pactice, you are given two problems to do. The first one is a warm-up exercise to help you with being comfortable with the interface and with applying the steps of unification by hand. The second is a somple from the pool from which you WA2 question will be pulled. The second is a bit more than twice as long to do as the first.
    For each step, you get three tries to get it right, not including correcting parse errors. After three tries, your are penalized one point off the maximum score. If you make a parsing error, it tells you you have one (but not have and helpful information indicating where the parse error is) and asks you to re-enter your answer. You score is the cummulative score you get from the weighted number of corect steps you made, bounded by the result of reducing the maximum possible score by the nymber of uncorrected mistakes you made. Since the alogorithm given in class is nondeterministic, your choices can influence the number the nature of the steps you take. I have chosen a maximum possible score that should be sufficient to cover the most efficient way to do the problem. Points you earn past the maximum possible score do not count toward your grade on the assignment.
    When doing the problems I found it worked best to do ecah step out in a editor separate from the web form and then cut and paste into the submission box. I would do a step, cut and paste it in and make sure I didn't have any errors, and then either correct my previous step or move on to the next. The error messages tell you a thing your answer has or does it shouldn't or a thing it doesn't have or do that it should. They are not exhaustive. I always checked for balanced parentheses in my editor, and so I didn't get cought on that mistake. Parsing mistakes I commonly made in what I put into PL were forgetting one or the other of the keywords by and on and putting the quote on the wrong side of the variable name. I misspelled a rule name once. I made heavy use of cut and paste, and query-replace to keep my errors under control. Some mistakes you might be inclined to make include using semicolons where commas should be used, wrapping pieces of a substitution in parentheses, not wrapping equations in parentheses. You may get your session stuck repaeatedly telling you you have a parse error if there is junk past the usable end of your input string. I'm not sure of the cause of this. Try to avoid stray punctuations and other characters. - ELG
  • 10/12/16 - The results from Midterm 1 have been posted to your directory and the cutoffs have been posted. - ELG
  • 10/7/16 - ML3 Practice is up now through Tuesday. - ELG
  • 10/5/16 - This week Eric's office hour today (Wednesday, 10/5) will be moved to Thursday, 10/6. The time will still be 4:30pm-5:20pm. This is not a permanent change. Sorry for the inconvenience today. - EH
  • 9/28/16 - I introduced an error into the solution set for MP2, Problem 9. The answer should have read
    let quadk (a, b, c) k =
      mulk (4, b)
        (fun u -> mulk (a, a)
          (fun v -> mulk (2, v)
            (fun w -> addk (w, u)
              (fun z -> addk (z, c) k))))
    The evaluation order given in the previously published solution had an incorrect (left-to-right) order of evaluation that does do reflect OCaml's evaluation scheme (right to left on arguments to procedures and primitive operations). The code above now does. I have posted a revised solution set. I apologize for the confusion this may have caused. - ELG
  • 9/26/16 - The PL Midterm 1 Practice exam is up. - ELG
  • 9/26/16 - Solutions to ml1, mp1, ml2 and mp2 have been posted. - ELG
  • 9/15/16 - A new version of MP2 has been posted. It changes the types of the functions in Section 5. Please save your work to a uniquely named file and then do an svn up. - ELG
  • 9/15/16 - WA1 at long last has been turned on for collection, due Saturday, 9/17/16. You may want to do a few practice runs on WA1-Practice first to refresh your memory. You can only submit WA1 once. - ELG
  • 9/15/16 - MP1 has been graded and the reports returned to your svn directory for MP1. ML1 was returned or 9/10/16. - ELG
  • 9/10/16 - Problems 9 - 14 on ML2 will not appear among the PrairieLearn questions you will see in ML2-Practice, on inthe CBTF. These problems will be rolled to MP2, so you will be working ahead if you start them now. - ELG
  • 9/3/16 - The collection of WA1 is postponed for the indefinite future. I have a programming error I have not been able to sort out. We collect as a string all the interactions you have with each WA1 question, and attempt to store it in the PrairieLearn database backend, so that it can later be pulled out graded and a more detailed error report be generated for you. However, either we are dropping that string on the floor or it is being overwritten because the only string we can pull out it eh last entry to the last part of the problem you did before hitting save. I do hope you all will take advantage of the pratice as a tool to learn about environments and closures. I am working on a tool for what would be the next handwritten assignment, and I will put it up for practice assuming I can get it in a meaningfully useable state by Tuesday (or there abouts), but until I can solve the data collection problem, the tools willbe up for practice only. The MLs and MPs will continue to be made available every Tuesday, in alternation. Please be sure to check the mps page for their schedule. - ELG
  • 8/28/16 - Machine Lab Practice is up you to try out. I have put in three of the eventual five versions. You receive no credit for doing this version. It is up only for you to practice with the interface. You have already had the problem for five days; we have not added any new. You can test it out by going to PrairieLearn, and selecting CS421. Then you should see all the tests, labs and web assignments that are currently available. Right now, there is only the Machine Lab Practice. You should see Machine Lab Practice 1: Basic Ocaml and the button New version. If you push this, you will be given a version of ML1. You may push this repeatedly to create as many as you please, although after three (eventually five) they will repeat. The selection in general has a random component to it, so you might get repeats sooner; I'm not sure. When doing the actual Lab, you will automatically be given full credit; actual grading will be done offline using the same type of grading as you have with the grader program. This practice lab will only be open through the first day of the of the testing period. - ELG
  • 8/23/16 - Welcome to CS421, Fall 2016. This page will be the main bulletin board for the course, and hence is always under construction. Please check it frequently. - ELG
  • README
    Objectives
    Contacting Staff
    Submitting Assignments
    Extensions
    Regrade Policy
    Collaboration
    Policy on Cheating
    Grading
    Textbooks
    FAQ

    Class Schedule
    Lecture:
    Tue, Thu 2:00pm - 3:15pm
    1404 SC

    Staff
    Professor
    Elsa Gunter
    Email: egunter@illinois.edu
    Office: 2112 SC
    Phone: 265-6118
    Hours: Tue 12:00pm - 1:30pm,
                 Thu 3:30pm - 4:20pm,
                 Also by appointment

    Teaching Assistants
    Deniz Arsan
    Email: darsan2@illinois.edu
    Office: 0207 SC
    Hours: Mon 2:00pm - 2:50pm,
                 Wed 3:30pm - 4:20pm

    Kevin Banker
    Email: banker2@illinois.edu
    Office: 0207 SC
    Hours: Tue 10:00am - 10:50am,
                 Thu 10:00am - 10:50am

    Thomas Bogue
    Email: tbogue2@illinois.edu
    Office: 0207 SC
    Hours: Fri 12:30pm - 2:10pm

    Eric Huber
    Email: echuber2@illinois.edu
    Office: 0207 SC
    Hours: Mon 3:30pm - 4:20pm,
                 Wed 4:30pm - 5:20pm
    Note: Eric's Oct 24 OH canceled, moved to Oct 25.

    John Lee
    Email: jlee170@illinois.edu
    Office: 0207 SC
    Hours: Mon 10:00am - 10:50am,
                 Fri 10:00am - 10:50am