Description

This course is designed to provide a thorough introduction to the foundations and paradigms of programming languages. In particular, we will study functional programming in theory and practice. Among the topics covered are functional programming, type systems, continuations, Java and the object-oriented paradigm, and subtyping.

Lectures

MWF 1:35pm–2:25pm, Macdonald Engineering 280

Instructor

Joshua Dunfield (joshua.dunfield at gmail dot com)

Teaching Assistants

Required Reading

Supplementary Reading

The following will be available in the Schulich library.

Evaluation

Assignments

There will be 5 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.

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.

Midterm

Mon., March 1, 1:35pm–2:25pm, Macdonald Engineering 280. Open notes.

Final

TBA. Open book and open notes.

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.