CSC 324 -- Principles of Programming Languages
Section L5101
Fall 2008
Index of this document
Contact information
|
L5101 |
Instructor: |
Gerald Penn |
Lectures: |
R 7-9, BA 1220 |
Office: |
PT 396B |
Telephone: |
(416)978-7390 |
Office Hours: |
W 4-5, R 5-6, or by appointment |
Email: |
gpenn@cdf.utoronto.ca |
Email with MIME-encoded or HTML message bodies will not be read nor
responded to.
Back to the index
Tutorials
All tutorials are held R 6-7 in BA 1220. There will be no tutorial
on
11 September.
A bulletin
board has also been created for the class, which will be monitored
by the TAs.
Back to the index
Course outline
-
(2 weeks) Formal Specification of Programming Languages
-
(4 weeks) Functional Programming: CaML
-
(3 weeks) Logic Programming: Prolog
-
(3 weeks) Design Principles for Programming Languages
-
(1 week) Review
As the textbook, we will be using Concepts
of Programming Languages, John
Mitchell, Cambridge, 2003.
Also recommended is Guy
Cousineau and Michel Mauny's
The
Functional Approach to Programming, Cambridge, 1998.
We will be using CaML
Light, and
SWI Prolog.
Back to the index
Calendar of important course-related events
Date |
Event |
Thu, 11 September |
First lecture |
Thu, 18 September! |
First tutorial |
Sun, 21 September |
Last day to add course |
Thu, 16 October |
Assignment 1 due |
Thu, 23 October |
Midterm (8-9 pm) |
Mon, 3 November |
Last day to drop course |
Thu, 13 November |
Assignment 2 due |
Thu, 4 December |
Last lecture |
Fri, 5 December |
Assignment 3 due |
8-19 December |
Final Exam period |
Back to the index
Evaluation and related policies
There will be four homeworks, one midterm, and a final exam. The
relative
weights of these components towards the final mark are shown in the
table
below:
Homework |
42% |
Midterm |
18% |
Final |
40% |
Important note on final: You must pass the final to
pass
the course. In other words, if you receive below a 50%
(after
curve) on the final exam, you automatically fail the course, regardless
of your performance on homeworks and the midterms.
Important note on homeworks: Homeworks will be distributed
electronically.
A1 and A2 will be collected only in tutorial or by appointment with the
TA for the homework in question. They will also be returned
in tutorial.
Lateness Policy: No late homeworks will be accepted without a
signed medical certificate. With a signed medical certificate, a
late outstanding assignment may be ``cancelled'' at the instructor's
discretion,
in which case the marks for that piece of work will be distributed over
the other marked work for the course in weighted proportion to the
other
work's contribution to the course grade. A missed midterm will be
cancelled, but again only with a signed medical certificate.
Silent policy: The TA is not obliged to answer
questions
posed less than 24 hours before any assignment is due, and is not
obliged to answer questions already answered on the newsgroup at any
time.
Students are encouraged to use the bulletin board for the course to
pose
their questions.
Remarking: Homeworks or exams written in pencil or erasable
ink
will not be remarked. A request for remarking should be directed
to the tutor who marked the assignment. The tutor is only
required
to remark once - if you still believe your solution is correct, you may
appeal to the instructor.
Policy on collaboration: Collaboration on homeworks and
copying
from others' homeworks are strictly prohibited - you are permitted to
speak
only with your tutors and the instructor about the homework. If
challenged
by either a tutor or the instructor, you must be able to reproduce and
explain any solution you submit in an oral exam. No student is
permitted
to discuss any midterm or final exam with any other student until the
instructor
or TAs provide the solutions to the exam. Failure to observe this
policy is an academic offense, carrying a penalty ranging from a zero
on
the homework to suspension from the university.
Back to the index
Announcements
In this space, you will find announcements related to the course.
Please
check this space at least weekly.
-
5 December: There will be a special review session from 4 to 6pm in BA
1200 on Tuesday, 9th December. No lecture will be prepared, so
come
with questions!
-
5 December: MATERIAL COVERED IN LECTURE 12: mode,
negation-as-failure,
cuts
-
28 November: MATERIAL COVERED IN LECTURE 11: non-monotonic reasoning,
recursion
in logic programming, choice points.
-
21 November: MATERIAL COVERED IN LECTURE 10: unification.
-
14 November: MATERIAL COVERED IN LECTURE 9: review of the language of
first-order
logic, terms vs. formulae, typing in Prolog, variable scope in Prolog,
reduction theorem-proving, Horn clauses, converting non-Horn formulae
into
Horn clauses.
-
7 November: MATERIAL COVERED IN LECTURE 8: motivation for typing,
record
types, type synonyms, function polymorphism, variant types, enumerated
types, auxiliary functions, scope, exceptions and exception handling.
-
31 October: MATERIAL COVERED IN LECTURE 7: midterm, flat recursion,
mutual
recursion, patterns.
-
17 October: ABOUT THE MIDTERM: this will take place from 8pm to
9pm
on 23rd October. The two hours preceding that will be devoted to
reviewing for the exam. You are responsible for everything that
we've
covered up through 16th October. No exam aids are allowed.
You don't need to bring paper, but you do need to bring pens.
Exams
written in pencil will not be remarked.
-
17 October: MATERIAL COVERED IN LECTURE 6: maps and reductions,
sequential
composition, local variables, beta-reduction and beta-expansion,
message
passing and object-oriented programming in CaML, tail recursion, linear
recursion.
-
9 October: MATERIAL COVERED IN LECTURE 5: conditional expressions
and matches, lambda terms, anonymous functions, Currying, higher-order
functions, side effects, references in CaML.
-
9 October: MATERIAL COVERED IN LECTURE 4: constructors and
selectors,
the unit type, predicates, values and evaluation, the principles
of "pure" functional programming.
-
29 September: MATERIAL COVERED IN LECTURE 3: compilation, typing
judgements,
parametric types, lists and tuples in CaML.
-
20 September: MATERIAL COVERED IN LECTURE 2: parse trees, ambiguity,
context-free
languages, Chomsky and Greibach normal forms, levels of programming
languages.
-
17 September: The tutorial on 18th September will take place from 8 to
9pm, and the lecture will take place from 6 to 8pm. This is just
a one-time swap - tutorial and lectures will take place at their usual
times again beginning on the 25th.
-
17 September: MATERIAL COVERED IN LECTURE 1: definition of
programming languages, properties of good programming languages and
programming
environments, context-free grammars. You should read Chapter 4
through
the end of section 1 in Mitchell.
-
11 September : Please note that the first tutorial is on
Thursday,
18 September (before the second lecture).
-
11 September: PREREQUISITES. To take this course you must (1)
have
successfully completed CSC 207/270 and CSC 236/238/240 or (2)
have
the permission of the instructor. You must also either
have
a CGPA of at least 3.0 or be enrolled in a CSC subject POSt. Note that
the University's automatic registration system does not check for
prerequisites:
even if you have registered into the course, you will not receive
credit
for it unless you had satisfied the prerequisite by the time you
registered.
Transfer
students and students awaiting rulings on cases of academic misconduct
should take special note of this.
Back to the index
Handouts
In this space you will find on-line postscript versions of course
handouts,
including homeworks and solutions (posted after the due date).
To view these handouts you will need access to a PDF viewer. If your
machine does not have the required software, you can allegedly
download
it for free.
Back to the index
Old exams
Some old midterm and final exams for this course (with no solutions).
Back to the index
Gerald Penn, 6
December,
2008
This web-page was adapted from the web-page for another course,
created by Vassos
Hadzilacos.