The course is mainly for students interested in fundamentals of software, industry peers engaged in software development, etc. No pre-requisite knowledge is requred and the course strives to spark interest in subjects related to fundamentals in software development among students. We may publish some more advanced courses in the future.
The programming language for this course will be Rescript.
Date | Topic | Slides | Example code |
---|---|---|---|
Week 0 | Introduction to language design and implementation | Lec0.pdf | code0.zip |
Week 1 | ReScript crash course | Lec1.pdf | N/A |
Week 2 | λ calculus | Lec2-part1.pdf, Lec2-part2.pdf | code2.zip |
Week 3 | Names,binders, De Bruijn index | Lec3.pdf | code3.zip |
Week 4 | Closure calculus | TBD | TBD |
Week 5 | Pattern matching | TBD | TBD |
Week 6 | Stack machine and compilation | TBD | TBD |
Week 7 | WebAssembly | TBD | TBD |
Week 8 | Garbage collection and memory management | TBD | TBD |
Week 9 | Type checking | TBD | TBD |
Week 10 | Unification, type inference, bidirectional type checking | TBD | TBD |
Week 11 & 12 | Formal verification, Guest lectures | TBD | TBD |