**Computer science**is the academic study of information technology. At the K-12 level computer science serves to give students a foundation understanding of information technologies that are transforming industry, society and culture. At the university level, computer science is a common path to technical, research and leadership roles in society and industry. The following are common elements of computer science.

## Computing Theory

The foundations of computing such as computability theory, modeling computing complexity and information theory. For example, being able to define what makes a programing language complete.## Mathematics

The vast majority of information technology jobs require only a cursory understanding of mathematics. However, computer science programs at university often require calculus, algebra and statistics. In addition to this, computer science students learn mathematics that are particularly relevant to computation such as discrete mathematics, combinatorics and numerical computing. All this math serves as an important experience for computer science students to ensure they are able to work out complex problems based on an existing formulas and methods.## Logic

The syntax, semantics and structure of formal systems of logic such as propositional logic. It is also common for computer science students to learn a logic programming language and models for fuzzy logic.## Programming

Learning how to design and implement software. It is common for university programs to teach several types of programming such as assembly, object oriented, imperative, functional and procedural languages. Programming uses instructions and structures such as variables, data structures, loops, conditional statements and methods to solve problems.## Data Structures

Structures for the organization, management and processing of data. This typically examines existing data structures and how to select the most efficient data structure to solve a particular problem. It is also common to design unique data structures for a problem such as sorting or search.## Algorithms

The study of paradigms for solving complex problems with programming. This includes theory such as how to prove that code is correct and calculate worst-case runtimes. An algorithms course will also examine elegant known solutions to common programming problems. This serves to elevate a students understanding of programming by examining well designed solutions.## Software Engineering

Software engineering may include an overview of business analysis, software architecture, software design, software development processes and project management approaches. This is mostly focused on design and architecture. For example, taking a large problem and dividing it into manageable systems, services, layers and components that can be implemented by hundreds of software developers to create a unified solution.## Operating Systems

An overview of the services provided by operating systems and their design. This may involve implementing elements of an operating system in areas such as interrupt processing, file management, memory management, CPU scheduling and concurrent processing.## Networking

The design, implementation and analysis of networks. This typically includes an overview of network topographies, hardware, protocols and security techniques.## Information Security

The study of information security threats, vulnerabilities, solutions and issues. This typically covers areas such as cryptography, authentication, authorization, network security, privacy and methods for securing software designs.## Databases

The concepts necessary to design, implement, operate and retrieve data from databases. This typically covers different types of databases including relational, object oriented and NoSQL.## Information Retrieval

The retrieval of data from unstructured digital information and databases. For example, looking at how to implement a search engine or a data analytics tool.## Computer Graphics

The mathematics, data structures, models, algorithms and hardware used in 3d graphics.## User Interface Design

User experience and the design of user interfaces.## Compilers

Looking at how to design and implement programming languages.## Artificial Intelligence

The use of machine learning, statistical models and logic to solve complex problems.## Numerical Computing

Methods for computing solutions or approximations to math problems in areas such as calculus and linear algebra.## Scientific Computing

Numerical methods, algorithms, user interfaces and high-performance computing architectures that are useful for science and engineering.## Formal Methods

Developing precise specifications of the runtime properties of software.## Distributed Systems

Architectures and methods for implementing systems using many physical computers.Overview: Computer Science Examples | ||

Type | ||

Definition | The academic study of information technology | |

Related Concepts |