CS 450: Structure of Higher Level Languages
Spring 2020
- Location: (M01-0409) Room 0409, 1st floor, McCormack
- Schedule: 3:00pm to 3:50pm, Monday, Wednesday, Friday
- Email:
Tiago.Cogumbreiro@umb.edu
- Office:
(M03-0201-16) Room 0201-16, 3rd floor, McCormack #cs450 (Discord)
- Office hours: 4:00pm - 5:00pm Monday/Tuesday/Wednesday (in-person)
- Abdelrahman Obyat, Dennis Liew
- Office:
(M03-0201-33) Room 0201-33, 3rd floor, McCormack #cs450 (Discord)
- Office hours: 2:00pm to 4:00pm and 5:15pm to 7:00pm, Tuesday, Thursday
Class Schedule
Note: Any lecture titles in future dates are considered tentative.
Date |
# |
Lecture |
|
|
|
☙ Module 1: Basic Functional Programming ❧ |
|
Mo, Jan 27 |
01 |
Course overview; arithmetic operations
|
|
We, Jan 29 |
02 |
Function calls; boolean logic
|
|
Fr, Jan 31 |
03 |
Function declarations; function definitions
|
|
Mo, Feb 3 |
04 |
Pairs; lists
|
|
We, Feb 5 |
05 |
Lists; quoting
|
|
|
|
☙ Module 2: Advanced Functional Programming ❧ |
|
Fr, Feb 7 |
06 |
Nested definitions; caching
|
|
Mo, Feb 10 |
07 |
Tail-call optimization; structs
|
|
We, Feb 12 |
08 |
Functions as values (closures)
|
|
Fr, Feb 14 |
09 |
Dynamically-created funcs, storing funcs in lists, currying
|
|
Mo, Feb 17 |
|
(School closure) |
|
We, Feb 19 |
10 |
Function evaluation, abstract syntactic trees
|
|
Fr, Feb 21 |
11 |
Currying, exists, map
|
|
Mo, Feb 24 |
12 |
Tail-call optimization,filter
|
|
We, Feb 26 |
13 |
Reduction
|
|
|
|
☙ Module 3: Lazy evaluation ❧ |
|
Fr, Feb 28 |
14 |
Thunks and promises
|
|
Mo, Mar 2 |
15 |
Streams
|
|
We, Mar 4 |
16 |
Evaluating expressions; Variable argument functions
|
|
|
|
☙ Module 4: Formal methods; Lambda calculus ❧ |
|
Fr, Mar 6 |
17 |
Language λS: slow function calls
|
|
Mo, Mar 9 |
18 |
Lexical/dynamic scoping
|
|
We, Mar 11 |
19 |
Language λE: fast function calls
|
|
Fr, Mar 13 |
|
(School closure) |
|
Mo, Mar 16 |
|
(School closure) |
|
We, Mar 18 |
|
(School closure) |
|
Fr, Mar 20 |
|
(School closure) |
|
Mo, Mar 23 |
20 |
Implementing Language λE; Church encoding
|
|
|
|
☙ Module 5: Mutable lambda calculus ❧ |
|
We, Mar 25 |
21 |
Language λF: adding definitions incorrectly
|
|
Fr, Mar 27 |
22 |
Implementing λF
|
|
Mo, Mar 30 |
23 |
Language λD: adding definitions correctly
|
|
|
|
QA session
|
We, Apr 1 |
24 |
Implementing λD
|
|
Fr, Apr 3 |
25 |
Implementing λD / Why study programming languages?
|
|
|
|
☙ Module 6: Monads and side effects ❧ |
|
Mo, Apr 6 |
26 |
Garbage collection
|
|
|
|
QA session
|
|
|
Spring 2019 classroom recording
|
We, Apr 8 |
27 |
Mark and sweep; sets; refactoring evaluation
|
|
Fr, Apr 10 |
28 |
Effectful operations
|
|
Mo, Apr 13 |
29 |
Refactoring errors; monads
|
|
|
|
QA session
|
We, Apr 15 |
30 |
Dynamic dispatching
|
|
Fr, Apr 17 |
31 |
Dynamic binding
|
|
Mo, Apr 20 |
|
(School closure) |
|
We, Apr 22 |
32 |
Monadic continuations
|
|
|
|
QA session
|
|
|
☙ Module 7: Abstraction ❧ |
|
Fr, Apr 24 |
33 |
PhD in CS/Pattern-matching
|
|
Mo, Apr 27 |
34 |
Generic methods
|
|
|
|
QA session
|
We, Apr 29 |
35 |
Macros
|
|
|
|
☙ Module 8: Object Oriented Programming ❧ |
|
Fr, May 1 |
36 |
LambdaJS
|
|
Mo, May 4 |
37 |
JavaScript method and class inheritance
|
|
We, May 6 |
38 |
Translating SimpleJS to LambdaJS
|
|
Fr, May 8 |
39 |
The essence of JavaScript
|
|
Mo, May 11 |
40 |
QA Session
|
|
We, May 13 |
41 |
Victory lap
|
|