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
- 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/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).