Easily one of the most interesting and engaging textbooks I've read in my entire life. I remember barely doing any work for my day job while I powered through this book for a couple weeks.
Also, another +1 to Operating Systems: Three Easy Pieces [2], which was mentioned in this thread. I read this one cover to cover.
Lastly, Statistical Rethinking [3] really did change the way I think about statistics.
[0] https://www.nand2tetris.org/
[1] https://www.amazon.com/Elements-Computing-Systems-second-Pri...
* Turing Complete on Steam (if you're into video games): https://store.steampowered.com/app/1444480/Turing_Complete/ * The Elements of Computing Systems (if you'd rather follow along step by step in a book):https://www.amazon.com/Elements-Computing-Systems-second-Pri...
It goes really well with Elements of Computing Systems (2nd ed) [2] which I kind of think of as a "lab manual" where you get to build a computer from first principles.
[1] https://www.amazon.com/Code-Language-Computer-Hardware-Softw...
[2] https://www.amazon.com/Elements-Computing-Systems-second-Pri...
https://www.edx.org/course/how-to-code-simple-data
https://www.edx.org/course/how-to-code-complex-data
* The From Nand to Teris project, The Elements of Computing Systems: Building a Modern Computer from First Principles book, and/or Coursera course. Builds a hardware stack for a CPU and then a software stack (assembler, VM, high-level language).
https://www.coursera.org/learn/build-a-computer
https://www.coursera.org/learn/nand2tetris2
https://www.amazon.com/Elements-Computing-Systems-second-Pri...
* The How to Design Programs book. What the edX course above is based upon.
https://www.amazon.com/How-Design-Programs-Introduction-Prog...
* Structure and Interpretation of Computer Programs (SICP). Uses Scheme. One can use Racket with the `#lang sicp` language.
https://mitpress.mit.edu/sites/default/files/sicp/index.html
https://www.amazon.com/Structure-Interpretation-Computer-Pro...
YouTube playlist of the course by the authors: https://youtube.com/playlist?list=PLE18841CABEA24090
* Thinking as Computation: A First Course. Uses Prolog to solve problems of thinking.
https://www.amazon.com/Thinking-Computation-First-Course-Pre...
https://www.cs.toronto.edu/~hector/PublicTCSlides.pdf
* Turtle Geometry: The Computer as a Medium for Exploring Mathematics (shares an author with SICP). Uses Logo to explore turtle geometry/graphics. Can use any modern Logo implementation.
https://www.amazon.com/Turtle-Geometry-Mathematics-Artificia...
https://direct.mit.edu/books/book/4663/Turtle-GeometryThe-Co...
* Starting Forth. Uses Forth.
https://www.forth.com/starting-forth/
https://www.amazon.com/Starting-Forth-Leo-Brodie-ebook/dp/B0...
* Learning Processing: A Beginner's Guide to Programming Images, Animation, and Interaction and also The Nature of Code: Simulating Natural Systems with Processing. Uses Processing and p5.js (the JavaScript version of Processing).
http://learningprocessing.com/
https://www.amazon.com/Learning-Processing-Beginners-Program...
https://www.amazon.com/Nature-Code-Simulating-Natural-Proces...
The author's YouTube channel: https://youtube.com/c/TheCodingTrain
The Elements of Computing Systems: Building a Modern Computer from First Principles (Nisan and Schocken)
https://www.amazon.com/Elements-Computing-Systems-second-Pri...
https://www.amazon.com/Elements-Computing-Systems-second-Pri...
It's a bit basic in terms of compilers but it does teach a lot of useful things.