There is a book-length expansion of this paper that goes into more detail: https://github.com/IUCompilerCourse/Essentials-of-Compilatio...
"A Data-Centric Introduction to Computing"
# Programming Language Theory
"Programming Languages: Application and Interpretation"
"Crafting Interpreters"
https://craftinginterpreters.com/
# Algorithms/Data Structures
* Pure C *
"Algorithmic Thinking: A Problem-Based Introduction"
https://nostarch.com/algorithmic-thinking-2nd-edition
# Competitive Programming/Interviews
"Competitive Programming book, 4th edition (CP4)"
"Elements of Programming Interviews in Python"
http://elementsofprogramminginterviews.com/
# Compilation
"Essentials of Compilation: An Incremental Approach in Python"
https://github.com/IUCompilerCourse/Essentials-of-Compilatio...
# Database Systems
"CMU: Intro to Database Systems"
https://15445.courses.cs.cmu.edu/
"CMU: Advanced Database Systems"
https://15721.courses.cs.cmu.edu/
# Calculus I/II & Real Analysis
"A Course in Calculus and Real Analysis"
https://link.springer.com/book/10.1007/978-3-030-01400-1
"A Course in Multivariable Calculus and Analysis"
https://link.springer.com/book/10.1007/978-1-4419-1621-1
# Physics
"Matter and Interactions"
https://matterandinteractions.org/
# Linear Algebra & ML
* A Series of books by prof. Joe Suzuki without using any external library for the implementations *
"Statistical Learning with Math and Python"
https://link.springer.com/book/10.1007/978-981-15-7877-9
"Sparse Estimation with Math and Python"
https://link.springer.com/book/10.1007/978-981-16-1438-5
"Kernel Methods for Machine Learning with Math and Python"
https://link.springer.com/book/10.1007/978-981-19-0401-1
# Discrete Mathematics
"CMU 21-228 Discrete Mathematics (prof. Poh-Shen Loh"
https://www.math.cmu.edu/~ploh/2021-228.shtml
# Mathematical Logic
"Mathematical Logic Through Python"
https://www.logicthrupython.org/
# CS Complexity and Theory:
Courses by Ryan O'Donnell at CMU
http://www.cs.cmu.edu/~odonnell/
# Cryptography
"Serious Cryptography: A Practical Introduction to Modern Encryption"
https://nostarch.com/seriouscrypto
# Problem Solving
"Math 235: Mathematical Problem Solving"
https://www.cip.ifi.lmu.de/~grinberg/t/20f
# Computer Graphics
* Also look up the course by @pikuma for a pure c impl without OpenGL *
"Computer Graphics from Scratch: A Programmer's Introduction to 3D Rendering"
https://gabrielgambetta.com/computer-graphics-from-scratch/
"The Ray Tracer Challenge A Test-Driven Guide to Your First 3D Renderer"
https://pragprog.com/titles/jbtracer/the-ray-tracer-challeng...
# Reverse Engineering
"Reverse Engineering for Beginners"
# SAT/SMT
"SAT/SMT by Example"
Also Hakan Kjellerstrand's z3 page:
# Game Engine Development
* 2/4 volumes out (no digital format for the 2 pending volumes due to the authors "piracy" concerns *
"Foundations of Game Engine Development"
https://foundationsofgameenginedev.com/
# Creative Coding
"Generative Design: Visualize, Program, and Create with JavaScript in p5.js"
http://www.generative-gestaltung.de/2/
Articles by Tyler Hobbs specially the one on "Flow Fields" :
https://tylerxhobbs.com/essays/2020/flow-fields
Articles by Sighack specially the one on "Watercolor Techniques":
https://sighack.com/post/generative-watercolor-in-processing
What makes it stand out is that it shows you how to build a compiler rather than an interpreter, and shows that it's really not that much more difficult.
There is a book-length "sequel" to this paper that goes into more detail: https://github.com/IUCompilerCourse/Essentials-of-Compilatio...
You can find a PDF and the associated course with a very minimal amount of following links.
If you are thinking of making your own language, it's also good to learn something about programming language theory, if you don't already. Many languages make mistakes that have been solved 25+ years ago. PLAI is good for that: https://www.plai.org/
I ask because there seems to be a \python mode, too, that folks may find valuable: https://github.com/IUCompilerCourse/Essentials-of-Compilatio...
I also don't know why the ci.yml only ran for a few seconds: https://github.com/IUCompilerCourse/Essentials-of-Compilatio...
https://github.com/IUCompilerCourse/Essentials-of-Compilatio...
[1] https://iu.instructure.com/courses/1735985
[2] https://github.com/IUCompilerCourse/Essentials-of-Compilatio...
"We show that building a compiler can be as easy as building an interpreter. The compiler we construct accepts a large subset of the Scheme programming language and produces assembly code for the Intel x86 architecture, the dominant architecture of personal computing. The development of the compiler is broken into many small incremental steps. Every step yields a fully working compiler for a progressively expanding subset of Scheme. Every compiler step produces real assembly code that can be assembled then executed directly by the hardware."
There is also a work-in-progress effort to write a more extensive textbook that follows the same approach to teaching compiler development, using Racket instead of R5RS Scheme: https://github.com/IUCompilerCourse/Essentials-of-Compilatio...
[1] https://github.com/IUCompilerCourse/Essentials-of-Compilatio...