+1 to Code (Petzold). I would absolutely start with that. One of my favorite books. The build a computer course from coursera (https://www.coursera.org/learn/build-a-computer) is the natural next step after reading code.
I never formally studied CS, but I can strongly recommend Code by Charles Petzold.
If you want to learn how a computer does what it does at the absolute lowest levels, it's a great starting point. It's all written in laymans terms so it's good as a conceptual overview or for people without a strong math background. If you're interested in diving super deep into that kind of stuff I imagine it would be a great high level overview to anchor yourself.
Code by Charles Petzold, The Elements of Computing (Nand2Tetris course book), No Starch Press's Secret Life of Programs, Learning Computer Architecture with Raspberry Pi
It's a page turner and you'll know more about computers than many developers. You still won't be a programming guru from this, but its a great holistic approach that you can then supplement.
For very foundational stuff, Charles Petzold has put out some great books.
His book Code is fantastic. He starts at simple battery and lightbulb circuits and builds and builds towards a simple CPU.
He also wrote The Annotated Turing which is a breakdown of Alan Turing seminal paper and you only need high school math to get through it.
When I was in school my favorite course was compiler design and we used Compilers: Principles, Techniques, and Tools (aka the dragon book). It’s one of the best textbooks I’ve used but that was 30 years ago. There might be something better now. Understanding parsers and lexers and (especially) state machines is something that will serve you well.
My tuppenceworth
Some high level language VB, C# or Java
then
the first half of Code by Charles Petzold
then
The elements of computing systems by Schocken and Nisan
followed by
the rest of Petzold's book
I was always interested in ciphers and such as a kid so those two books got my attention when I found them in high school/college. I'm a bit fuzzy, now, about which one I was more interested in but both were good books. (I still have them, may give them a re-read next month.)
There are a few others I have in mind, but just can't recall the titles at the moment.
Regardless of where you focus your attention on next, you might want to consider filling in your understanding of really low-level foundations with books like “Code” be Charles Petzold and “The Elements of Computing Systems” by Noam Nisan and Shimon Schocken.
I'm also a self taught programmer, my first book about programming was "Automate the Boring Stuff with Python", then I tried to learn C and I didn't understand anything of what I read until I find "Introduction to Computing Systems" by Yale Patt and Sanjay Patel, great book.
Edit: also did 200 Codewars katas to practice, then started to build things.
I'm sorry why would you want to do that? I mean what are you trying to learn specifically? If you're trying to learn coding then you should probably start with simpler easy stuff like HTML then Javascript then Java/C++...
Otherwise most books about "computing" in general are more outdated since this field evolves so fast.
I'm sorry why would you want to do that? I mean what are you trying to learn specifically? If you're trying to learn coding then you should probably start with simpler easy stuff like HTML then Javascript then Java/C++...
Otherwise most books about "computing" in general are more outdated since this field evolves so fast.
I would like a Computer Science 102 book. I'm a self taught programmer and started learning through a couple CS 101 books (eg. John Guttag). Those 101 skills were enough for me to run an online business via python/django. However, I don't know what's next to make me a better programmer. I'm assuming learning algorithms is the next step, but I don't really know.
reply