Computer science is the core of theoretical and practical knowledge that is used in the work of specialists in computer science, programming, information systems and technology. As a scientific discipline, computer science emerged in the early 1940s as a result of the fusion of algorithm theory and mathematical logic, as well as the invention of electronic computers. Throughout the half-century history of computer science, certain areas have come and gone repeatedly. But one of the most important areas of computer science remains the theory, analysis, development, performance evaluation, implementation and practical application of algorithms.

In order to apply the basic results of computer science research, one must be skilled in four basic areas:

algorithmic thinking,
information representation,
programming, and
system design.

The subject area of computer science as a whole can be divided into two broad subfields:

The study of specific information processing processes and related data representation issues.

Information processing structures, mechanisms, and patterns.
A critical goal of computer science education is to clearly understand the relationships that exist between applications and computer systems. Computer applications fall into two categories:

numerical and
non-numeric applications.

Numerical applications are dominated by mathematical models and numerical data. Non-numerical applications present information in the form of symbols and rules. Traditionally, computer science has a closer relationship with mathematics. For their part, computer science has a strong influence on mathematics.

Divisions of Computer Science
There are currently twelve major divisions commonly distinguished in computer science:

Algorithms and Data Structures. The algorithm theory section includes computability theory, computational complexity theory, parallel computing theory (parallel programming), deductive and relational database theory, pattern recognition theory, algorithm theory, cryptography, and many other areas.

Programming languages. This branch of computer science studies systems of notation intended for execution of algorithms on virtual machines and ways of formal recording of algorithms and data themselves. The crowning achievement of developers are programs that get a description of the language and automatically create a compiler to translate programs from this language to machine language (for example, programs YACC and LEX).

Computer Architecture. The section of computer architecture theory includes digital logic, Boolean algebra, coding theory, and finite automata theory. The most significant achievements in this area of computer science include modules for performing arithmetic operations, cache memory, the so-called von Neumann machines, RISC computers and CISC computers. Efficient methods of recording and storing information have been developed, as well as error detection and correction methods, including failure recovery facilities.

Operating Systems and Computer Networks. This branch of computer science is concerned with the research of control mechanisms that allow the efficient coordination of large numbers of computing resources in computing distributed across multiple computer systems connected in global and local networks.

Software Development. This section of computer science is concerned with the creation of large software systems that must meet given software specifications, be safe, secure, reliable and trustworthy to users.

Databases and information retrieval systems. This branch of computer science is concerned with organizing large sets of persistently stored and shared data, allowing for updates and enabling efficient querying. For the study and development of databases and information retrieval systems are used relational algebra and relational calculus, the theory of parallel data processing, performed with the help of transactions.

Artificial Intelligence and Robotics. This section of computer science includes modeling processes of cognition of the world by animals and humans with the ultimate goal of creating machine components capable of imitating or enhancing them. The main objects of study in this field include recognition of sensory signals, sounds, images, and images, learning, reasoning processes in problem solving and planning, and language understanding. The basic principles of design of artificial intelligence systems are developed: logic programming; expert systems; methods and means of representation, storage and use of knowledge; applied systems using natural language; speech synthesizers and speech recognition systems; robots; genetic algorithms.

Computer graphics. Computer graphics is concerned with the processes of visually representing real and virtual objects, as well as simulating their movements on a two-dimensional computer screen or in a three-dimensional hologram. It draws on computational geometry and many other fields of science.
Human-computer interaction. This area of computer science studies the effective coordination and transfer of information between humans and machines (user interface) through various sensors and devices that mimic human activities, as well as information structures that reflect human representations of the world around us.
Computational Mathematics. This area of computer science is concerned with scientific research that cannot be done without high-performance computing and data exchange.
Business informatics. This field of computer science studies the exchange of information and the creation of software systems that enable organizations to operate and coordinate their employees.
Bioinformatics. This new field of computer science appeared as a result of close interaction between computational mathematics and biological sciences.
The most promising directions of computer science development are associated with computational mathematics, cognition theory, library science, business informatics, bioinformatics, industrial production organization and management, and architecture.

To become a specialist in modern information technology is possible only with the integrated study of all the components of computer science.