Live data from Hacker News

How I Wish Computer Science Was Taught

andrewcbrown.com

1–10 of 16 posts

Re: How I Wish Computer Science Was Taught

#2
Interesting post. Although I think a bit backwards. Circuits are just a manifestation of computers, much like women 70 years ago who acted as computers.

The foundation is really these two questions "what functions are computabel" and "how efficiently".

From those questions come other questions like what model are you using... this changes the answers to both questions.

You then go into how do you build physical manifestations of these models and how do they affect various aspects of computation.

Languages are just about how you express computation to the model(s).

And SW engineering grows out of how one builds non trivial functions and how requirements often change over time.

Distributed systems are just a world where different computers (anything that computes) has access to different data or functions.

So rather than go up from HW I'd spend more time in theory... move to lamda calc and turing machines... and then languages... then architecture. And then SW engineering, etc...

This probably won't make you any better of a dev from day 1 after graduating, but will make you a better computer scientist.

And if you want to be a better dev, just grab a Safari Books subscription and start (or join) a project.

Re: How I Wish Computer Science Was Taught

#3

Interesting post. Although I think a bit backwards. Circuits are just a manifestation of computers, much like women 70 years ago who acted as computers. The foundation is really these two questions "what functions are computabel" and "how efficiently". From those questions come other questions like what model are you using... this changes the answers to both questions. You then go into how do you build physical manif…

I appreciate the feedback. There are definitely many people more qualified than me to actually design a curriculum. My argument is more about the approach than the actual content.

Certainly agree about not making you a better dev from day 1. I do think in the long run it will actually make you a better programmer though, particularly for more difficult and complex projects.

Re: How I Wish Computer Science Was Taught

#4
I highly recommend Charles Petzold's 'Code'. I originally bought it for my father, but soon ended up reading it myself cover to cover. It fills a lot of blanks in in my understanding; blanks that were also glossed over in my education as well (Waterloo CS & C&O, 2002).

The book starts from the most basic 'switch and a lightbulb' circuit, and takes a stepwise approach that ends up disassembling x86 by the final chapters. Although it can be a little pandering in points, and the rigour certainly isn't there (I can't remember for certain, but I'm pretty sure it violates my 'must have footnotes' rule regarding non-fiction), in my opinion it's a wonderful nightstand read regardless.

Indeed, there are a couple of spots the book knocks it out of the park without (I think) intending to. As an example, the book presents Turing machines (not by name, mind you) as a moving head traversing through a fixed memory, whereas all of the theory I learned in school presented them as a moving tape passing through a fixed head. It's a seemingly small detail of implementation, but it made an enormous difference in my understanding of how the modern computer evolved from Turing's work. All of a sudden, an ALU + a program counter becomes a modest leap from the theory of a TM ripping through a tape.

Re: How I Wish Computer Science Was Taught

#7
I'm a Math/CS major and I can relate completely to this. In my upper level math courses, we're given about 4 hard problems every week to struggle through together. The problems always use the theorems from class in new and interesting ways - you have to really get the theorems to do the homework. Exams are almost always take-home proofs. It makes us feel like we're really doing math!

In my CS classes, I too often feel like I'm just memorizing things to fill in the blanks and gaining a breadth of vocabulary that I can google if I ever REALLY need.

I think this may be partly because people who become CS professors are not the people who love to make and deploy software.

Re: How I Wish Computer Science Was Taught

#10
post #5

Site not responding for me. Google cache: http://webcache.googleusercontent.com/search?q=cache:http://...

I appreciate the heads up. Trying to get it up and running now.

A wordpress cache plugin will probably help. I got 25k visits in one day last week on puremango.co.uk which is hosted on a cheap-as-chips dreamhost shared server and AFAIK it didn't blink. Cache FTW.
Post reply on HN