CMPT 383 Comparative Programming Languages
Spring 2026
| Instructor |
Yuepeng Wang |
| Time and Location |
Mon 12:30 - 2:20 pm @ SWH10041
Wed 12:30 - 1:20 pm @ AQ3182
|
| Instructor Email |
yuepeng@sfu.ca |
| Instructor Office Hours |
Wed 1:30 - 2:30 pm or by appointment |
| TA1 |
Qikang Liu |
| TA1 Email |
qla116@sfu.ca |
| TA1 Office Hours |
TBD |
| TA2 |
Jingqian Liu |
| TA2 Email |
jingqian_liu@sfu.ca |
| TA2 Office Hours |
TBD |
| TA3 |
David Deng |
| TA3 Email |
rda102@sfu.ca |
| TA3 Office Hours |
TBD |
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
- Homework 30%
- Programming Assignments 30%
- Midterm Exam 25%
- Quiz 15%
All homework, programming assignments, quizzes, and exams must be your own work.
Reference Books
- [LYAH] Miran Lipovaca. Learn You a Haskell for Great Good, 2011.
- [PIH] Graham Hutton. Programming in Haskell, 2016.
- [TAPL] Benjamin C. Pierce. Types and Programming Languages, 2002.
Tentative Schedule
| Week |
Date |
Topic |
References |
Assignment |
| 1 |
01/05 |
Introduction & Haskell Basics |
LYAH 1, 2 |
|
| 01/07 |
Types and Type Classes |
LYAH 3 |
|
| 2 |
01/12 |
Syntax in Haskell Functions |
LYAH 3, PIH 4 |
H1 |
| 01/14 |
Recursion |
LYAH 5, PIH 6 |
|
| 3 |
01/19 |
Higher-Order Functions |
LYAH 6 |
H2 |
| 01/21 |
Modules |
LYAH 7 |
|
| 4 |
01/26 |
Custom Types and Type Classes |
LYAH 8 |
H3 |
| 01/28 |
IO |
LYAH 9 |
P1 |
| 5 |
02/02 |
IO & Applicatives |
LYAH 9, 11 |
|
| 02/04 |
Applicatives |
LYAH 11, PIH 12.2 |
|
| 6 |
02/09 |
Monads & Monoids |
LYAH 12, PIH 12.3 |
H4 |
| 02/11 |
Monadic Parsing |
LYAH 13, PIH 13 |
|
| 7 |
02/16 |
Family Day (No Class) |
|
|
| 02/18 |
Reading Break (No Class) |
|
|
| 8 |
02/23 |
Midterm Exam |
|
|
| 02/25 |
Monadic Parsing |
PIH 13 |
P2 |
| 9 |
03/02 |
Lambda Calculus |
TAPL 5 |
|
| 03/04 |
Lambda Calculus |
|
H5 |
| 10 |
03/09 |
Operational Semantics |
TAPL 3 |
|
| 03/11 |
Operational Semantics |
|
H6 |
| 11 |
03/16 |
Type Checking |
TAPL 8 |
|
| 03/18 |
Type Checking |
TAPL 9, 11.5 |
P3 |
| 12 |
03/23 |
Type Inference |
TAPL 22.1-22.4 |
H7 |
| 03/25 |
Type Inference |
|
P4 |
| 13 |
03/30 |
Review & Logic Programming |
|
|
| 04/01 |
Quiz |
|
|
| 14 |
04/06 |
Easter Monday (No Class) |
|
|
| 04/08 |
Logic Programming |
|
|
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).