One can specialize in any of theses subareas or even in just part of a subarea. Nonetheless, every computer scientist should have a basic understanding of these subareas. Specialization is usually done when working on an advanced degree in computer science. Some important aspects of computing such as parallel computation pervade all of the subareas. The subarea descriptions that follow provide a more detailed description of the discipline of computing, provide additional career information, and should help you to better understand the structure of our curriculum.
Programming is the ability to implement algorithms in a programming language.
Most of the computing community would agree that this is a basic skill. If you want to work in the field, you need to understand how programming languages implement various data types, control structures, data sharing, type checking, and storage management. Just as important, you must know how to apply this understanding to do an efficient job of implementing an algorithm. Algorithm Development is creating algorithms or tailoring existing algorithms for specific applications. Algorithm development makes use of problem-solving concepts such as problem decomposition, stepwise refinement, and analysis of algorithms.