How I Wish Computer Science Was Taught
andrewcbrown.com
How I Wish Computer Science Was Taught
1–10 of 16 posts
Re: How I Wish Computer Science Was Taught
#2The 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
#3Interesting 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…
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
#4The 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
#5Re: How I Wish Computer Science Was Taught
#6That's because that's not what you learn in CS. You wanted to be doing a software engineering degree.
Re: How I Wish Computer Science Was Taught
#7In 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
#8Site not responding for me. Google cache: http://webcache.googleusercontent.com/search?q=cache:http://...
Re: How I Wish Computer Science Was Taught
#9Re: How I Wish Computer Science Was Taught
#10Site 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.