CMPT 383 Comparative Programming Languages
Spring 2025

Instructor Yuepeng Wang
Time and Location Tue 2:30pm - 5:20 pm @ SRYE1002
Instructor Email yuepeng@sfu.ca
Instructor Office Hours Wed 1:00 - 2:00 pm or by appointment
TA1 Xiaoyu Liu
TA1 Email xla411@sfu.ca
TA1 Office Hours Thu 4:00 - 5:00 pm @ Zoom
TA2 Jingqian Liu
TA2 Email jingqian_liu@sfu.ca
TA2 Office Hours Mon 11:30 am - 12:30 pm @ Zoom
TA3 David Deng
TA3 Email rda102@sfu.ca
TA3 Office Hours Fri 3:00 - 4:00 pm @ Zoom

Course Description

This course introduces the fundamental concepts behind different kinds of imperative and functional programming languages. It covers several topics, including the basics of functional programming, formal semantics, type checking, and type inference. Students will learn to program functionally, give semantics to program constructs, interpret program elements, check the correctness of types, and automatically infer the type of expressions in a program.

Grading

Reference Books

Tentative Schedule

Week Date Topic References Assignment
1 01/07 Introduction, Haskell Basics LYAH 1, 2
2 01/14 Haskell Functions, Recursion LYAH 3, 4 & PIH 4, 6 H1
3 01/21 Higher-Order Functions, Modules LYAH 5, 6 H2
4 01/28 Custom Types, Type Classes, IO LYAH 7, 8 H3
5 02/04 IO, Files, Applicative Functors LYAH 8, 11 & PIH 12.2 P1
6 02/11 Monads, Monoids, Monadic Parsing LYAH 12, 13 & PIH 12.3, 13 H4
7 02/18 Reading Break (No Class)
8 02/25 Midterm Exam, Monadic Parsing PIH 13 P2
9 03/04 Lambda Calculus TAPL 5 H5
10 03/11 Operational Semantics TAPL 3 H6
11 03/18 Type Checking TAPL 8, 9, 11.5 P3
12 03/25 Type Inference TAPL 22.1-22.4 H7, P4
13 04/01 Review, Logic Programming
14 04/08 Quiz

Academic Honesty Statement

Academic honesty plays a key role in our efforts to maintain a high standard of academic excellence and integrity. Students are advised that ALL acts of intellectual dishonesty will be handled in accordance with the SFU Academic Honesty and Student Conduct Policies (https://www.sfu.ca/policies/gazette/student.html).