0-Intro
0-Intro
Yuepeng Wang
Spring 2025
1
Instructor
• Instructor: Yuepeng Wang
• Email: [email protected]
2
TA
• TA1: Xiaoyu Liu
• Email: [email protected]
• Office hours: Thursday 4 - 5 pm @ Zoom
https://www.cs.sfu.ca/~yuepeng/teaching/cmpt383.html
https://piazza.com/sfu.ca/spring2025/cmpt383
• Canvas
https://canvas.sfu.ca/courses/88844
4
What is This Course About?
• Functional programming
5
Why Do We Learn It?
• Learn the functional programming paradigm, which facilitates
concurrency, parallelization, and programming language implementation
• Learn the difference between functional and imperative programming
• Have an in-depth understanding of types in programming languages, a
simple yet effective abstraction to help ensure correctness
• Understand the foundations of programming languages
• Build an idea of programming language design and implementation
• Improve programming skills
• Get ready to read formal documentation and research papers
6
Course Overview
• Part 1: functional programming
7
Course Overview
• Part 2: foundations of programming languages
• Lambda calculus
• Operational semantics
• Type checking
• Type inference
8
Course Overview
• Part 3: other programming paradigms
• Logic programming
• Datalog
9
Tips for Learning
• Review the course materials after class
10
Reference Book
Miran Lipovaca
Learn You a Haskell for Great Good!
No Starch Press, 2011
http://learnyouahaskell.com/chapters
11
Reference Book
Graham Hutton
Programming in Haskell
Second edition
Cambridge University Press, 2016
12
Reference Book
Benjamin C. Pierce
Types and Programming Languages
First edition
MIT Press, 2002
13
Grading
• Homework -- 30%
• 4 assignments (coding)
14
Questions?
15