Table of Contents

General Information

Marsha Chechik
Office Hours:
Tuesday and Thursday 4-5pm and by appointment
D.L. Pratt 384, X3820
Tuesday and Thursday 12-1pm, MP203
Monday 12-1pm, MP102, SS1073, SS1088
Notes Online:
Some material for this course is available online
David Neto
Irene Fung
Nick Zahariadis

Synopsis (adopted from the calendar):

Alternative paradigms for programming, illustrated by particular programming languages. Students already familiar with the procedural approach of languages such as Turing, C or Fortran will learn about functional programming (exemplified by Scheme), logic programming (Prolog), and object-oriented programming (exemplified by Object-Oriented Turing or C++). Other languages may be used for illustration purposes.


Emphasis of this course is two-fold. On one side, it introduces various programming paradigms and involves considerable amount of programming. On the other side, it covers major concepts in programming languages organization. Such topics include:

Lambda calculus, memory management, parameter passing, procedure activation, data structures layout; data encapsulation, inheritance, and object-oriented programming; recursion, types and typing systems, functional programming; Horn clauses and notion of logic programming.


CSC 238H/MAT 246Y, CSC 148H


Required Text Books

[TEXT] R. Sethi, Programming languages: concepts and constructs, 2nd ed., Addison Wesley, 1996. The bookstore offers a $4.00 coupon for this book.

[NOTES] J. Mylopolous, Lecture notes for principles of programming languages, 1993 (should be available in bookstore)

Recommended Text Books

[CLOCK] W. Clocksin and C. Mellish, Programming in Prolog, 4th ed., Springer-Verlag, 1994

[HOLT] R. Holt, Turing Reference Manual, 5th ed., 1996

[WILSON] P. Wilson and B. Horn, Lisp, 3rd ed., Addison-Wesley, 1989

[SCHEME] MIT Scheme Reference Manual, Edition 1.32 alpha, for Scheme Release 7.2, 25 October 1993. A copy will be available for your reference in the library. However, the on-line version is nice and easy to use. Other Scheme-related information is available here.

Other Good References

[STEEL] G. Steele, Common Lisp: the language, 2nd ed., Digital Press, 1990

[SEBESTA] R. Sebesta, Concepts of Programming Languages 3rd ed., Addison Wesley, 1993

Coursework and Policies

Coursework consists of three projects, a midterm and a final. In addition, there will be 5-10 minute quizzes given during tutorials. These are graded as 0 (wrong), 1 (correct) and 1/2 (all-inclusive partial credit). As the course progresses, you will be assigned lists problems to work on. You do not have to turn those in. You are welcome to collaborate on them and/or check your work on a computer. If you do this work, you should have no problem completing the quizzes on time. We will count 10 best quizzes, which are worth 10% for your final mark. There will be one Midterm exam, roughly during the week of October 27th, worth 25%. The projects are worth 30%. Projects are to be submitted electronically, and are due at midnight of the due date. A grace period of 30 minutes is given. No further extensions are allowed. Penalty for late projects: 10% reduction per day up to 7 days (penalty calculated on actual assignment mark). Extensions to assignment deadlines will only be granted for medical reasons. To qualify for such an extension you need to present an official doctor's note clearly stating the period during which you are unable to do coursework.

Marking Scheme

Project 1 (Scheme) 10%
Project 2 (Prolog) 10%
Project 3 (OOT or C++) 10%
Quizzes 10%
Midterm test 25%
Final exam 35%

Note, however, that ALL projects have to be turned in working correctly in order to receive a passing grade for the course. This means that even if your project is late and you receive a grade 0 for it, you still must turn it in working correctly in order to pass the course. You are expected to work on the projects alone; plagiarism is a serious academic offense. If you have exchanged ideas with a fellow student and thus have answers which might be falsely considered as being plagiarised, you should state this.

Computing Facilities

The programming assignments will make use of the CDF Unix facilities. Although you may do your work at your home PC, all projects should be uploaded and run on CDF machines in order to receive credit for them !!!!!. You will be informed of your account on CDF once it becomes available. Those unfamiliar with CDF will find A Student's Guide to CDF to be useful. This guide is available in the bokstore and costs a couple of dollars. There is also an excellent book on Unix (in case you need to brush it up), A Student's Guide to Unix by Harvey Hahn. The CDF workstations are located in the Engineering Annex in EA107, EA201, and EA203. These rooms are locked. The combination changes at the beginning of every term. This term's combination is 3, 1-2, 4. File /local/doc/frequently.asked.questions and Web site contain a variety of useful information about working on the CDF Unix machines. You are asked to read newsgroups ut.cdf.announce and ut.cdf.general which contain postings summarizing the more important rules about account use and game playing. Finally, there is a limit to the free printing provided by CDF: 300 sides per student per course. Since most of the information for this course is going to be distributed electronically, you should use your quota carefully. You are encouraged to read manuals and other large volumes on-line, rather than printing them out.

You can ftp and install a version of Scheme (MIT Scheme 7.4.2) for OS/2, Linux and MS Windows 3.1, 95 and NT. However, your programs need to run on CDF machines, too!!!!!

Distribution of Information

Some of the course material will be available online. In will be announced in class when this material is available. It is the responsibility of the students to obtain this information in the timely matter. A browser with the capabilities of Netscape 2.0 or greater is recommended.

The course newsgroup, ut.cdf.csc324h will be used as a forum for posting notices of general interest to the class. To read this newsgroup type rn ut.cdf.csc324h. To post to this newsgroup, mail to ut.cdf.csc324h@cdf.

Good luck !!!!!!