Live data from Hacker News

Computer Science from the Bottom Up

bottomupcs.com

41–46 of 46 posts

Re: Computer Science from the Bottom Up

#41

This is bottom-up: http://www.charlespetzold.com/code/ http://www.nand2tetris.org/ I've only read a little bit of the 2nd book (IIRC I stopped reading and lost interest when I found a very obvious and repeated error), but all of the 1st one. The 1st one is highly recommended. IMHO the trend of teaching things in CS top-down doesn't encourage understanding of how computers actually work, which turns out to be quite im…

Well, people could easily lose interest if they come into the field wanting to be able to make computers do cool stuff, and they're stuck with circuits and binary for a while before even being able to do that. Those are fine coming later after learning at least some amount of higher-level code in which you can explore the potential of what you can make happen with programming. Being able to see some of your code make a simple game work or something; I feel like that's an important step. It's easy for us, already fully immersed, to say that beginners should or would be interested to know all of the logic gate-level mechanisms, but it's going to be off-putting for most.

Re: Computer Science from the Bottom Up

#42
post #13

On the first day of the first course as a CS major, the prof said something like "in this course you'll learn how computers work from the bottom up", turned to the blackboard, and wrote Maxwell's equations. We laughed, and he said, "You're laughing because I got it wrong, no? You need quantum mechanics for transistors". We actually ended up starting at logic gates, flip-flops, and latches. But the joke was a great re…

I once taught a class "Software as a Second Language: Computer Programming for Non-Majors" at UCSB/CCS. The audience very rapidly "why?"'d me down to "I honestly don't know, class dismissed: come back next week". I came back with a box of 12V relays and restarted the class from logic gates up, building a toy architecture with a usable machine language. Of course, I started at magnets (as given magnetism I can explain pretty easily how a relay works), but had to tell people that not only would you have to trust me that magnets worked at all, but that it isn't even clear that anyone knows how they work anyway (but for those curious, the Physics students in the class would likely be happy to talk about it ;P).

Re: Computer Science from the Bottom Up

#43
post #16

Earlier quoted context omitted.

That seems intentional. This seems like it's trying to be a "fundamentals of Computer Science" type thing than actual Computer Science. It's the stuff you need to learn first before you can move into actual Computer Science.

But you don't need to learn how Unix works to understand computer science. If you did, Church and Turing would've been rightly screwed.

That is like saying Socrates is screwed because he never read Kant.

Re: Computer Science from the Bottom Up

#44

This is bottom-up: http://www.charlespetzold.com/code/ http://www.nand2tetris.org/ I've only read a little bit of the 2nd book (IIRC I stopped reading and lost interest when I found a very obvious and repeated error), but all of the 1st one. The 1st one is highly recommended. IMHO the trend of teaching things in CS top-down doesn't encourage understanding of how computers actually work, which turns out to be quite im…

Well, people could easily lose interest if they come into the field wanting to be able to make computers do cool stuff, and they're stuck with circuits and binary for a while before even being able to do that. Those are fine coming later after learning at least some amount of higher-level code in which you can explore the potential of what you can make happen with programming. Being able to see some of your code make…

It's like making someone learn music theory on paper before getting to try out an instrument

Re: Computer Science from the Bottom Up

#45
post #11

Anything claiming to be "from the Bottom Up" and starting with Unix and Advanced C instead of Assembly cannot be taken serious.

Or automata theory and turing machines, for that matter.

Probably both Turing machines and lambda calculus, just to see it from both sides of the coin.

Re: Computer Science from the Bottom Up

#46

This is bottom-up: http://www.charlespetzold.com/code/ http://www.nand2tetris.org/ I've only read a little bit of the 2nd book (IIRC I stopped reading and lost interest when I found a very obvious and repeated error), but all of the 1st one. The 1st one is highly recommended. IMHO the trend of teaching things in CS top-down doesn't encourage understanding of how computers actually work, which turns out to be quite im…

Well, people could easily lose interest if they come into the field wanting to be able to make computers do cool stuff, and they're stuck with circuits and binary for a while before even being able to do that. Those are fine coming later after learning at least some amount of higher-level code in which you can explore the potential of what you can make happen with programming. Being able to see some of your code make…

I consider it a "learning to walk before running" type of thing. It may not be interesting to a lot of beginners, many of which probably want to immediately start doing something "interesting", but these are the fundamental basics that anyone claiming to have a CS degree should know.

Starting with higher-level languages tends to breed more misconceptions, because the students get used to seeing things "seem to work like this", and having only a vague, superficial understanding, it is much harder to unlearn these than to learn the truth in the beginning.

It's also not as if things like logic, data representation, and the sequential nature of programs don't matter at higher levels --- whenever one uses conditional statements and loops, a good grasp of boolean logic is essential. Why numbers have a finite range, floating point values aren't exact, etc. all depend on knowing how data is represented. Not knowing these things will at best make it difficult to reason about code, and increase the chance of introducing bugs; at worst, it can lead to security flaws.

Post reply on HN