MITEECS6.001
Structure and Interpretation of Computer Programs (SICP)
The classic. SICP is the foundational text on how to think about programs — abstraction, modularity, recursion, evaluation, language design. Taught at MIT for decades before being retired in favour of the Python-based 6.0001/6.0002. Still essential reading.
The 1986 video lectures by Abelson and Sussman are how most people encounter the material.
