Homepage for CSC 324, Fall 2014

Principles of Programming Languages

University of Toronto Mississauga

You should check the following announcements regularly.
ANNOUNCEMENTS:
  • Grades for Assignment 1 are now available on UTORSubmit.
  • In Assignment 3, the solutions for Question 1 parts (a) and (b) should be that they do NOT unify (since p and q are different predicates).
  • Solutions to Assignment 3 can be picked up outside my office door (DH3090).
  • A previous year's version of Assignment 3 was accidentally posted on this website for a short time. So, if the questions seemed to all change suddenly, that is why. The correct version is now there.
  • A typo in Question 8 of Assignment 3 has been corrected.
  • As described in class, the final exam will cover the entire course, but will emphasize material not on the midterm. You are responsible for all material covered in class, in tutorials and on the assignments.
  • A copy of last year's final exam is available below.
  • Question 8 on Assignment 3 has been clarified.
  • Questions 2 and 7(c) in Assignment 3 have been clarified.
  • The final exam is closed book, but you will be allowed a 1-page "CHEAT SHEET" (8.5x11in, two-sided). It should contain no more than 12,000 characters. If typed, it should be in 12pt font or larger.
  • The final exam will follow the "I don't know" policy. That is, if you do not know the answer to a question, and you write "I don't know", you will receive 20% of the marks of that question. If you just leave a question blank with no such statement, you will get 0 marks for that question.
  • Your terminal session must show both the input provided by you and the output printed by the Prolog interpreter.
  • Assignment 3 is now complete.
  • Questions 4d and 4e of Assignment 3 have been modified slightly (Nov 19).
  • The first 8 questions of Assignment 3 are now available.
  • The first 5 questions of Assignment 3 are now available.
  • The first 4 questions of Assignment 3 are now available.
  • The first 2 questions of Assignment 3 are now available, below. More questions will be added shortly.
  • Question 5 in Assignment 2 has been clarified.
  • Question 3 in Assignment 2 has been clarified.
  • All questions have now been added to Assignment 2. Note that some questions have been renumbered.
  • The first six questions of Assignment 2 are now available. More questions will be added shortly.
  • A fourth question has been added to Assignment 2. More questions will be added shortly.
  • The first three questions of Assignment 2 are now available, below. More questions will be added shortly.
  • On the midterm, you are responsible for all material covered in class, in tutorial and on Assignment1, up to (but not including) exception handling in ML.
  • The midterm test will start promptly at 3:10pm and will last 50 minutes. There will be a lecture in the second hour.
  • The midterm test is closed book, but as described in class, you will be allowed a 1-page "CHEAT SHEET" (8.5x11in, single-sided). It should contain no more than 6,000 characters. If typed, it should be in 12pt font or larger.
  • As described in class, the midterm test will follow the "I don't know" policy. That is, if you do not know the answer to a question, and you write "I don't know", you will receive 20% of the marks of that question. If you just leave a question blank with no such statement, you will get 0 marks for that question.
  • Reminder: The MIDTERM TEST will be in class on Oct 29 (see below).
  • Submission instructions for Assignment 1 are now available, below.
  • All the questions of Assignment 1 are now available. No more questions will be added.
  • An oversight in Question 8 of Assignment 1 has been corrected.
  • Tutorial slides are now available, below.
  • The first eight questions of Assignment 1 are now available. More questions will be added shortly.
  • The first five questions of Assignment 1 are now available, below. More questions will be posted shortly.

  • Prerequisites: CSC207H5/270H5, 236H5/238H5, 290H5
  • Course information sheet
  • Text: Sethi, Programming Languages: Concepts and Constructs, Addison-Wesley. This course covers material in chapters 1, 2, 4, 8, 9, 10, 11 and 15.

    Instructor:

  • Anthony Bonner
  • email: my last name [at] cs [dot] toronto [dot] edu
  • phone: 905-828-3813 (UTM), 416-978-7441 (St George)
  • office: DH-3090 (UTM), BA 5230 (St George)
  • office hours: Weds 5-6pm

  • Classes: Wednesday 3-5pm, IB 345.
  • Tutorials: Friday 1-2pm and 2-3pm, DH 2020.
  • Tutorials may introduce new material not covered in the lectures or the text.
  • Teaching Assistant: Shems Saleh
  • Tutorial slides are available here.

    Midterm test:

  • Weds Oct 29, 3:10-4:00pm, in class. The test will start at 3:10 sharp!
  • Closed book.
  • Here is a copy of an old midterm.
  • There will be a 1-hour lecture after the test.
  • You will be allowed a 1-page "cheat sheet" (8.5x11in, single-sided). It should contain no more than 6,000 characters. If typed, it should be in 12pt font or larger.
  • The midterm test will follow the "I don't know" policy: if you do not know the answer to a question, and you write "I don't know", you will receive 20% of the marks of that question. If you just leave a question blank with no such statement, you will get 0 marks for that question.

    Final exam:

  • Closed book.
  • Here is a copy of an old exam.
  • The exam will cover the entire course, but will emphasize material not on the midterm.
  • You are responsible for all material covered in class, in tutorials and on the assignments.
  • You will be allowed a 1-page "cheat sheet" (8.5x11in, two-sided). It should contain no more than 12,000 characters. If typed, it should be in 12pt font or larger.
  • The exam will follow the "I don't know" policy: if you do not know the answer to a question, and you write "I don't know", you will receive 20% of the marks of that question. If you just leave a question blank with no such statement, you will get 0 marks for that question.

    Assignments:

  • Assignments should be submitted electronically at the UTORSubmit website.
  • Assignment 1 -- No more questions will be added.
  • Submission instructions are available here.
  • Assignment 2 -- No more questions will be added.
  • Submission instructions are available here.
  • Assignment 3 -- No more questions will be added.
  • Submission instructions are available here.

    Prolog lecture slides:

  • Introduction
  • Unification
  • Reasoning
  • Function terms
  • Quicksort
  • Queues

    Additional lecture slides:

  • higher-order programming (Scheme)
  • software verification (Scheme)
  • context free grammars: slides 1 and slides 2

    Links to programming languages used in this course:

  • PLT Scheme (now called Racket)
  • Standard ML of New Jersey -- Downloads
  • SWI-Prolog

    How to use the programming languages:

  • using PLT Scheme
  • using Racket
  • using ML
  • references in ML
  • using SWI-Prolog

    Additional references:

  • Ullman, Elements of ML programming, Prentice-Hall. Recommended
  • Paulson, ML for the Working Programmer, Cambridge University Press.
  • Dybvig, The Scheme Programming Language, Prentice-Hall.
  • Friedman, Scheme and the Art of Programming, MIT Press and McGraw-Hill.
  • Clocksin and Mellish, Programming in Prolog, Springer Verlag.
  • Bratko, Prolog Programming for Artificial Intelligence, Addison-Wesley. Recommended

    Plagiarism and Cheating:

  • The academic regulations of the University are outlined in the Code of Behaviour on Academic Matters.
  • Advice on academic offences