Stale Final Marks

I haven't been able to upload the final marks with the revised project marks yet. I'll keep on trying to do that.

I've contacted all of the people whose code looks too similar, so if you haven't heard from me, you're OK.

Project marks

I've readjusted the project marks. The new scheme uses P2 as one part and P1/P3 as the other part. I've also adjusted the P3 marks downwards; however, the total marks still go up. The new formula is 1/2 ((100 - (100-P1) - (100-P3)) + P2). The new project average is 88.6.

I've uploaded the project marks. The two equally-weighted parts of the project from the syllabus are P1) the symbol table/type checker; and P2) the code generation. To compute the project mark, I took 100 - (100-P1) - (100-P2). This yields a project average of 82.3.

By the way, the final course average is 79.5 (using the 40% project weighting if it helps you) and the exam average is 76.3. No one with a project mark above 30 got below 50 on the course.

Final Exam Outline

Here is the final exam outline.

Patrick's Office Hours Wednesday and Thursday

I will be available all day in my office (DC2534) on Wednesday and Thursday before the exam. All day means from 10AM to 4:30PM.

Jon will have office hours in EIT3142 from 3:30 to 5:00 on Thursday.

Grace Days Clarification

I computed the number of grace days everyone used. Everyone is OK. Some people submitted something for Lab 1 4 days late and got either a 0 or a very low mark. In those cases I'm just going to divide that very low mark by 2 and not count the grace days for Lab 1.

Two and a half clarifications on grace days. (1) I will count parts 2 and 3 of the project as one submission for the purpose of grace days. For example, if you hand in part 2 on Tuesday and part 3 on Wednesday, then you will use 2 grace days, based on the Wednesday submission. (2) I announced earlier that groups of 2 get to sum their grace days. This is unfair for people in groups of 1. Singletons get 2 extra grace days for their project submission. (2.5) Please submit your project before the final exam!

Upload problems

I've received a report that someone had trouble uploading their submission on Windows using Firefox 3.6.12. If you have this problem, let me know and try another browser.

Final review session

I've obtained RCH112 for a final exam review session on Monday, December 6 from 3:30 to 5:30. Please give me your feedback on how you'd like the review session to be organized (on the handin site).

Here are the abstract questions, concrete questions 1, and concrete questions 2.

Midterm solutions

Here are some midterm solutions and marking guide, as provided by the TAs.

E-mail etiquette

If you are going to send mail to a TA and to me, please send email to both of us simultaneously (e.g. CC'd) so that we don't both independently answer the question. This is quite annoying. Don't do it!


Added a project page. Last updates: skeleton v12 (12/2), skeleton v10 (11/25), skeleton v9+proj-cg.pdf (11/25), r2 of proj-st.pdf (11/24), symbol table/type checker, skeleton v8 (11/23), notice about symbol table (11/20), instructions on running your code on the server (11/19), ID, STRING_LITERAL (11/17), WIGToken (11/16), \+, svn merge insturctions.

Bonuses: 5% bonus on part 2 for submissions by Sunday. 5% bonus on part 3 for submissions by Thursday, December 2, at 11:59PM.

The final part of the project is some code generation for a subset of WIG. The skeleton now includes a CodeGenVisitor which you'll extend (r1413).

The second part of the project will be to write a symbol table/type checker. I've posted a description (Nov 22).

The first part of the project will be to create a parser. I've posted an updated description (Nov 14, 00:51). You want to fetch the files from the repository using the credentials that you'll acquire from Sam. Before you get the credentials, you can download a skeleton (v8 = svn r1283) (update Symbol visitors for singletons).

Please add your groups to the CMS.

We will have a code sprint on Monday evening in RCH302 from 6:00-8:00. This is a good time to get started with your project. I'll be there to help you out with issues that you may have in getting started.

Here are solutions for Lab 1. I'm going to take them down after you hand in part 1 to the project. I may also put up solutions for Lab 2, briefly. Please do not share these with future classes.

Tutorial on SVN

You can find Muhammad Shafique's tutorial notes here. They contain excerpts from the Subversive documentation at .

New marking scheme

I've added an additional marking scheme. Your mark will not go down under this scheme. It will be: max(0.5f+0.3p+0.1l+0.1m, 0.5f+0.4p+0.1m).

Note that even if the lab ends up worth 0% for you, the fact that you did the labs will help you in doing the final project, since it builds on many of the same skills!

Lab 2 clarifications

Last clarified on Friday November 5, at 16:45: v0.5 out.

Concrete practice questions

If you post solutions to the concrete questions on your class wiki and let me know about them, I'll evaluate the solutions for you. Also, if you want to suggest questions for the midterm for me, I'll post any that I receive, and I may use them.

(posted 10/22) Here are answers to the questions that Prof. Rayside passed on to me.

Here are the concrete practice questions for the midterm.

Tutorial slides for Lab 2

Here are tutorial slides courtesy of Jon. This material will help you do Lab 2.

Lab 2 available

See the Lab 2 page linked to on the left for the lab 2 specification.

Abstract Question List

Here is the list of abstract questions for the midterm. I will refine it to a list of concrete questions this week (some questions may evaporate), and variants of these questions will be the midterm questions.

Lab 2

As discussed in class today, the due date will be Friday, November 5th at 11:59PM. (By the way, submissions that are about an hour late don't consume grace days.)

Tutorial slides

Here are the week 2 tutorial slides, courtesy of Jon. They should help you get started on the programming for Lab 1.

I've also added more resources on regular expressions and XML from tutorial 1 in the "Resources" tab on the left.

Poll results

Open-notes: 11; open-book, closed-notes: 2; closed-notes, closed-book: 40.


Here is the syllabus for this class.

Grace days

You have 4 days of lateness to use on submissions throughout the term. Each day you hand in something late consumes one of the days of lateness. The fifth day of lateness causes your lowest lab mark to be halved, while the sixth day causes both lab marks to be halved. If you hand in something and you have more than 6 days of lateness, I'll start converting marks to 0 and dropping the associated late days. You can only hand in a submission up to the time I return all of the submissions. You don't get any credit for unused late days.


No. You don't have to show up for lab sessions or tutorials.


The textbook for the class will be:

Michael L. Scott. Programming Language Pragmatics, Third Edition. Morgan Kaufmann, 2009.

You can buy it from Amazon, or from the University bookstore. Also, I intend to post reasonably complete lecture notes for the material that I'm lecturing on. The textbook contains a lot of material that's not in this course, but which you may well find useful in your later career, including content on functional programming. It will also help you understand what you're implementing in Lab 1. You could probably get by without the book, but then you might be at a disadvantage should there be a open-book final.