Homepage for CSC 324, Fall 2016

Principles of Programming Languages

University of Toronto Mississauga

You should check the following announcements regularly.
ANNOUNCEMENTS:
  • Solutions to assignment 3 are now available outside my office door.
  • Results for assignment 2 are now available on UTORSubmit.
  • The submission instructions for assignment 3 have been clarified. (see below)
  • Assignment 3 is now complete. No more questions will be added.
  • Question 7(e) of assignment 3 has been clarified.
  • In assignment 3, unless a question specifies otherwise, do not use any built-in Prolog predicates except those mentioned in the preamble to the assignment.
  • The first seven questions of assignment 3 are now available.
  • The first six questions of assignment 3 are now available.
  • The first two questions of assignment 3 are now available, below.
  • A typo in Question 5 of Assignment 2 has been corrected (every occurrence of tree should be 'a tree).
  • EXTENSION:the deadline for assignment 2 is extended by 2 days to Thursday Nov 17 at 11pm. Anyone handing it in by the original deadline will receive 10 bonus points.
  • Solutions to assignment 2 can now be submitted via UTORSubmit.
  • Submission instructions for assignment 2AL are now available, below.
  • A typo in question 6(b) of assignment 2 has been fixed (remList1 should be remList2).
  • To increase the depth of printing of ML expressions to, say, 20, type Control.Print.printDepth := 20;
  • There is a link below to notes about using references in ML.
  • Question 4(f) on assignmnet 2 has been clarified,
  • Assignment 2 is now complete. No more questions will be added.
  • The preamble to assignment 2 bas been updated. Please read it carefully.
  • Question 1 of assignment 2 has been expanded.
  • Robert has put a link to a Google doc on his tutorial website where you can (anonymously) post questions abot the midterm for him to answer in tutorial. The link is caled "The Question Board."
  • A typo in question 3(d) of assignment 2 has been corrected (the name field should be the student field).
  • Question 4(f) on assignment 2 has been clarified.
  • An extra condition has been added at the start of question 5 on assignment 2.
  • More questions have been added to assignment 2 (Nov 6). More will be added shortly.
  • More questions have been added to assignment 2 (Nov 5). More will be added shortly.
  • The preamble to question 2(d) on assignment 2 has been clarified.
  • More question have been added to assignmnet 2 (Nov 4). More will be added shortly.
  • The first two questions of assignment 2 are now posted, below.
  • The MIDTERM TEST will be in class on Weds Nov 2. It will start at 3:10pm sharp. Closed book. See details below.
  • Marks for assignment 1 are now available on UTORSubmit. Justin marked questions 1-6, and Robert marked questions 7-10. Please see them if you have any questions about the marking.
  • Assignment solutions will be handed out in tutorial.
  • Solutions to assignment 1 can now be submitted via UTORSubmit.
  • Submission instructions for assignment 1 are now available, below.
  • Assignment 1 is due on TUESDAY Oct 11 at 11pm.
  • For full marks, your solution to question 8 on Assignmnet 1 should be simpler than your solution to question 9b. (In particular, you should not use your solution to question 9b to solve question 8.)
  • A hint has been added to question 8 in Assignment 1.
  • 5 bonus points have been added to question 9b in Assignment 1.
  • A large test graph has been added to Assignment 1 for questions 8 and 9. See the preamble to question 7 for details. The graph can be downloaded below.
  • In Assignment 1, your solutions to questions 7, 8, abd 9 should be able to handle very large graphs. In particular, your Scheme functions should not run in exponential time.
  • The preamble to Assignment 1 has been modified to clarify what functions you are allowed to use.
  • A typo in Question 9 of Assignment 1 has been corrected (Sept 29, 2am)
  • Assignment 1 is now complete.
  • The course textbook (for ML) is now available in the bookstore.
  • The first 9 questions of Assignment 1 are now available.
  • Some of the questions in Assignment 1 have been clarified (Sept 22).
  • The first 5 questions of Assignment 1 are now available, below.

  • Prerequisites: CSC207H5/270H5, 236H5/238H5, 290H5
  • Course information sheet
  • Text: Jeffrey Ullman, Elements of ML Programming, 2nd edition, 1997, Addison Wesley.

    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 335.
  • Tutorials: Fri 11am-12 DH2020, Fri 11am-12 DH2026, Fri 12-1pm DH2020
  • Tutorials may introduce new material not covered in the lectures or the text.
  • Teaching Assistants: Robert Burton and Justin Bell
  • Robert's tutorial notes are here.
  • Justin's tutorial notes are here.

    Midterm test:

  • in class, Weds Nov 2.
  • Starts at 3:10pm sharp!
  • 50 minutes, ends at 4pm.
  • There will be a 1-hour lecture after the test.
  • Closed book.
  • CHEAT SHEET: 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 cover both Scheme and ML.
  • You are responsible for all lectures, tutorials, the assignments and assignment solutions.
  • Here is a copy of an old midterm.
  • 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.
  • CHEAT SHEET: 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 cover the entire course, but will emphasize material not on the midterm.
  • You are responsible for all lectures, tutorials, assignments and assignment solutions.
  • Here is a copy of an old exam.
  • 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.
  • Scheme code for generating large test graphs.
  • 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 (SMLNJ) -- Downloads
  • SWI-Prolog

    User manuals and tutorials:

  • The Racket Guide (see chapters 1 and 2)
  • Dr Racket
  • A Gentle Introduction to ML
  • SMLNJ user's guide
  • SMLNJ interactive system
  • Learn Prolog Now!

    Additional notes on how to use the programming languages:

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

    Additional references:

  • Sethi, Programming Languages: Concepts and Constructs, Addison-Wesley (includes 1 or 2 chapters on each language used in this course).
  • 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