Live data from Hacker News

Computer Science from the Bottom Up (2016)

bottomupcs.com

61–70 of 79 posts

Re: Computer Science from the Bottom Up (2016)

#61

Earlier quoted context omitted.

Linear algebra, discrete math, calculus. The mathematical underpinnings of algorithms and data structures. Turing machines will be a lot more useful once you actually know how to use properties to prove more things. A kindergartner can recite the layman description of an infinitely long tape with ones and zeroes but such simplistic understanding has very little practical use if you don't understand how it fits into t…

Can you recommend resources that teach what you think the fundamentals should be?

Not OP, and not necessarily endorsing these specific topics as most fundamental to a CS education (I've more often drawn on discrete math/symbolic logic) but 3Blue1Brown has great series on introductory linear algebra and calculus. And Symbols, Signals, and Noise: An Introduction to Information Theory by John Pierce is also good.

My own view echoes this (https://meaningness.com/metablog/how-to-think), which is that it's often useful to know a little about a lot of different kinds of math. That way you'll set yourself up to notice when and where some specific discipline might apply, then you can go back and learn the details if you need to.

Re: Computer Science from the Bottom Up (2016)

#62
post #17
post #4

Author here ... Yes as pointed out many times not "computer science" and I somewhat regret the name. However, it came out of me being a teaching assistant for people doing computer science degrees. A surprising number of people got to 3rd year operating systems courses without realising things like 2^10 is a kilobyte, 2^20 is a megabyte, etc. Let alone how a program was linked and loaded. I hope for this to be helpfu…

Isn't it amazing how people pass courses, even perhaps demonstrate mastery at a point in time, but manage to get to later courses without fully understanding things? Students end up with a very strange mental framework by the time they graduate, and it seems like most students actually know shockingly little. I don't know that there's a solution, or even that it's an issue. To me, this is simply a reflection of how p…

>it seems like most students actually know shockingly little

I think that having students take 5-6 classes together in 16 weeks doesn’t promote mastery in any of those classes. Tying the performance in those classes to scholarship eligibility and job placement incentives grades, not necessarily understanding. Grades and mastery can be separated because 2-3 exams in a class, which determines the majority of the grade, rewards students the most, on a time investment vs. performance basis, for understanding technicalities in the grading system and for hyper focusing on the types of problems that can be on an exam. This doesn’t promote mastery, this is a game academia and students play for the satisfaction of government, finance and corporations. Definitely, a problem, solutions could include more frequent sampling of understanding, more diverse ways of measuring knowledge, decoupling performance from financing and longer periods to learn topics.

Re: Computer Science from the Bottom Up (2016)

#63
post #17

Earlier quoted context omitted.

Isn't it amazing how people pass courses, even perhaps demonstrate mastery at a point in time, but manage to get to later courses without fully understanding things? Students end up with a very strange mental framework by the time they graduate, and it seems like most students actually know shockingly little. I don't know that there's a solution, or even that it's an issue. To me, this is simply a reflection of how p…

>it seems like most students actually know shockingly little I think that having students take 5-6 classes together in 16 weeks doesn’t promote mastery in any of those classes. Tying the performance in those classes to scholarship eligibility and job placement incentives grades, not necessarily understanding. Grades and mastery can be separated because 2-3 exams in a class, which determines the majority of the grade,…

I’ve been thinking a lot lately about why understanding and mastery is not rewarded in education to the extent some/I believe it should be. My current thinking is that it’s simply not how most people learn, and few systems can withstand pressure from the great majority.

There are interesting exceptions though: take the Putnam math test for instance. It’s taken mostly by math and theoretical physics majors who want to go to grad school in those subjects. The maximum score is 125, and the top scores are typically 115+. The median score however is usually... [wait for it]... zero.

I suspect a lot of grades would have that kind of distribution if they really tested for deep understanding and mastery of the subject.

Re: Computer Science from the Bottom Up (2016)

#64

Earlier quoted context omitted.

I actually think "bottom up" is more of a misnomer than "computer science" as a title for this material, since when I think of "bottom up" I think of things like nand2tetris and Petzold's book. This looks more like "selected topics in operating systems" with some review of computer architecture basics mixed in.

This was really seeded for me when trying to teach people taking computer science courses who were trying to do practical things like integrate C libraries into their higher level projects, but didn't really understand how things were working under the hood and getting themselves into a mess. If they understood a little more about how their program was built and run ... from the bottom up, as it were :) ... they woul…

Perhaps adding a "Prerequisites" chapter might further help in getting the intended audience across?

I associate "from the bottom up" approach with something being explained by starting from the very basics and aimed towards someone completely unfamiliar with the subject.

Re: Computer Science from the Bottom Up (2016)

#65

Earlier quoted context omitted.

Looks like someone has vandalized your guide. > Reordering > This bit is crap

Yes, it has some rough edges. One lesson you can learn is probably not to write things like this, and just let what you have stand as it is, and incrementally improve it.

Is there a mechanism to submit fixes?

This is a wonderful resource, but the deeper I get, the more I find it needs a little proofreading. I'd be happy to open PRs/whatever with typo/grammatical fixes.

Also, thanks for writing this - I've had to deal with more and more of these concepts recently and this is the first resource I've found that has helped me understand how the parts fit together and why they exist.

Re: Computer Science from the Bottom Up (2016)

#66
post #43

Earlier quoted context omitted.

When I did my CS programme decades ago, we all started with Scheme, which is very high-level, and forced everyone to focus on the algorithms, the math of it, instead of what the hardware is doing, or how the Scheme interpreter is implemented. It gets you going, thinking about values and execution and iteration and recursion. Starting with bits and bytes and hardware would be pretty goddamn boring, I think. You'd lose…

Scheme is deadly boring. You'd lose a lot of students that way. Starting with bits and bytes and hardware would be pretty goddamn fun, I think. I first really got into things with assembly language for DOS. It was interesting to directly control the IRQ controller, real-time clock, interval timer, and keyboard interface. These were all motherboard chips that could be messed with. Years later I passed a mandatory Sche…

You make an interesting (unsupported) assertion here. You, who find talking to an IRQ controller, real-time clock, etc. interesting, find Scheme boring, therefore others (who may not share your interests in such details) will also find it boring. Bit of a logical fallacy there...

Re: Computer Science from the Bottom Up (2016)

#67

Looks like a decent resource for Unix OS / system programming, but it's definitely not computer science.

Agreed. I don't see how you can leave out (among other things) databases, Big O notation, networking, and call it a computer science primer. Good for what it is, but misnamed.

Re: Computer Science from the Bottom Up (2016)

#68
post #17

Earlier quoted context omitted.

Isn't it amazing how people pass courses, even perhaps demonstrate mastery at a point in time, but manage to get to later courses without fully understanding things? Students end up with a very strange mental framework by the time they graduate, and it seems like most students actually know shockingly little. I don't know that there's a solution, or even that it's an issue. To me, this is simply a reflection of how p…

Recently I had a conversation with someone who has been featured in Kaggle leaderboard(top 1%) telling 'CS background isn't helpful for Machine Learning'.[1] I believe that he didn't understand what Computer Science actually is, besides having a degree in it. I'd say it's because of the educational system, where one could attain a degree without actually qualifying in it. In under developed/developing economies if on…

What does he think Computer Science is, and what do you think it is?

Re: Computer Science from the Bottom Up (2016)

#69
post #17

Earlier quoted context omitted.

Isn't it amazing how people pass courses, even perhaps demonstrate mastery at a point in time, but manage to get to later courses without fully understanding things? Students end up with a very strange mental framework by the time they graduate, and it seems like most students actually know shockingly little. I don't know that there's a solution, or even that it's an issue. To me, this is simply a reflection of how p…

When I did my CS programme decades ago, we all started with Scheme, which is very high-level, and forced everyone to focus on the algorithms, the math of it, instead of what the hardware is doing, or how the Scheme interpreter is implemented. It gets you going, thinking about values and execution and iteration and recursion. Starting with bits and bytes and hardware would be pretty goddamn boring, I think. You'd lose…

It's interesting as I studied Computer Engineering which focused on the hardware and low level, with some programming on top of that. I was pretty good at that too. However afterwards the Google-style interview algorithm questions do not come naturally for me, and you'd think I'm a complete imposter by the look in some 20-something interviewers eyes, even though have been programming for 20 years...

Re: Computer Science from the Bottom Up (2016)

#70

Earlier quoted context omitted.

When I did my CS programme decades ago, we all started with Scheme, which is very high-level, and forced everyone to focus on the algorithms, the math of it, instead of what the hardware is doing, or how the Scheme interpreter is implemented. It gets you going, thinking about values and execution and iteration and recursion. Starting with bits and bytes and hardware would be pretty goddamn boring, I think. You'd lose…

I think it depends on the audience. For a group of prospective CS majors, or people learning programming for its own sake, I think it would be good to start with a high level language, say Python, Scheme or Ocaml, and then progressively deconstruct the layers of abstraction between the language and the physics. For a group of electrical engineering majors, it might actually tie in better with their other courses if o…

That’s basically how they taught my computer architecture course, but they started from C (instead of Python) and worked back to assembly and then to transistors or whatever those gate things are (I studied enough to make an A and don’t care anymore unless someone pays me to).

I think it must be a reasonably normal approach.

Post reply on HN