This wiki is associated with Cognito Mentoring, an advising service for learners run by Jonah Sinick and Vipul Naik. The wiki is very much in beta, so you're likely to find many broken links and incomplete pages. Please be patient with us as we continue to improve our offerings.
Please connect with us to offer feedback on the wiki content.

Computer science learning benefits

From Cognito
Jump to: navigation, search
This page lists benefits of learning the subject computer science. In other words, it tries to answer the question Why should I learn computer science? |See all pages on the benefits of learning specific subjects

Learning computer science offers many benefits.


Further information: Programming learning benefits

  1. Jobs that require programming: Learning programming opens the route to a number of jobs that require and rely upon programming skills, particularly jobs at software companies. In addition, research jobs in many areas of the mathematical, natural, and social sciences require some programming, though they may fall in category (2).
  2. Jobs that benefit from the ability to maintain and diagnose code: Some jobs do not directly require people ot write code from scratch, but they still rely on people running existing code. The ability to understand the code can help with maintaining and improving it from time to time to tweak it better to changing needs. For instance, trading and investment companies often rely on in-house software to carry out their job. The software may be tweaked occasionally when the trading strategies are modified. Being able to do this oneself can reduce the cost and hassle of outsourcing.
  3. Better understanding of computers and their operation: Computers are used for a wide variety of purposes. Even people who do not write code need to work with computers. Having a sense for how computers "think" and how to "communicate" with them, best acquired through programming, can help in other contexts.
  4. Better general understanding of modeling behavior and practice at logical thinking

Analysis of algorithms

  • Analysis of algorithms is a prerequisite to becoming a really good programmer, although it is not essential for rudimentary programming.
  • Analysis of algorithms is very helpful with making high-level decisions related to algorithms, particularly in cases where the algorithms are being scaled up. Examples include making judgments about how the amount of memory used should scale with an increase in the userbase, or how much more computational power to buy to execute a task, or whether parallel processing would speed up the algorithm.
  • Analysis of algorithms also helps with building general analytical skills, in particular tracking inventory in time and space of various sorts.

Theory of computation (including automata and computational complexity theory)

  • Knowledge of computational complexity theory is necessary for a deep understanding of algorithms, and that in turn helps with programming. However, the direct gains with respect to improving programming skill are not too high, and cases where computational complexity theory helps with a programming task are rare (basically, it's too meta).
  • Computational complexity theory is more helpful in understanding broadly what sort of computational tasks are realistically possible and what ones aren't, rather than figuring out how best to execute specific tasks. A strong knowledge of computational complexity theory helps one understand whether a particular computational task might become feasible with hardware speedups, whether it benefits from parallelization, etc.