0% found this document useful (0 votes)
2 views

0-Intro

CMPT383 is a course on Comparative Programming Languages, focusing on functional programming, programming language foundations, and various programming paradigms. The course includes practical coding assignments, a midterm exam, and quizzes, with resources available through a dedicated website and Piazza. Instructors and TAs are available for support via email and scheduled office hours on Zoom.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views

0-Intro

CMPT383 is a course on Comparative Programming Languages, focusing on functional programming, programming language foundations, and various programming paradigms. The course includes practical coding assignments, a midterm exam, and quizzes, with resources available through a dedicated website and Piazza. Instructors and TAs are available for support via email and scheduled office hours on Zoom.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 15

CMPT383 Comparative Programming Languages

Lecture 0: Introduction and Overview

Yuepeng Wang
Spring 2025

1
Instructor
• Instructor: Yuepeng Wang

• Email: [email protected]

• Office hours: Wed 1 - 2 pm or by appointment

• Location of office hours: Zoom

2
TA
• TA1: Xiaoyu Liu
• Email: [email protected]
• Office hours: Thursday 4 - 5 pm @ Zoom

• TA2: Jingqian Liu


• Email: [email protected]
• Office hours: Monday 11:30 am - 12:30 pm @ Zoom

• TA3: David Deng


• Email: [email protected]
• Office hours: Friday 3 - 4 pm @ Zoom
3
Course Information
• Website (with tentative schedule)

https://www.cs.sfu.ca/~yuepeng/teaching/cmpt383.html

• Piazza (ask questions here)

https://piazza.com/sfu.ca/spring2025/cmpt383

• Canvas

https://canvas.sfu.ca/courses/88844

4
What is This Course About?
• Functional programming

• Foundations of programming languages

• Different programming paradigms

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

• Haskell programming language

• Philosophy of functional programming

• Common functions, data structures, and patterns in functional


programming

• Approach to solving problems functionally

7
Course Overview
• Part 2: foundations of programming languages

• Syntax, grammar, and parsing

• 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

• Practice coding in Haskell

• Always ask the question: what is the type of ...?

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%

• 7 assignments (coding and written)

• Programming assignments -- 30%

• 4 assignments (coding)

• In-person midterm exam on Feb 25 -- 25%

• In-person quiz on Apr 8 -- 15%

14
Questions?

15

You might also like