Easy Foundations for Programming Languages I — Introduction
Begin programming language theory with model languages, lambda notation, scope, reduction, and three complementary ways to explain what programs mean.
Begin programming language theory with model languages, lambda notation, scope, reduction, and three complementary ways to explain what programs mean.
How can a tiny fingerprint represent a large object? Use randomized hashing to accelerate pattern matching while keeping collision risk under control.
Follow the search for bipartite perfect matchings from algebraic formulations to sequential and parallel algorithms built around determinant computation.
Evaluate a polynomial at random and uncover a powerful algorithmic idea linking identity testing, matrix verification, and bipartite perfect matching.
Why do imperative, functional, and logic languages feel so different? Compare their computational styles and the design choices behind each language family.

十一篇程序语言基础笔记的中文导航,从语言范式、数学记号和 PCF 逐步走向类型、证明系统与命令式语义。
When integer programs are too hard, randomized rounding offers a way forward. Follow the method from LP relaxation to congestion guarantees.
Learn to turn expectations into high-probability guarantees with Markov, Chebyshev, and Chernoff bounds, then apply them to robust mean estimation.
Explore how random choices simplify global minimum cut and median selection through Karger, Karger–Stein, and randomized selection algorithms.
Can randomness make an algorithm more reliable? Start with fast matrix multiplication verification and build intuition for probabilistic correctness and repetition.