University of Toronto - Fall 2004
Department of Computer Science

CSC 324: Principles of Programming Languages

Lecture Slides

General Information:
Lecture Slides: I will try my best to post the lectures slides in time for you to print them before the start of class, but I may update them after class or at the end of the course module. You will be notified of any updates to the slides on this page, and/or in the log file.
Code: Some of the example code that we use in class will also be posted on this Web page.
Readings: I have made a tentative list of all of the readings for the course. These may be updated as the course progresses. Any updates will be registered in the log file. When something is listed as optional reading it truly is optional. This is simply reading that may assist with the material covered in class, tutorials, or in the mandatory readings.



Introduction:
Readings: Mitchell Chapter 1, 3.1, 3.2, 4.4.
Slides:2up.ps; 2up.pdf; 4up.ps; 4up.pdf ; 8up.ps; 8up.pdf.

Formal Specifications I & II:
Readings: Mitchell Chapter 4.1.
Optional Extra Reading: Sebesta Chapter 3.1-3.4, Chapter 4.3-4.5. (Sebesta is on reserve in the library.)
Slides:
Sept 13/14: 2up.ps; 2up.pdf; 4up.ps; 4up.pdf; 8up.ps; 8up.pdf.
Sept 16/21: 2up.ps ; 2up.pdf; 4up.ps; 4up.pdf; 8up.ps; 8up.pdf.

Scheme:
Readings: Mitchell Chapter 3, 4.2. (I would also encourage you to skim Chapter 2, though it isn't required reading.)
Optional Extra Reading: Sebesta Chapter 15 or Sethi Chapter 10 (in library). Dybvig (online or in library).
References: MIT Scheme Home Page; MIT Scheme Documentation. Also, check out some of the reference books in the library, such as Dybvig. The Dybvig book is very good and is also available online here. See also links to Scheme from CSC324 Home Page. There are some interesting reads.
Code used/developed in class: to October 5.
Slides: 2up.ps ; 2up.pdf; 4up.ps; 4up.pdf; 8up.ps; 8up.pdf.
Slides II: 2up. ps ; 2 up.pdf; 4u p.ps; 4 up.pdf; 8u p.ps; 8 up.pdf.
Slide III (Obsolete - Replaced by Slides III*): 2up . ps ; 2 up.pdf; 4 u p.ps; 4 up.pdf; 8 u p.ps; 8 up.pdf.
Slides III* (Updated after October 4 Class): 2up.ps ; 2up.pdf; 4up.ps; 4up.pdf; 8up.ps; 8up.pdf.
* This is a corrected superset of the previous "Slide III". Changes: Slide 50 is corrected to remove extra brackets in append. New slides 58-63 and 74-78 are inserted.
My recommendation: We only covered up to slide 58 (which was handwritten) on October 4. For those who printed the previous "Slides III," I recommend either reprinting the whole thing and recopying your annotations, or just reprinting slides 58-78 and marking the change on your old copy of slide 50. For those who have not yet printed "Slides III", just print these instead.
Slides IV (3 page insert to Slides III*): ps ; pdf.
Slides V: 2up.ps ; 2up.pdf; 4up.ps; 4up.pdf; 8up.ps; 8up.pdf.
Slides VI (1 page insert to Slides V): ps ; pdf.

Midterm Review:
Slides: 2up.ps, 2up.pdf .

Typing and ML:
Readings: Chapter 5, Chapter 6, and Chapter 8.2.
References: Ullman is very good (See our course description for the reference. On hold for you in the library.) as are the online materials. You will be using SML/NJ (a version of ML). I also particularly recommend the ML tutorial by Harper though there are also several other tutorials linked from the SML/NJ web page.
Slides I (subsumed by Slides III): PS; PDF;
Slides II (by Hojjat Ghaderi): PS; PDF;
Slides III (these subsume Slides I): PS; PDF;
Slides IV: PS; PDF;
Also, please make sure you review the "Efficiency and Let" material from the Monday November 1 tutorial. I understand the TAs were unable to get to it because of time. (Same basic concept & motivation as in Scheme, different syntax. It's well described in most ML reference material.)

Prolog:
Readings: Mitchell Chapter 15.
References: See also the Prolog references listed on the main CSC324 Web page. In particular, I recommend the Prolog reference Clocksin & Mellish (available in the library. Also the SWI Prolog online documentation.
Slides: 2up.ps ; 2up.pdf; 4up.ps; 4up.pdf; 8up.ps; 8up.pdf.
Hand-drawn proof tree for grandfather query covered in class
Family Tree code (run some queries yourself)
Extended Family code
Slides II: 2up.ps ; 2up.pdf; 4up.ps; 4up.pdf; 8up.ps; 8up.pdf.
Slides III: 2up.ps ; 2up.pdf; 4up.ps; 4up.pdf; 8up.ps; 8up.pdf.
Examples of List Code Developed in Class
Slides IV: All material in this set of slides will be covered in class or tutorial, with the exception of the material at the end that is labelled as beyond the scope of the course.
2up.ps ; 2up.pdf; 4up.ps; 4up.pdf; 8up.ps; 8up.pdf.
Slides V: 2up.ps ; 2up.pdf; 4up.ps; 4up.pdf; 8up.ps; 8up.pdf.
Scanned Copy of My Handwritten Slides on Procedural Language Design and Prolog Cut: pdf
Unification (MGU - Slide 91) Example from Class: text

Procedural Language Design:
Readings: Mitchell Chapter 7.1, 7.2, 7.3.
Reference: Sethi Chapter 5 is a very good reference for this material.
Slides I: 2up.ps; 2up.pdf; 4up.ps; 4up.pdf; 8up.ps; 8up.pdf.
Slides II: 2up.ps; 2up.pdf; 4up.ps; 4up.pdf; 8up.ps; 8up.pdf.
Scanned Copy of My Handwritten Slides on Procedural Language Design and Prolog Cut: pdf

Final Review:
Slides: 2up.ps; 2up.pdf.


Back to the mainup.page