Live data from Hacker News

Ask HN: Computer science for the self taught programmer

news.ycombinator.com

1–10 of 41 posts

Re: Ask HN: Computer science for the self taught programmer

#2
I'll start out with the classic:

"Introduction to Algorithms" a.k.a. "CLRS" http://www.amazon.com/Introduction-Algorithms-Thomas-H-Corme...

I think this is all (and probably more than) you really "need" if you want to know CS for programming, and an enjoyable read too.

Re: Ask HN: Computer science for the self taught programmer

#3
Computer Science is not just algorithms. Generally speaking, Comp Sci consists of:

Algorithms/Data Structures

Computational Complexity

Discrete Math

Programming Languages (both application and the concepts behind them)

System Architecture

Networks

Compilers

Operating Systems

Databases

Parallel Programming

Artificial Intelligence

Graphics

As for what to learn, here is THE BEST link: http://matt.might.net/articles/what-cs-majors-should-know/. It covers all the topics I mentioned, and then some, and provides links to books/resources about everything. If you're serious about self studying Comp sci, that page has all the links and info you need to start.

Re: Ask HN: Computer science for the self taught programmer

#8

Computer Science is not just algorithms. Generally speaking, Comp Sci consists of: Algorithms/Data Structures Computational Complexity Discrete Math Programming Languages (both application and the concepts behind them) System Architecture Networks Compilers Operating Systems Databases Parallel Programming Artificial Intelligence Graphics As for what to learn, here is THE BEST link: http://matt.might.net/articles/what…

"Programmer Competency Matrix" is also a great resource: http://www.indiangeek.net/wp-content/uploads/Programmer%20co...

Re: Ask HN: Computer science for the self taught programmer

#9

I'll start out with the classic: "Introduction to Algorithms" a.k.a. "CLRS" http://www.amazon.com/Introduction-Algorithms-Thomas-H-Corme... I think this is all (and probably more than) you really "need" if you want to know CS for programming, and an enjoyable read too.

I would strongly urge the OP to not use this book. I used it as my undergrad algorithms book and it is, quite frankly, far too obtuse and hard to understand. At first, I thought it was just me and that other people found the book readable. I eventually realized that the book itself is just bad for autodidacts.

Last month (about 5 years after I took the course), I went through to review some stuff that I'd looked at more recently. Specifically, I had worked out Dijkstra's algorithm on my own and finally understood how the heck it actually worked. I then opened CLRS to check their proof. What I saw blew my mind in terms of sheer obfuscation. Despite having a very clear understanding in my head of the core concept behind the algorithm, I read their proof and was just amazed at how little it actually explained about the simple idea that ties the whole thing together. That by itself isn't a huge deal, because some proofs are just hard to follow. What really upset me was that there was practically no surrounding discussion of the intuition behind the algorithm. Behind all the rigor of mathematics lies very simple and powerful ideas. This book did nothing to emphasize those simple ideas. It's a real travesty to be honest :(

If you're looking for something more accessible, I've heard that The Algorithm Design Manual[1] by Steve Skiena[2] is better. Whatever you choose, though, please stay away from CLRS.

[1] http://www.amazon.com/exec/obidos/ASIN/0387948600/ref=ase_th...

[2] http://www.cs.sunysb.edu/~skiena/

edit: I just found this review of CLRS on Amazon (http://www.amazon.com/review/R2FI8CA368KWGE/ref=cm_cr_pr_per...). It's the top comment for this book and sort of gets at the issue:

With that said, this book falls short in one MAJOR area, explanations. Too often explanations are left out and left as exercises and there are no solutions to the exercises! Or details are replaced by ambiguous statements such as of "cleary, this works", or "it is easy to see that this ...". I get the concept of learning by doing, really I do, but there should be some kind of solutions so the student can CHECK his/her understanding of the material and sometimes the exercises are not about advanced aspects of a concept, sometimes it is the core material. Even if the solution manual only contained a simple answer without the work. Not only would it help tremendously but the purpose of doing the exercises would be preserved; that is the student getting his/her "hands dirty" and working out a problem.

For the love everything good and pure in this universe, I really wish writers of mathematical books would stop using statements like "clearly this works" or "it is easy to see", "it is obvious" etc. While that may be true for you and your brilliant circle of colleagues, everything is not always clear and obvious to your readers. Save all of that ambiguity for your research paper.

A great book should deliver in two areas; it should challenge and it should inform. The challenge is there, no doubt. However in some ways it fails to inform the reader. The authors should really think about releasing a students solution manual to help students learn better. I take away two stars for the reasons stated about

Re: Ask HN: Computer science for the self taught programmer

#10
If you're not intimidated by a little C, I highly recommend "Computer Systems: A Programmer's Perspective"[1] by Bryant and O'Hallaron from Carnegie Mellon. It was personally recommended to me by a PhD student from CM when I inquired about CS resources that would be directly pertinent to programmers, and it completely exceeded my expectations.

[1] http://csapp.cs.cmu.edu/

Post reply on HN