Wikipedia’s Definition, as of early spring, 2026:
Computer science is the study of computation, information, and automation.
Nice and to the point. My definition is a little more expansive:
Computer Science is the theory and practice of computation, knowledge representation, language, intelligence, learning, and consciousness.
A shorter definition, relating it to other broad fields of study:
The latter definition makes clear that artificial intelligence, and in particular generative AI, is a subfield of computer science.
Artificial Intelligence is a subfield of Computer Science.
This is probably worth repeating:
Artificial Intelligence is a subfield of Computer Science.
Please read what Wikipedia has to say about Computer Science. This is a great article, and does a great job explaining the field and dispelling common misconceptions.
These are the questions that characterize computer science:
None of these requires a computer to answer, right?
Wait—there’s one more question: Does P = NP?
In case anyone asks you, computer scientists:
Here’s a more poetic answer to what computer scientists do:

The ACM, IEEE-CS and the AAAI have gotten together and defined a set of knowledge areas for computer science.
| Knowledge Area | Code | Some Topics |
|---|---|---|
| Algorithmic Foundations | AL | Foundational Data Structures and Algorithms • Algorithmic Strategies • Complexity Analysis • Computational Models and Formal Languages • Algorithms and Society |
| Architecture and Organization | AR | Digital Logic and Digital Systems • Machine-Level Data Representation • Assembly Level Machine Organization • Memory Hierarchy • Interfacing and Communication • Functional Organization • Performance and Energy Efficiency • Heterogeneous Architectures • Quantum Architectures |
| Artificial Intelligence | AI | Fundamental Issues • Fundamental Knowledge Representation and Reasoning • Machine Learning • Applications and Societal Impact • Probabilistic Representation and Reasoning • Planning • Logical Representation and Reasoning • Agents • Natural Language Processing • Robotics • Perception and Computer Vision |
| Data Management | DM | The Role of Data • Core Database Systems Concepts • Data Modeling • Relational Databases • Query Construction • Query Processing • DBMS Internals • NoSQL Systems • Data Security & Privacy • Data Analytics • Distributed Databases • Cloud Computing • Semi-structured and Unstructured Databases • Society, Ethics, and Professionalism |
| Foundations of Programming Languages | FPL | • Compiled vs Interpreted Languages • Scripting • Object-Oriented Programming • Functional Programming • Logic Programming • Event-Driven and Reactive Programming • Parallel and Distributed Computing • Type Systems • Systems Execution and Memory Model • Language Translation and Execution • Program Abstraction and Representation • Syntax Analysis • Compiler Semantic Analysis • Program Analysis and Analyzers • Code Generation • Runtime Behavior and Systems • Advanced Programming Constructs • Language Pragmatics • Formal Semantics • Formal Development Methodologies • Design Principles of Programming Languages • Quantum Computing |
| Graphics and Interactive Techniques | GIT | Fundamental Concepts • Rendering • Geometric Modeling • Shading • Computer Animation • Visualization • Immersion (MR, AR, VR) • Interaction • Image Processing • Tangible/Physical Computing • Simulation |
| Human-Computer Interaction | HCI | Understanding the User • Accountability and Responsibility in Design • Accessibility and Inclusive Design • Evaluating the Design • System Design |
| Mathematical and Statistical Foundations | MSF | Discrete Mathematics • Probability • Statistics • Linear Algebra • Calculus |
| Networking and Communication | NC | Networked Applications • Reliability Support • Routing And Forwarding • Single-Hop Communication • Mobility Support • Network Security |
| Operating Systems | OS | Role and Purpose of Operating Systems • Principles of Operating System • Concurrency • Protection and Safety • Scheduling • Process Model • Memory Management • Device Management • File Systems API and Implementation • Virtualization • Real-time and Embedded Systems • Fault Tolerance |
| Parallel and Distributed Computing | PDC | Parallel Programs • Parallel Communication • Parallel Coordination • Parallel Evaluation • Parallel Algorithms |
| Security | SEC | Foundational Security • Defensive Programming • Cryptography • Security Analysis and Engineering • Digital Forensics • Security Governance |
| Society, Ethics, and the Profession | SEP | Social Context • Methods for Ethical Analysis • Professional Ethics • Intellectual Property • Privacy and Civil Liberties • Communication • Sustainability • History • Economies of Computing • Security Policies, Laws and • Computer Crimes • Equity, Diversity and Inclusion |
| Software Development Fundamentals | SDF | Fundamental Programming Concepts and Practices • Development of Fundamental Data Structures • Development of Algorithms • Software Development Practices |
| Software Engineering | SE | Teamwork • Tools and Environments • Product Requirements • Software Design • Software Construction • Software Verification and Validation • Refactoring and Code Evolution • Software Reliability • Formal Methods |
| Specialized Platform Development | SPD | Web Platforms • Mobile Platforms • Robot Platforms • Embedded Platforms • Game Platforms • Interactive Computing Platforms |
| Systems Fundamentals | SF | Basic Concepts • Resource Allocation and Scheduling • System Performance • Performance Evaluation • System Reliability • System Security • System Design |
See, again, AI is just a subfield of Computer Science.
Here’s a finer breakdown of subject areas within computer science:
Computer scientists have a deep understanding of the following concepts.
If these seem abstract, it’s because they are. Computer Science is an academic discipline. There is a real science there. And nearly every computer scientist has become familiar with the following quote, attributed to E. W. Dijkstra:
Computer science is no more about computers than astronomy is about telescopes.
People use principles form computer science to create lots of different types of systems. Here’s a rough list of (overlapping) software system categories:
Speaking of software, it’s useful to point out that software runs on many different kinds of devices, and computer scientists need to take into account how people use these devices when writing software for them. Devices include:
Computer science borrows from, and touches, a whole lot of other fields, including:
Wikipedia has a list of famous computer scientists. If you want to read about some of these people, don’t skip Alan Turing, Grace Hopper, and Alan Kay.






You’ve undoubtedly noticed, when using your phone, tablet, or laptop, all your programs are running on the same device. You don’t need a separate machine for each of those different things!. You don’t need one machine for adding numbers, one for communicating by voice to other people, one for telling the current time, one for telling you how far away your destination is, one for finding the number of days between two dates, one for maintaining your TO-DO list, one for telling you your current direction, one for timers and alarms, one for translating Irish poems into Swahili; you get the idea.
You just need one machine.
But this was not always obvious. It was not obvious until the 1930s or later. People had to ask the deep question “What even is computation?” and get it onto a formal footing, for the field of Computer Science to arise. Alan Turing answered that question by representing computation as a “machine” described as a mathematical object. Then he showed every machine could be simulated by a single machine (since named the Universal Turing Machine in his honor).
That was stunning. Brilliant. The first big idea is universality.
But there’s one more big idea: Turing was able to show (others discoverd this independently by the way) that there were some problems that could not be solved (a.k.a. functions that could not be computed, a.k.a. questions that could not be answered) by any machine. The second big idea, then, is called undecidability.
We’ve covered: