Description

This course is designed to provide a thorough introduction to the foundations and paradigms of programming languages. In particular, we will investigate functional programming in theory and practice and learn about some of the considerations underlying Java and object-oriented programming. Some of the topics to be covered are functional programming, lambda-calculus, type systems, continuations, Java and the object-oriented paradigm, and subtyping.

Lectures

MWF 2:35pm--3:25pm, Stewart Biology N2/2

Instructors

Teaching Assistants

Office Hours

Required Reading

Supplementary Reading

Evaluation

Assignments

There will be 6 homework assignments. Assignments must be handed in electronically using the handin tool (see the FAQ page for more information on handin); assignments submitted via email will not be accepted.

Submitted programs which do not compile or do not match the given type specification automatically receive a 50% penalty. See the FAQ page for information on how to compile your programs or contact a TA if you have trouble.

Each student has two late days: you can turn in two assignments one day late, or one assignment two days late. Otherwise, late assignments will be accepted only in extraordinary circumstances, subject to applicable regulations.

Assginments can be done individually or in groups of up to two students. If you choose to do an assignment with another student, you have to submit only one copy with both names. And a short description of what was done by each student. We encourage you to work together on all questions.

Midterm

Date: Fri, Feb 22, 2:35pm - 3:25pm

Closed book. Cheat sheet (one sheet, both sides) allowed.

Final

Date: TBA. Closed book. Cheat sheet (one sheet, both sides) allowed.

Language Rights

In accord with McGill University's Charter of Students' Rights, students in this course have the right to submit in English or in French any written work that is to be graded.

Academic Integrity

McGill University values academic integrity. Therefore all students must understand the meaning and consequences of cheating, plagiarism and other academic offenses under the Code of Student Conduct and Disciplinary Procedures (see http://www.mcgill.ca/integrity/ for more information). Most importantly, work submitted for this course must represent your own efforts. Copying assignments or tests from any source, completely or partially, or allowing others to copy your work, will not be tolerated.