All of the things you listed are the main components of a decent computer science education, although you really must add the following:
- OS
- Network
- Mathematics (introductory courses for discrete, calculus, algebra, proof, statistics)
- Database
- Funds (state machines, regular expressions, Turing machines, etc.)
These two lists together will give you a good understanding of computer science, after which you should choose a few more special topics (those that interest you most).
- Artificial Intelligence
- Crypto / Security
- Image / Signal Processing / Recognition
- Compilers
- Graphic arts
- Game design
- and etc.
You will find that as soon as you begin to delve into the subject, all these basic courses, including math, will begin to enter the game! For example, I am now studying pattern recognition and had to use and understand material from statistics, AI, calculus, evidence, algebra, algorithms, data structures, OOP, etc.
source share