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