“The Elements of Computing Systems: Building a Modern Computer from First Principles” by Noam Nisan, Shimon Schocken
“Code: The Hidden Language of Computer Hardware and Software” by Charles Petzold
“Computer Systems: A Programmer’s Perspective” by Randal Bryant, David O’Hallaron
You want to learn how computers and programming languages intersect
“Crafting Interpreters” by Robert Nystrom
“Structure and Interpretation of Computer Programs”
“An Introduction to Assembly Programming with RISC-V” by Edson Borin
You want to read the classics
“The C Programming Language” by Dennis Ritchie, Brian Kernighan
“The Art of Computer Programming”, volumes 1 and 4B by Donald Knuth
“A Discipline of Programming” by Edsger W. Dijkstra
“Hackers Delight” by Henry S. Warren, Jr.
“Optimizing Compilers for Modern Architectures” by Randy Allen, Ken Kennedy
You want to learn Math through your programmer’s lens
“A Programmer’s Introduction to Mathematics” by Jeremy Kun
You want to program with GPUs
“Programming Massively Parallel Processors: A Hands-on Approach” by David Kirk, Wen-mei Hwu
Tips
Do the exercises! Don’t just read.
Learning to code is done by coding. Build terminal applications, build simple HTTP servers, build tools you might want to use. Nothing is too complicated.
Study the fundamentals. Data structures, algorithms. Networking. How does memory work? What happens when you type google.com in your search bar?
Look underneath software you use. A lot of software is open-source. Consume a lot of code. Be curious.
If you have a specific career path and/or just want to enter the job market – you can DM or @ me on X.