Table of Contents


General Information

Instructor:
Marsha Chechik
Email:
chechik@cs.toronto.edu
Office Hours:
Tuesday and Thursday 3-4pm and by appointment
Office:
D.L. Pratt 384, X3820
Lectures:
Tuesday and Thursday 2-3pm
Tutorials:
Monday 3-4pm, HA401, WB342, GB405
Lab:
Monday 4-6pm, EA 109
Notes Online:
Most material for this course is available online
Tutors:
Nick Zahariadis (Section 0101, HA401)
Amgad Faltaous (Lab, EA109)
Laura Sedgwick (Section 0103, GB405)
Yiming Ye (Section 0102, WB342)

Synopsis (adopted from the catalog):

Study of programming styles and paradigms. Included are imperative, functional, logic-based and object-oriented approaches. Languages that support these programming styles will be introduced. Languages treated in this course include C/C++, ML and Prolog. Other languages may be used for illustration purposes.

Overview:

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. Topics include:

Overview of procedural programming languages, parameter passing, procedure activation, data structures layout; data encapsulation, inheritance, and object-oriented programming using C++; recursion, types and typing systems, functional programming using ML; notion of logic programming, Prolog.

Prerequisites:

This course assumes that you have solid knowledge of C.


Texts:

Required Text Book

[TEXT] R. Sethi, Programming languages: concepts and constructs, 2nd ed., Addison Wesley, 1996

Recommended Text Books

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

[LIPP] S. Lippman, C++ Primer, 2nd ed., Addison-Wesley, 1992

[STAND] J. Ullmann, Elements of ML Programming, Prentice Hall, 1994

Other Good References

[STROUS] B. Stroustrup, The C++ Programming Language, 2nd edition, Addison Wesley, 1993

[K&R] B. Jernighan and D. Ritchie, The C Programming Language, 2nd ed., Prentice-Hall, 1991

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

[MLNOTES] ML of New Jersey, Manual.; A lot of very useful information on ML is also available at http://foxnet.cs.cmu.edu/sml.html.


Coursework and Policies

Coursework consists of four 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 is worth 25%. The four projects are worth 25%. 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

Project1 (C) 6%
Project2 (C++) 7%
Project3 (ML) 6%
Project4 (Prolog) 7%
Quizzes 10% every week, on tutorial hour
Midterm test 25% November 5, SF1013, 6:00-8:00p.m.
Final exam 40% December 6-19

Note, however, that ALL projects have to be turned in working correctly in order to receive a passing grade for 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 construed as being plagiarised, you should state this.

Computing Facilities

The programming assignments will make use of the ECF Unix facilities. Although you may do your work at your home PC, all projects should be uploaded and run on ECF machines in order to receive credit for them !!!!!. You will be informed of your account on ECF once it becomes available. Those unfamiliar with ECF should find information in http://www.ecf.toronto.edu/ecf useful. This class has an assigned time period, on Mondays 4-6, right after a tutorial session, in room EA 109 in Engineering Annex. This is a UNIX lab with 35 NCD B&W Xterminals, and one of the markers or myself will be there to assist you with any questions you may have.

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.ecf.csc326h will be used as a forum for posting notices of general interest to the class. To read this newsgroup from ECF, type rn csc326h. To post to this newsgroup, mail to ut.ecf.csc326h@ecf.

Good luck !!!!!!