5 ms·
CS is like math, not philosophy -- the fundamental ideas are gradually refined by a community, and eventually someone puts them into a book. Usually there are m
by bo1024 7y ago
CS is like math, not philosophy -- the fundamental ideas are gradually refined by a community, and eventually someone puts them into a book. Usually there are many books and people have different favorites.
So the closest parallels are original research papers like Turing's and Shannon's; but you're probably better off reading more recent textbooks.
That said, to balance out the heavy emphasis on programming and engineering books here, some recommendations:
- Sipser. Introduction to the Theory of Computation.
- Russell, Norvig. AI: A Modern Approach.
- For algorithms I don't have a preference. There is Dasgupta-Papadimitriou-Vazirani; Cormen-Leisersen-Rivest-Stein; Kleinberg-Tardos; and more.
A bit farther from core CS, I also like:
- Cover, Thomas. Elements of Information Theory.
- Li, Vitanyi. An Introduction to Kolmogorov Complexity and Its Applications
- einpoklum 7y agoSome of these are quite fundamental but not very popular. Which is good, because people forget those. I'm not much of a Sipser guy but maybe it's because they didn't use it at my alma mater when I took my Theory of Computation and Automata courses.
- sixstringtheory 7y agoSipser was the one my alma mater used, so if you could, please post the one you used! I’d be interested in an alternative.
- goric 7y agoHopcroft, Motwani, and Ullman's Introduction to Automata Theory, Languages, and Computation by is another classic text
- einpoklum 7y agoIt was a university-internal booklet written by Prof. Oded Goldreich when he had taught the course in the early 1990s. Don't think it was ever published as a proper book. See: https://webcourse.cs.technion.ac.il/236343/Spring2004/book.html https://webcourse.cs.technion.ac.il/236343/Spring2004/book.h...
- sixstringtheory 7y agoAh I see. Well in any case, thanks for the link, it led to several books I'm interested to check out... - Computers and Intractability: A Guide to the Theory of Np-Completeness - Computational Complexity (your page has the one by Papadimitriou, but putting it on my Goodreads list led to two others of the same name by Goldreich and Arora/Barak I didn't know of)
- einpoklum 7y agoPapadimitriou is older, but good, in that the Barak-Arora one is huge, I think. Computers and Intractability is a class, it's from 1979. It's most famous for having "the list" of NP complete problems. Obviously not an exhaustive list, but it still merits the definite article :-) Nowadays this is maintained on-line of course: https://www.nada.kth.se/~viggo/problemlist/compendium.html https://www.nada.kth.se/~viggo/problemlist/compendium.html
- kingkongjaffa 7y agoMathematics has a linear progression though. You need to know numbers and simple algebra to tackle trig, you need to know all that to tackle calculus or linear algebra, you need to know those to tackle differential equations. I would argue CS is closer to philosophy. Sure you have programming building blocks like variables, loops, conditionals, objects blah blah. But you quickly head into patterns and conventions that started out as someones opinion on how things should be set up, rather than some fundamental principle.
- spott 7y ago>Mathematics has a linear progression though. Mathematics has a linear progression... up until the point at which it branches out into the various subfields.
- TheRealPomax 7y agoNot once you become an actual scholar of Mathematics. Then it's very much a tree of fields in terms of "what begot what", and at the level of theorems, not even a tree but a graph with a huge number of interconnections in which "one thing coming before the other" doesn't even make sense to talk about.
- beagle3 7y agoMathematics has a (mostly linear) historical progression, not logical progression. It very often happens that the shortest, simplest derivation is discovered a century after the original discovery. E.g. if you define exp(x) as \sum_0^\inf \frac{x^n}{n!}, a crazy amount of things that (historically) took a lot of effort to derive, become exceptionally simple and straightforward. Now, historically, it didn't make sense to define it that way (especially because limits and infinite sums were only rigourously defined much later). But complexity wise, it is much simpler to first define limits and only then the exponent as an infinite sum. > But you quickly head into patterns and conventions that started out as someones opinion on how things should be set up, rather than some fundamental principle. That's not computer science. That is indeed philosophy, specifically software engineering philosophu. Science, it is not.
- graemeo 7y ago