I want to cover the equivalent of a typical CS undergrad course in material, so I'm making a list of books to cover the typical topics. I've split the list into topics that, from the research I did, I think are compulsory and optional. I would like some help to confirm if the topics are split correctly, and if the books are of the correct level. Also, please let me know if I left out any important topics, or if any are beyond undergrad level.
Thank you for your time!
Edit regarding the on hold status: I do not believe this question is off-topic as I am not asking for a recommendation for books - I am asking if the topics I have listed are indicative of a typical CS course, and if any important topics are missing. The books links are only there in case the books I have chosen are not correct for the topic, and can be removed if necessary.
COMPULSORY
Operating Systems: Operating System Concepts
Networks: Computer Networking: A Top-Down Approach
Discrete Mathematics: Concrete Mathematics
Data Structures and Algorithms: Introduction to Algorithms
Computer Architecture: Computer Systems: A Programmer's Perspective
Automata Theory: Introduction to the Theory of Computation
Compilers: Engineering a Compiler was recommended to me over the dragon book.
Database Theory: An Introduction to Database Systems
Programming Language Concepts and Design: Programming Language Pragmatics
OPTIONAL
Cryptography: Cryptography Engineering: Design Principles and Practical Applications
Functional Programming: Learn You a Haskell for Great Good!
Artificial Intelligence: Artificial Intelligence: A Modern Approach
Computer Graphics: Real-Time Rendering
The Soul of A New Machine by Tracy Kidder was first published in 1981 and won a Pulitzer Prize. This great book covers the development of computers in the late 1970s. The Road Ahead by Bill Gates is a great book published in 1995, providing a look into what Bill Gates predicted for computers and the Internet.
Your list is very good on the subjects directly related to computer science. However, it is light on math. In my own B.Sc. in Computer Science I also had a ton of calculus, linear algebra, algebra (groups, rings, etc), statistics, analytic geometry and numerical analysis. Some applications of computer science rely heavily on those:
I never used much of the ton of Algebra I had, but I hear it is important for cryptography. :-)
For a programmer developing more regular applications your list is very good, but for those interested in these more specialized areas (which are still pretty important), these subjects are vital.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With