I love the material here, but it's mistitled. This isn't about computer science, it's about computers. The introduction doesn't even display much knowledge about the definition of computer science, claiming it's "possibly data structures". It's like calling a book on car repair "automotive engineering from the bottom up."
Indeed, when the first chapter is "General Unix and Advanced C", and the second one "Binary and Number Representation", that's a sign this isn't "bottom-up" at all. The list of topics seems reminiscent of the common CS textbook Computer Systems: A Programmer's Perspective.
That's fairly good. The sign of quality CS material requires explanations, analogies, summaries of facts, and diagrams. For example, explain pointers or C const rules to someone who only knows calculus. Most texts fail to accomplish these goals accessibly.
It maybe heresy to say, but Knuth doesn't explain concepts very well, reading more like a dense formal paper demanding a postgraduate mathematical background rather than elucidating concepts magnificently with both formal and informal terms. That's okay: subject matter experts need not be expert technical writers or lecturers. It could be the basis of another body of work by another author to write a compendium explaining and interpreting the Latin "Bible" to the masses. :)
I do think Knuth explains things very well. What possibly makes it difficult is he tries to keep it at a fundamental level rather than through the lens of any modern platform. One of the best chapters on random numbers is a good example. Beginner programmers might learn to import random (or secrets), lower level might learn to read from /dev/urandom and OS designers might ask a modern CPU directly. But that's not good enough. All of them depend on the fundamental concepts outlined by Knuth and do will any future computer.
If we give up a bit of our snobbery on what is Computer Science, we may realize this is probably a sane starting point for a lot of students. The generation today hasn't grown up with computers like we did, most only had a cellphone which hides away even basic things like the filesystem and goes to the extreme extents to stop you from tinkering with it.
You need a foundation for you to start making sense and to connect the dots for even the basic assumptions and theories that you may come up with.
Another way to put it is you need to know numbers(or atleast a basic sense of what they are) before you do math.
I agree. It seems to be useful material, but calling it CS is a bit of a stretch. The index makes me think of some huge tome I once had, something like Intro to Operating Systems.
Which it doesn't do. No combinatorics, no PLT related subjects, no queuing theory, or any of a dozen other 'underlying principles' you need to be passingly familiar with to really understand the things they are presenting. This only focuses on "underling principles" if you're view of CS is "how does my web browser give me cat videos".
rather than just specific tools
By jumping immediately into "Unix and C". So it doesn't do that either.
There's a lot of crap "DIY CS" out there, but this one is special.
Nit note: EPIC is too niche, but so is VLIW. VLIW is taught because the entire approach is about the architectural decision to expose processor state that would normally be controlled by the microprogram in charge of interpreting and timing the macrocode. Effectively, VLIW gives low-level control over to, and depends entire on the intelligence of, the compiler toolchain to correctly manage the processor's internal state. Transmeta Crusoe attempted this, but it was a commercial failure. Soft-updatable microcoded RISC-CISC CPUs and GPUs won.
> Compiled programs have some disadvantages for modern software development. Every time a developer makes a change, the compiler must be invoked to recreate the executable file.
> In a nutshell, what you are reading is intended to be a shop class for computer science. Young computer science students are taught to "drive" the computer; but where do you go to learn what is under the hood?
I take that to mean this guide is a supplement. A student would already know what a bit is.