I won’t say that I was always eager to learn all that math and other kinds of sciences. Though, when I got the chance to use what I’d learned there, I realized that I had to have a good basic of every aspect of Computer Science to see the big picture. That was the time when I really started to take my studies seriously.
So, as a Computer Science student, I learned about
- academic math to represent my complex problems formally and to disassemble them to atomic components
- mathematical analysis to calculate how my solutions going to work in the actual environment
- data structures and algorithms to use the best atomic solutions/representations in every case
- formal languages, compilers, and interpreters to understand every kind of programming languages
- databases to see what are the basic problems at handling data like data race, transaction handling, consistency, availability, etc.
- distributed systems to scale my applications well
- networks to understand the standard protocols used by my applications
- programming technologies to know the best practices of well-known solutions in application development
- operating systems to know what kind of basics I rely on and to understand what “actual environment” means