That’s a pretty freaking long list. I don’t know about other lobsters but I would say I knew about 80% of all that? Overall fairly sound but maybe asking too much? What do others think about it?
I think exposure to most of these things is desirable, though obviously peoples' strengths and concentrations will and should vary quite a bit. The areas on that list that I have literally zero experience in are graphics and robotics.
Somewhere in that ballpark, yeah. There are some really fantastic readings linked!
I agree, there are some areas there that I’ve not had any exposure to at all at a university level (type systems, robotics, crypto). On the other hand, there are other areas where my degree has gone far deeper into the topics than what Matt suggests (ML & theory of computation).
Perhaps this is a function of English bachelors degrees being three years instead of four & of my specific course choices?
A lot of books, how many of these should still be recommended? Those I recognised I know to still be good books, but for example, I had never heard of The art of programming
I’ve read a number of the books mentioned on the page, and here are my thoughts:
“Writing for Computer Science” by Justin Zobel
An excellent book that goes a lot farther than I expected. While the title says “writing” it also includes a variety of tips for how to design diagrams, how to give presentations, the ethical questions to ask when dealing with potential confidentiality issues. Definitely a good book to read.
“Effective Java” by Joshua Bloch
Similar to “Effective C++” (which is also quite good) this book goes in depth with a variety of patterns and ideas for writing quality, maintainable Java code. If you’re going to be writing in Java, this is a good book to read (although it’s a little out of date now, having been published in 2008).
“Learn You a Haskell” and “Real World Haskell”
These are the classic books for introduction to Haskell, but they both have their own well documented problems. At this point I think a better introduction can be found here: https://github.com/bitemyapp/learnhaskell
Any of “The Art of Computer Programming” books, by Donald Knuth
These are classics, and are great both for learning and as a reference, but they are dense, and can be tough for people less well versed in CS theory. Still great to have around though! I learn something new every time I read one.
“Introduction to the Theory of Computation” by Sipser
Not sure why he’s linking to the 2nd edition, as the 3rd edition exists. I’ve read the 3rd edition, and think very highly of it. It was not as dense or difficult as some theory books I’ve read, and provided a strong introduction to the topic. I actually wish I still had my copy, but I donated it to my university’s ACM Chapter library. I may just buy it again.
“Computer Organization and Design” by Patterson and Hennessy
He links to the 4th edition here, and that’s probably the right choice. I’ve read the 5th edition, and it was honestly frustrating to work with. A number of the questions are poorly written and ambiguous. One of the problems in an early chapter relies on the use of software only mentioned in a small aside several pages previously to provide values for the variables necessary to provide an answer. A number of examples and questions expect you to be able to ballpark reasonable values for unknowns, without giving any real assistance to build up such an ability. All of this said, I understand the 4th edition to be quite good. I can’t personally vouch for it, but have heard good things from a former professor of mine whose opinion I trust on this subject.
“HTML and CSS: Design and Build Websites” by Duckett
First of all, this book is gorgeous. Just beautiful inside. Second, it is both an excellent learning resource and reference for someone new to HTML and CSS. One of the biggest difficulties I’ve seen new people have with these languages is just about knowing what tag or attribute to use, or knowing how the different features of CSS (the box model, specificity, etc.) work and interact. This book is great at clarifying all of these things, and I’ve happily loaned my copy to several friends learning HTML and CSS, with positive results.