Hacker News new | past | comments | ask | show | jobs | submit login
Computer Science from the Bottom Up (bottomupcs.com)
119 points by mr_o47 on Sept 10, 2023 | hide | past | favorite | 21 comments



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.

Edit: yes, the chapter list is very similar to http://csapp.cs.cmu.edu/2e/samples.html with some OS topics thrown in.

For real bottom-up learning, Petzold's Code is one of the highly recommended books.


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.


Starting from C and calling that 'from the bottom up' is just misleading.


Probably is a good starting point. But it's not computer science, which is (IMO) a mathematical or at least more formal approach.

edit: does look good, I'll dive in.


Computer Science is no more about computers than astronomy is about telescopes.

— E. W. Dijkstra


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.


Hey. Book titles are how you represent your book with a limited number of words. They don't always have to be accurate. I think it's pretty spot on.


I think that it could be more accurate with an even more limited amount of words by omitting "Science":

Computer[s] from the Bottom Up


On Computers.


Otoh if computer scientist knew a bit more about computers, they might be nudged into directions of more practical models of computation.


After skimming the TOC a few times, I guess the more accurate title is "Computer Architecture from the Bottom Up".

I don't see any math model like lambda calculus or Turing machine mentioned one it.


The approach to focus on underlying principles rather than just specific tools is indeed commendable.


The approach to focus on underlying principles

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.


This looks very similar to the structure of Computer Systems: A Programmer’s Perspective.


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.

Executable files are inessential to compilation.


The first page says:

"instead of being stored as bits on a disk the information is displayed as dots on a screen"

But the concept of bits has not been introduced.


The Introduction says:

> 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.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: