1.4 ACM CS Classification and hopefully others will be added soon Classification ACM CS Classification General Literature General Biographies/Autobiographies Conference Proceedings General Literary Works e.g., fiction, plays Introductory And Survey Reference e.g., dictionaries, encyclopedias, glossaries Miscellaneous Hardware General Control Structures And Microprogramming General Control Design Styles Control Structure Performance Analysis And Design Aids Microprogram Design Aids Languages And Compilers Optimization Microcode Applications Instruction Set Interpretation Miscellaneous Arithmetic And Logic Structures General Design Styles Parallel Pipeline High-Speed Arithmetic Algorithms Cost/Performance Miscellaneous Memory Structures General Semiconductor Memories Dram Dynamic memory Rom Read-only memory Sram Static memory Design Styles Associative Memories Cache Memories Mass Storage e.g., magnetic, optical, RAID Primary Memory Shared Memory Virtual Memory Miscellaneous Input/Output And Data Communications General Data Communications Devices Input/Output Devices Channels And Controllers Data Terminals And Printers Image Display Voice Interconnections Subsystems Asynchronous/Synchronous Operation Fiber Optics Interfaces Parallel I/O Topology e.g., bus, point-to-point Miscellaneous Register-Transfer-Level Implementation General Design Arithmetic And Logic Units Control Design Data-Path Design Memory Design Styles e.g., parallel, pipeline, special-purpose Design Aids Automatic Synthesis Hardware Description Languages Optimization Simulation Verification Miscellaneous Logic Design General Design Styles Cellular Arrays And Automata Combinational Logic Logic Arrays Parallel Circuits Sequential Circuits Design Aids Automatic Synthesis Hardware Description Languages Optimization Simulation Switching Theory Verification Miscellaneous Integrated Circuits General Types And Design Styles Advanced Technologies Algorithms Implemented In Hardware Gate Arrays Input/Output Circuits Memory Technologies Microprocessors And Microcomputers Vlsi very large scale integration Design Aids Graphics Layout Placement And Routing Simulation Verification Miscellaneous Performance And Reliability General Reliability Testing And Fault-Tolerance Performance Analysis And Design Aids Miscellaneous Miscellaneous Design Management Computer Systems Organization General Hardware/Software Interfaces Instruction Set Design e.g., RISC, CISC, VLIW Modeling Of Computer Architecture System Architectures Systems Specification Methodology Processor Architectures General Single Data Stream Architectures Risc/Cisc Vliw Architectures Multiple Data Stream Architectures Multiprocessors Array And Vector Processors Associative Processors Connection Machines Interconnection Architectures e.g., common bus, multiport memory, crossbar switch Mimd Multiple-instruction-stream, multiple-data-stream processors Simd Single-instruction-stream, multiple-data-stream processors Other Architecture Styles Adaptable Architectures Analog Computers Cellular Architecture e.g., mobile Data-Flow Architectures Heterogeneous Hybrid Systems Neural Nets Pipeline Processors Parallel Architectures Distributed Architectures Mobile Processors Miscellaneous Computer-Communication Networks General Data Communications Osi Open Systems Interconnection reference model Security And Protection e.g., firewalls Network Architecture And Design Atm Asynchronous Transfer Mode Circuit-Switching Networks Distributed Networks Frame Relay Networks Isdn Integrated Services Digital Network Network Communications Network Topology Packet-Switching Networks Store And Forward Networks Wireless Communication Network Protocols Applications SMTP, FTP, etc. Protocol Architecture OSI model Protocol Verification Routing Protocols Network Operations Network Management Network Monitoring Public Networks Distributed Systems Client/Server Distributed Applications Distributed Databases Network Operating Systems Local And Wide-Area Networks Access Schemes Buses Ethernet e.g., CSMA/CD High-Speed e.g., FDDI, fiber channel, ATM Internet e.g., TCP/IP Token Rings Internetworking Routers Standards e.g., TCP/IP Miscellaneous Special-Purpose And Application-Based Systems Microprocessor/Microcomputer Applications Process Control Systems Real-Time And Embedded Systems Signal Processing Systems Smartcards Performance Of Systems Design Studies Fault Tolerance Measurement Techniques Modeling Techniques Performance Attributes Reliability Availability And Serviceability Computer System Implementation General Large And Medium Computers Mainframe Super Computers very large Microcomputers Microprocessors Personal Computers Portable Devices e.g., laptops, personal digital assistants Workstations Vlsi Systems Servers Miscellaneous Miscellaneous Software General Programming Techniques E General Applicative Functional Programming Automatic Programming Concurrent Programming Distributed Programming Parallel Programming Sequential Programming Object-Oriented Programming Logic Programming Visual Programming Miscellaneous Software Engineering General Protection Mechanisms Standards Requirements/Specifications Elicitation Methods e.g., rapid prototyping, interviews, JAD Languages Methodologies e.g., object-oriented, structured Tools Design Tools And Techniques Computer-Aided Software Engineering CASE Decision Tables Evolutionary Prototyping Flow Charts Modules And Interfaces Object-Oriented Design Methods Petri Nets Software Libraries State Diagrams User Interfaces Coding Tools And Techniques Object-Oriented Programming Pretty Printers Program Editors Standards Structured Programming Top-Down Programming Software/Program Verification Assertion Checkers Class Invariants Correctness Proofs Formal Methods Model Checking Programming By Contract Reliability Statistical Methods Validation Testing And Debugging Code Inspections And Walk-Throughs Debugging Aids Diagnostics Distributed Debugging Error Handling And Recovery Monitors Symbolic Execution Testing Tools e.g., data generators, coverage testing Tracing Programming Environments Graphical Environments Integrated Environments Interactive Environments Programmer Workbench Distribution Maintenance And Enhancement Documentation Portability Restructuring Reverse Engineering And Reengineering Version Control Metrics Complexity Measures Performance Measures Process Metrics Product Metrics Management Cost Estimation Life Cycle Productivity Programming Teams Software Configuration Management Software Process Models e.g., CMM, ISO, PSP Software Quality Assurance SQA Time Estimation Software Architectures Data Abstraction Domain-Specific Architectures Information Hiding Languages e.g., description, interconnection, definition Patterns e.g., client/server, pipeline, blackboard Interoperability Data Mapping Distributed Objects Interface Definition Languages Reusable Software Domain Engineering Reusable Libraries Reuse Models Miscellaneous Programming Languages General Standards Formal Definitions And Theory Semantics Syntax Language Classifications Applicative Functional Languages Concurrent Distributed And Parallel Languages Constraint And Logic Languages Data-Flow Languages Design Languages Extensible Languages Macro And Assembly Languages Multiparadigm Languages Object-Oriented Languages Specialized Application Languages Very High-Level Languages Language Constructs And Features Abstract Data Types Classes And Objects Concurrent Programming Structures Constraints Control Structures Coroutines Data Types And Structures Dynamic Storage Management Frameworks Inheritance Input/Output Modules Packages Patterns Polymorphism Procedures Functions And Subroutines Recursion Processors Code Generation Compilers Debuggers Incremental Compilers Interpreters Memory Management garbage collection Optimization Parsing Preprocessors Retargetable Compilers Run-Time Environments Translator Writing Systems And Compiler Generators Miscellaneous Operating Systems C General Process Management Concurrency Deadlocks Multiprocessing/Multiprogramming/Multitasking Mutual Exclusion Scheduling Synchronization Threads Storage Management Allocation/Deallocation Strategies Distributed Memories Garbage Collection Main Memory Secondary Storage Storage Hierarchies Virtual Memory File Systems Management Access Methods Directory Structures Distributed File Systems File Organization Communications Management Buffering Input/Output Message Sending Network Communication Reliability Backup Procedures Checkpoint/Restart Fault-Tolerance Verification Security And Protection Access Controls Authentication Cryptographic Controls Information Flow Controls Invasive Software e.g., viruses, worms, Trojan horses Organization And Design Distributed Systems Interactive Systems Real-Time Systems And Embedded Systems Performance Measurements Modeling And Prediction Monitors Operational Analysis Queueing Theory Simulation Stochastic Analysis Systems Programs And Utilities Command And Control Languages Window Managers Miscellaneous Miscellaneous Data General Data Structures Arrays Distributed Data Structures Graphs And Networks Lists Stacks And Queues Records Trees Data Storage Representations Hash-Table Representations Linked Representations Object Representation Data Encryption Code Breaking Public Key Cryptosystems Standards e.g., DES, PGP, RSA Coding And Information Theory Data Compaction And Compression Error Control Codes Formal Models Of Communication Files Backup/Recovery Organization/Structure Sorting/Searching Miscellaneous Theory Of Computation General Computation By Abstract Devices General Models Of Computation Automata e.g., finite, push-down, resource-bounded Bounded-Action Devices e.g., Turing machines, random access machines Computability Theory Relations Between Models Self-Modifying Machines e.g., neural networks Unbounded-Action Devices e.g., cellular automata, circuits, networks of machines Modes Of Computation Alternation And Nondeterminism Interactive And Reactive Computation Online Computation Parallelism And Concurrency Probabilistic Computation Relativized Computation Complexity Measures And Classes Complexity Hierarchies Reducibility And Completeness Relations Among Complexity Classes Relations Among Complexity Measures Miscellaneous Analysis Of Algorithms And Problem Complexity General Numerical Algorithms And Problems Computation Of Transforms e.g., fast Fourier transform Computations In Finite Fields Computations On Matrices Computations On Polynomials Number-Theoretic Computations e.g., factoring, primality testing Nonnumerical Algorithms And Problems Complexity Of Proof Procedures Computations On Discrete Structures Geometrical Problems And Computations Pattern Matching Routing And Layout Sequencing And Scheduling Sorting And Searching Tradeoffs Between Complexity Measures Miscellaneous Logics And Meanings Of Programs General Specifying And Verifying And Reasoning About Programs Assertions Invariants Logics Of Programs Mechanical Verification Pre- And Post-Conditions Specification Techniques Semantics Of Programming Languages Algebraic Approaches To Semantics Denotational Semantics Operational Semantics Partial Evaluation Process Models Program Analysis Studies Of Program Constructs Control Primitives Functional Constructs Object-Oriented Constructs Program And Recursion Schemes Type Structure Miscellaneous Mathematical Logic And Formal Languages General Mathematical Logic Computability Theory Computational Logic Lambda Calculus And Related Systems Logic And Constraint Programming Mechanical Theorem Proving Modal Logic Model Theory Proof Theory Recursive Function Theory Set Theory Temporal Logic Grammars And Other Rewriting Systems Decision Problems Grammar Types e.g., context-free, context-sensitive Parallel Rewriting Systems e.g., developmental systems, L-systems Parsing Thue Systems Formal Languages Algebraic Language Theory Classes Defined By Grammars Or Automata e.g., context-free languages, regular sets, recursive sets Decision Problems Operations On Languages Miscellaneous Miscellaneous Mathematics Of Computing General Numerical Analysis General Computer Arithmetic Conditioning and ill-conditioning Error Analysis Interval Arithmetic Multiple Precision Arithmetic Numerical Algorithms Parallel Algorithms Stability and instability Interpolation Extrapolation Interpolation Formulas Smoothing Spline And Piecewise Polynomial Interpolation Approximation Approximation Of Surfaces And Contours Chebyshev Approximation And Theory Elementary Function Approximation Fast Fourier Transforms FFT Least Squares Approximation Linear Approximation Minimax Approximation And Algorithms Nonlinear Approximation Rational Approximation Special Function Approximations Spline And Piecewise Polynomial Approximation Wavelets And Fractals Numerical Linear Algebra Conditioning Eigenvalues And Eigenvectors direct and iterative methods Error Analysis Linear Systems direct and iterative methods Matrix Inversion Singular Value Decomposition Sparse Structured And Very Large Systems direct and iterative methods Quadrature And Numerical Differentiation Adaptive And Iterative Quadrature Automatic Differentiation Error Analysis Finite Difference Methods Gaussian Quadrature Iterative Methods Multidimensional Multiple Quadrature Roots Of Nonlinear Equations Continuation Homotopy Methods Convergence Error Analysis Iterative Methods Polynomials Methods For Systems Of Equations Optimization Constrained Optimization Convex Programming Global Optimization Gradient Methods Integer Programming Least Squares Methods Linear Programming Nonlinear Programming Quadratic Programming Methods Simulated Annealing Stochastic Programming Unconstrained Optimization Ordinary Differential Equations Boundary Value Problems Chaotic Systems Convergence And Stability Differential-Algebraic Equations Error Analysis Finite Difference Methods Initial Value Problems Multistep And Multivalue Methods One-Step Methods single step methods Stiff Equations Partial Differential Equations Domain Decomposition Methods Elliptic Equations Finite Difference Methods Finite Element Methods Finite Volume Methods Hyperbolic Equations Inverse Problems Iterative Solution Techniques Method Of Lines Multigrid And Multilevel Methods Parabolic Equations Spectral Methods Integral Equations Delay Equations Fredholm Equations Integro-Differential Equations Volterra Equations Applications Miscellaneous Discrete Mathematics General Combinatorics Combinatorial Algorithms Counting Problems Generating Functions Permutations And Combinations Recurrences And Difference Equations Graph Theory Graph Algorithms Graph Labeling Hypergraphs Network Problems Path And Circuit Problems Trees Applications Miscellaneous Probability And Statistics Contingency Table Analysis Correlation And Regression Analysis Distribution Functions Experimental Design Markov Processes Multivariate Statistics Nonparametric Statistics Probabilistic Algorithms including Monte Carlo Queueing Theory Random Number Generation Reliability And Life Testing Renewal Theory Robust Regression Statistical Computing Statistical Software Stochastic Processes Survival Analysis Time Series Analysis Mathematical Software Algorithm Design And Analysis Certification And Testing Documentation Efficiency Parallel And Vector Implementations Reliability And Robustness User Interfaces Miscellaneous Information Systems General Models And Principles General Systems And Information Theory General Systems Theory Information Theory Value Of Information User/Machine Systems Human Factors Human Information Processing Software Psychology Miscellaneous Database Management