Thursday, November 29, 2012

Core areas of Computer Science

In 1991, a joint report of the Association of Computing Machinery ( and the IEEE Computer Society ( defined seven "Core areas of computer science." Since that time, Computing Sciences Accreditation Board ( has identified two other areas (computer graphics and computer networks) as separate areas (originally contained in human-computer interaction and operating systems, respectively).

The nine subject areas defining the core of computer science are:

Algorithms and Data Structures

This area deals with specific classes of problems and their efficient solutions. The performance characteristics of algorithms and the organization of data relative to different access requirements are major components.


Methods of organizing efficient, reliable computing systems provide a central focus of this area. It includes implementation of processors, memory, communications, and software interfaces, as well as the design and control of large computational systems that are reliable.

Artificial Intelligence and Robotics

The basic models of behavior and the building of (virtual or actual) machines to simulate animal and human behavior are included here. Inference, deduction, pattern recognition, and knowledge representation are major components.

Database and Information Retrieval

The area is concerned with the organization of information and algorithms for the efficent access and update of stored information. The modeling of data relationships, security and protection of information in a shared environment, and the characteristics of external storage devices are included in this area.

Human-Computer Communication

The efficient transfer of information between humans and machines is the central focus of this area. Graphics, human factors that affect efficient interaction, and the organization and display of information for effective utilization by humans are included.
Numerical and Symbolic Computation

General methods for efficiently and accurately using computers to solve equations from mathematical models are central to this area. The effectiveness and efficiency of various approaches to the solution of equations, and the development of high-quality mathematical software packages are important components.

Operating Systems

This area deals with control mechanisms that allow multiple resources to be efficiently coordinated during the execution of programs. Included are appropriate services of user requests, effective strategies for resource control, and effective organization to support distributed computation.

Programming Languages

The fundamental questions addressed by this area involve notations for defining virtual machines that execute algorithms, the efficient translation from high-level languages to machine codes, and the various extension mechanisms that can be provided in programming languages.

Software Methodology and Engineering

The major focus of this area is the specification, design, and production of large software systems. Principles of programming and software development, verification and validation of software, and the specification and production of software systems that are safe, secure, reliable, and dependable are of special