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