CMPT 383 Lecture Notes

  1. Course Introduction [“Course Introduction” slides]
    1. This Course [This Course slides]
    2. Online Offering Strategy [Online Offering Strategy slides]
    3. Topics (1) [Topics (1) slides]
    4. Overall Goals [Overall Goals slides]
    5. Grades [Grades slides]
    6. Weekly Exercises [Weekly Exercises slides]
    7. Assignments [Assignments slides]
    8. Quizzes [Quizzes slides]
    9. Project [Project slides]
    10. References [References slides]
    11. Expectations [Expectations slides]
    12. What is a program? [What is a program? slides]
    13. Imperative Programming [Imperative Programming slides]
    14. Declarative Programming [Declarative Programming slides]
  2. Functional Programming & Haskell [“Functional Programming & Haskell” slides]
    1. Haskell [Haskell slides]
    2. Haskell Basics [Haskell Basics slides]
    3. Haskell Functions [Haskell Functions slides]
    4. Pattern Matching [Pattern Matching slides]
    5. Conditionals [Conditionals slides]
    6. Repetition [Repetition slides]
    7. List Comprehensions [List Comprehensions slides]
    8. Let and Where [Let and Where slides]
    9. Recursion [Recursion slides]
    10. Isn't Recursion Slow? [Isn't Recursion Slow? slides]
    11. Tail Recursion [Tail Recursion slides]
    12. Creating Tail Recursion [Creating Tail Recursion slides]
    13. Aside: C and Tail Recursion [Aside: C and Tail Recursion slides]
  3. Haskell: Types & Functions [“Haskell: Types & Functions” slides]
    1. Functions and Operators [Functions and Operators slides]
    2. Parts of Lists [Parts of Lists slides]
    3. More List Processing [More List Processing slides]
    4. Haskell Types [Haskell Types slides]
    5. Type Classes [Type Classes slides]
    6. Partially-Applied Functions [Partially-Applied Functions slides]
    7. Curried Functions [Curried Functions slides]
    8. Manipulating Functions [Manipulating Functions slides]
    9. Lambda Expressions [Lambda Expressions slides]
  4. Haskell: Expression Evaluation [“Haskell: Expression Evaluation” slides]
    1. Assignment 1 [Assignment 1 slides]
    2. Lazy Evaluation [Lazy Evaluation slides]
    3. Controlling Laziness [Controlling Laziness slides]
    4. Function Application [Function Application slides]
    5. Pure Functions [Pure Functions slides]
    6. Concurrent Programming [Concurrent Programming slides]
    7. Monads [Monads slides]
    8. Monad: Random Numbers [Monad: Random Numbers slides]
    9. Haskell Tips [Haskell Tips slides]
    10. Functional Programming Context [Functional Programming Context slides]
    11. Functional + Imperative [Functional + Imperative slides]
  5. What Do Processors Do?
  6. Language Implementations
  7. Languages: Types & Memory
  8. Languages & Concurrency
  9. Language Productivity
  10. Concurrent Programming & Go
  11. Goroutines & Channels
  12. Go Structs
  13. Go Concurrency Patterns
  14. Logic Programming & Prolog
  15. Languages Matter

Course home page.

Schedule, Summer 2020

Week Deliverables (*) Lecture Hour Date First Slide Video Link
1 1 May 12
2 May 12
3 May 14
2 Exer 1 4 May 19
5 May 19
6 May 21
3 Exer 2 7 May 26
8 May 26
9 May 28
4 Exer 3 10 Jun 2
11 Jun 2
12 Jun 4
5 Exer 4 13 Jun 9
14 Jun 9
15 Jun 11
6 Exer 5 16 Jun 16
17 Jun 16
18 Jun 18
7 Exer 6, Assign 1 19 Jun 23
20 Jun 23
21 Jun 25
8 Quiz 1 22 Jun 30
23 Jun 30
24 Jul 2
9 Exer 7 25 Jul 7
26 Jul 7
27 Jul 9
10 Exer 8, Assign 2 28 Jul 14
29 Jul 14
30 Jul 16
11 Exer 9, Quiz 2 31 Jul 21
32 Jul 21
33 Jul 23
12 Exer 10, Assign 3 34 Jul 28
35 Jul 28
36 Jul 30
13 Exer 11, Quiz 3 37 Aug 4
38 Aug 4
39 Aug 6
14 Project

* Check CourSys for the actual due dates and times.