The 2012 ACM Computing Classification System - Introduction


For each top-level branch of the revised CCS, we took the following general approach:

  1. The classification maintains an n-level hierarchy. It does not use classification numbers, so there is no distinction between "coded" and "uncoded" levels.
  2. The classification is poly-hierarchical. Some terms are parented by multiple concepts, but the narrower children of a particular term are always the same.
  3. For top-level, 2nd-level, and 3rd-level terms, each existing "General" and "Miscellaneous" category was rolled up into the term itself. For example, a resource about integrated circuits in general, formerly classified with B.7.0, will now be classified simply with the term Integrated circuits.
  4. Acronyms have been removed from each root term but were added as equivalents or synonyms to be incorporated into an evolving thesaurus.
  5. Former GENERAL TERMS were incorporated in the CCS General node itself as Cross-cutting Computing Concepts.



The largest change to the Hardware branch was the consolidation of performance and reliability concepts into a single, 2nd-level node. The 1998 classification had reliability and testing approaches, design aids, and performance analysis tools listed multiple times—under each 2nd-level node in the classification. The same concepts were found under computer circuits, memory structures, logic structures, and so on. In order to decrease repetition and the potential for confusion, we brought together all performance and reliability terms in one place. The terms found under Performance and reliability can now be applied along with any appropriate primary concept. The new classification offers two additional new 2nd-level concepts: Network hardware, and Small machines. Within Small machines are terms related to Nanotechnology and Quantum Computing. Network hardware organizes such terms as Network adaptors, Network bridges, and Routers.

The 2nd-level concept Computer circuits was restructured to incorporate some new concepts, such as Circuit classes, and better organize existing concepts such as Integrated circuits and Microprocessors.


Processor architectures (C.1) became the more broadly named Architectures, and we reorganized some concepts within. The 1998 classification had one 2nd-level concept called Special-purpose and application-based systems (C.3). We split this into four discrete concepts at the 2nd level:

  • Application-based systems
  • Embedded systems
  • Multicore systems
  • Real-time systems

The majority of the terms found under these four concepts are new. Perhaps the largest change to this branch is that network-related concepts were pulled out into the new, top-level Networks branch of the classification. Almost everything under the old Computer-communication networks (C.2) was moved to the new branch, except for Distributed systems, which became a 2nd-level concept here. Finally, the 2nd-level concept Computer system implementation (C.5) seemed out of place so it was moved to the Social and professional topics branch and is currently parented by Management of computing and information systems. Terms underneath C.5 were distributed to other places in the hierarchy.


This new top-level branch contains a mixture of brand-new terms and existing concepts pulled from Computer-communication networks (C.2) in the 1998 classification. Because most network-related concepts were buried at the 3rd and 4th levels of the old CCS, moving Networks to a top-level branch allowed us to achieve greater specificity with 3rd- and 4th-level terms. These 2nd-level concepts existed in the 1998 CCS: Network protocols, Internet, Data communications, Distributed architectures, and Network topologies. New 2nd-level concepts include: Network hardware, Network performance and reliability, Network scale, and Wireless networks. Both the existing and new 2nd-level concepts contain many new 3rd- and 4th-level terms.


A major change in this branch is the elimination of the former 2nd-level term Programming techniques (D.1). Consideration was giving to locating this term as a 3rd-level term under Software engineering, but it was felt that the specific types of programming techniques were either in an additional location, covered adequately elsewhere as programming languages or environments, or were no longer necessary. Programming languages (D.3) is now the 2nd-level term Programming languages and compilers. Therefore, the old term Language classifications (D.3.2) was renamed Programming languages. This 3rd- level term gathers types of languages, and is not meant to be inclusive but to include the most relevant categories. Content for which a 4th-level term does not exist would be classified with the broad term Programming languages. Processors (D.3.4) was eliminated and replaced with former 4th-level term Compilers. Compilers is used in a broad sense and includes concepts such as Interpreters and Run-time environments that are not strictly considered compilers. The new term Middleware remains a 2nd-level term, although consideration was given to including the concept under Operating systems and/or locating the sub-terms elsewhere.


Because we needed specificity in the concepts related to design and analysis of algorithms, we split this into two concepts: Analysis of algorithms, and Design of algorithms. Analysis of algorithms contains asymptotic, numerical, and non-numerical analysis methods. Many of the terms describing algorithm design techniques and patterns are new to the classification. A new 2nd-level term, Computational complexity, organizes the concepts of complexity classes and complexity measures. In the 1998 classification, these concepts were found in F.1 Computation by abstract devices along with models and modes of computation. Models and modes of computation is now a 2nd-level term. Formal languages and mathematical logic were combined in the 1998 classification (F.4) but were split here to allow for greater precision in sub-terms. Logics and meanings of programs remain largely unchanged in its organization and its concepts.


The biggest change in this branch is the use of the broader concept Mathematical analysis as a 2nd-level term. This was felt to more accurately reflect the concepts located within this sub-branch. In this scheme, Numerical analysis becomes a 3rd-level term and is also located under Analysis of algorithms in the Theory of computation branch. Granular terms include some concepts formerly located under Numerical algorithms and problems (F.2.1). Information theory was felt to fit best in this branch and streamlines aspects of Coding and information theory (E.4) from the old Data branch. The new 2nd-level term Continuous mathematics was developed with new concepts and shares the term Calculus with Mathematical analysis. Similar to the Computing methodologies branch, "Applications" terms were eliminated.


The overall structure of Information systems remained largely the same with two major changes. Much of section H.5, Information interfaces and presentation, was moved to the new Human-centered computing branch. And with the dissolution of the old Data (E.) branch, many data-related terms ended up within Information systems. The 2nd-level concept Information systems applications now reflects a larger variety of applications, including Data warehouses, Decision support systems, Enterprise information systems, and Geographic information systems. A new 2nd-level concept now houses terms related to the Web: applications, languages, searching, and web services. And multimedia devices and databases are now collected here in the new 2nd-level concept Multimedia information systems, including sound and music computing along with video and animation terms.


This new branch incorporates concepts scattered in the old classification as well as numerous new terms. Data encryption (E.3) is now Cryptography and is more fully developed with additional concepts. Re-worked terms from Security and protection (D.4.6 and K.6.5) are included in various locations of this branch. The new terms Privacy policies and Security policies were deemed to fit best under Usable security and privacy, although relevance to other areas of this branch is recognized. Among the 2nd-level terms are: Hardware security; Operating systems, distributed systems, and network security; and Database and storage security. These sub-branches are not included with the respective topical main branches. For example, Hardware security is not also included in the Hardware branch.


Human-centered computing (HCC) has become a discipline in its own right since the last iteration of the classification. Because of its increasing importance in the literature, HCC was made a top-level branch. New 2nd-level concepts were added and we also pulled together existing terms related to interfaces, usability, and personal computing. Collaborative and social computing was parented here in addition to its location within Social and professional topics. Three of the four remaining 2nd-level concepts below are new:

  • Human-computer interaction
  • Information visualization
  • Personal computing
  • Ubiquitous and mobile computing

Many of the existing terms related to interface design—primarily those found in H.5 Information interfaces and presentation—are now collected here under Human-computer interaction. Visualization appeared somewhat frequently within author-supplied keywords and so we now have 3rd- and 4th-level terms for various visualization tools and techniques. Ubiquitous and mobile computing contains 3rd-and 4th-level terms related to applications and devices for both mobile and ubiquitous computing—which are sometimes but not always the same.


This branch includes major changes necessitated by the elimination of Image processing and computer vision (I.4). The terms under this former 2nd-level term were relocated to either the new 3rd-level term Computer vision (under Artificial intelligence) or Computer graphics. Computer vision also includes a re-working of Vision and scene understanding (I.2.10). Consideration was given to eliminating Parallel computing as a 2nd-level term in this branch. Perhaps the concept is covered adequately by Parallel architectures, a term within the Computer systems organization branch, and the lower-level terms can be relocated or eliminated. Within this branch, the old classification included many instances of "Applications" (e.g., I.1.4). These terms were eliminated. It is envisioned that content or resources about an application of a computing methodology will be classified with the specific methodology term and an additional term from elsewhere in the classification. However, under Artificial intelligence, Applications and expert systems (I.2.1) was retained and renamed Artificial intelligence applications. Gathered here are major types of applications (e.g., Expert systems); broad 4th-level terms (e.g., Law) are not included but can be found in the Applied computing branch.


This branch, previously Computer applications, includes the reorganization of many concepts found under the former 2nd-level terms Administrative data processing (J.1) and Computers in other systems (J.7). Education is now a 2nd-level term, with concepts related to the use of computers in education located here. A number of concepts such as Command and control are now located under Operations research; this new sub-branch was fleshed out with additional new terms. Computers in other systems (J.7) was renamed Computers in other domains to gather subject areas/disciplines that do not fit conceptually under the other 2nd-level terms. Electronic commerce is now located in Applied computing as well as within the Social and professional topics branch. The new term Enterprise information systems also has two locations: within Applied computing and within the Information systems branch. Document management and text processing is largely a reworking of concepts from Document and text processing (I.7) in the old Computing methodologies branch.


This branch was renamed from 1998's Computing Mileux (K.). Many existing 2nd-level concepts were carried over to the new classification, including Computing industry; History of computing; Computers and society; Computing profession, and Management of computing and information systems. The 1998 classification combined in K.3 Computers and Education terms related to learning about computers (K.3.2) and using computers in education (K.3.1). We split these concepts and moved all terms related to the use of computers in education to the Applied computing branch. Computer and information science education remained here as a 2nd-level concept. Personal computing was moved to the newly created Human-centered computing (HCC) top-level branch, since the concept had stronger relationships to other HCC concepts than to Social and professional topics. A new 3rd-level term – Collaborative and social computing – organizes concepts pertaining to tools and uses for social computing. And additional 4th-level terms were added under Electronic commerce since the field has grown since the 1998 classification.


Publish with ACM

ACM's prestigious conferences and journals seek top-quality papers in all areas of computing and IT. It is now easier than ever to find the most appropriate venue for your research and publish with ACM.

Publish your work

ACM Case Studies

Written by leading domain experts for software engineers, ACM Case Studies provide an in-depth look at how software teams overcome specific challenges by implementing new technologies, adopting new practices, or a combination of both. Often through first-hand accounts, these pieces explore what the challenges were, the tools and techniques that were used to combat them, and the solution that was achieved.

Lifelong Learning

ACM offers lifelong learning resources including online books and courses from Skillsoft, TechTalks on the hottest topics in computing and IT, and more.