This repository contains lecture notes (TypeScript Jupyter notebooks) for a 1 semester upper-level course on programming and programming languages. The basis for the lecture notes is a course taught at San Francisco State University (SFSU) in Fall 2021 and Spring 2022.
The hope of this class is to expose you to different ways of programming and how different programming languages support these ways of programming. Such a class is often taught using a non-main-stream langauge (e.g.,Scheme). Instead, we're using TypeScript, a superset of JavaScript. The advantage is that you'll come away learning a popular language that is widely used in web programming.
- Language primitives (i.e., building blocks of languages): lecture 02 - lecture 10.
- pure functions and first-class functions
- recursion
- algebraic data-types
- functional vs. object-oriented programming
- Language paradigms (i.e., combinations of language primitives): lecture 11 - lecture 17.
- domain-specific languages and declarative programming
- concurrency
- laziness
- Building a language (i.e., designing your own language): lecture 18 - lecture 21.
- interpreters and transpilers
- meta-programming
Why not slides? Simply put, slides are a polished product that are not interactive and often do not show the thought proces and trial/error that goes into coming up with a piece of code that works. Jupyter TypeScript enables you to explore concepts with actual code that you can modify.
npm install
(first time)jupyter notebook
- Lawrence Kesteloot, Becker Polverini, and Aaron Bembenek.
- The students at SFSU.