CMPT 383 Lecture Notes
- Course Introduction [“Course Introduction” slides]
- This Course [This Course slides]
- Overall Goals [Overall Goals slides]
- Topics (1) [Topics (1) slides]
- Grades [Grades slides]
- Weekly Exercises [Weekly Exercises slides]
- Assignments [Assignments slides]
- Exams [Exams slides]
- References [References slides]
- Expectations [Expectations slides]
- What is a program? [What is a program? slides]
- Imperative Programming [Imperative Programming slides]
- Declarative Programming [Declarative Programming slides]
- Functional Programming & Haskell [“Functional Programming & Haskell” slides]
- Haskell [Haskell slides]
- Haskell Basics [Haskell Basics slides]
- Haskell Functions [Haskell Functions slides]
- Pattern Matching [Pattern Matching slides]
- Conditionals [Conditionals slides]
- Repetition [Repetition slides]
- List Comprehensions [List Comprehensions slides]
- Let and Where [Let and Where slides]
- Recursion [Recursion slides]
- Isn't Recursion Slow? [Isn't Recursion Slow? slides]
- Tail Recursion [Tail Recursion slides]
- Creating Tail Recursion [Creating Tail Recursion slides]
- Aside: C and Tail Recursion [Aside: C and Tail Recursion slides]
- Haskell: Types & Functions [“Haskell: Types & Functions” slides]
- Functions and Operators [Functions and Operators slides]
- Parts of Lists [Parts of Lists slides]
- More List Processing [More List Processing slides]
- Haskell Types [Haskell Types slides]
- Type Classes [Type Classes slides]
- Partially-Applied Functions [Partially-Applied Functions slides]
- Curried Functions [Curried Functions slides]
- Manipulating Functions [Manipulating Functions slides]
- Lambda Expressions [Lambda Expressions slides]
- Haskell: Expression Evaluation [“Haskell: Expression Evaluation” slides]
- Assignment 1 [Assignment 1 slides]
- Lazy Evaluation [Lazy Evaluation slides]
- Controlling Laziness [Controlling Laziness slides]
- Function Application [Function Application slides]
- Pure Functions [Pure Functions slides]
- Concurrent Programming [Concurrent Programming slides]
- Monads [Monads slides]
- Monad: Maybe [Monad: Maybe slides]
- Monad: Random Numbers [Monad: Random Numbers slides]
- Haskell Tips [Haskell Tips slides]
- Functional Programming Context [Functional Programming Context slides]
- Functional + Imperative [Functional + Imperative slides]
- What Do Processors Do? [“What Do Processors Do?” slides]
- What Does A Programming Language Do? [What Does A Programming Language Do? slides]
- What Does A Compiler Do? [What Does A Compiler Do? slides]
- What Do Processors Do? [What Do Processors Do? slides]
- Pipelines [Pipelines slides]
- SIMD [SIMD slides]
- Multiple Cores [Multiple Cores slides]
- Memory Cache [Memory Cache slides]
- Summary [Summary slides]
- Language Design
- Languages: Types
- Languages: Memory
- Languages & Concurrency
- Languages: Functions
- Language Productivity
- Languages: Mixing Languages
- Rust & “Safe” Programming
- Rust: Concurrency
- Rust: Memory Management
- Rust: Epilogue
- Languages Matter
Course home page; lecture audio recordings.
Schedule, Summer 2025
Week |
Deliverables (*) |
Lecture Hour |
Lecture Date |
First Slide |
1 |
|
1, 2 |
May 12 |
Intro |
3 |
May 14 |
Pattern Matching |
2 |
Exer 1 |
4, 5 |
May 19 |
Victoria Day holiday 👑 |
6 |
May 21 |
List Comprehensions |
3 |
Exer 2 |
7, 8 |
May 26 |
Creating Tail Recursion |
9 |
May 28 |
Type Classes |
4 |
Exer 3 |
10, 11 |
Jun 2 |
Lambda Expressions |
12 |
Jun 4 |
|
5 |
Exer 4 |
13, 14 |
Jun 9 |
|
15 |
Jun 11 |
|
6 |
Exer 5 |
16, 17 |
Jun 16 |
|
18 |
Jun 18 |
|
7 |
Assign 1 |
19, 20 |
Jun 23 |
|
21 |
Jun 25 |
|
8 |
Exer 6, Midterm |
22, 23 |
Jun 30 |
|
24 |
Jul 2 |
Midterm Exam |
9 |
Assign 2 |
25, 26 |
Jul 7 |
|
27 |
Jul 9 |
|
10 |
Exer 7 |
28, 29 |
Jul 14 |
|
30 |
Jul 16 |
|
11 |
Exer 8 |
31, 32 |
Jul 21 |
|
33 |
Jul 23 |
|
12 |
Exer 9 |
34, 35 |
Jul 28 |
|
36 |
Jul 30 |
|
13 |
Exer 10, Assign 3 |
37, 38 |
Aug 4 |
BC Day holiday 🌲 |
39 |
Aug 6 |
|
14+ |
Final Exam |
— |
* Check CourSys for the actual due dates and times.
Exam instruction slide.