Computer Science

Computer Science is a field of study that has something, but necessarily everything, to do with the machines we now call computers.

Definitions

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:

Philosophy
is concerned with the search for fundamental truths of the universe using logic (reasoning).
Mathematics
is concerned with reasoning on a formal basis (symbol manipulation).
Computer Science
is concerned with automating the reasoning process.

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.

Exercise: How many times have you heard people say “The AI did this” when all they meant by “AI” was just a computer program?

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.

Computer Science Wikipedia

Questions Computer Scientists Ask

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?

What Computer Scientists Do

In case anyone asks you, computer scientists:

Here’s a more poetic answer to what computer scientists do:

Booch computer scientist quote

Subject Areas

The ACM, IEEE-CS and the AAAI have gotten together and defined a set of knowledge areas for computer science.

Knowledge AreaCodeSome Topics
Algorithmic FoundationsALFoundational Data Structures and Algorithms • Algorithmic Strategies • Complexity Analysis • Computational Models and Formal Languages • Algorithms and Society
Architecture and OrganizationARDigital 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 IntelligenceAIFundamental 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 ManagementDMThe 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 LanguagesFPL• 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 TechniquesGITFundamental Concepts • Rendering • Geometric Modeling • Shading • Computer Animation • Visualization • Immersion (MR, AR, VR) • Interaction • Image Processing • Tangible/Physical Computing • Simulation
Human-Computer InteractionHCIUnderstanding the User • Accountability and Responsibility in Design • Accessibility and Inclusive Design • Evaluating the Design • System Design
Mathematical and Statistical FoundationsMSFDiscrete Mathematics • Probability • Statistics • Linear Algebra • Calculus
Networking and CommunicationNCNetworked Applications • Reliability Support • Routing And Forwarding • Single-Hop Communication • Mobility Support • Network Security
Operating SystemsOSRole 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 ComputingPDCParallel Programs • Parallel Communication • Parallel Coordination • Parallel Evaluation • Parallel Algorithms
SecuritySECFoundational Security • Defensive Programming • Cryptography • Security Analysis and Engineering • Digital Forensics • Security Governance
Society, Ethics, and the ProfessionSEPSocial 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 FundamentalsSDFFundamental Programming Concepts and Practices • Development of Fundamental Data Structures • Development of Algorithms • Software Development Practices
Software EngineeringSETeamwork • Tools and Environments • Product Requirements • Software Design • Software Construction • Software Verification and Validation • Refactoring and Code Evolution • Software Reliability • Formal Methods
Specialized Platform DevelopmentSPDWeb Platforms • Mobile Platforms • Robot Platforms • Embedded Platforms • Game Platforms • Interactive Computing Platforms
Systems FundamentalsSFBasic 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.

More Subject Areas

Here’s a finer breakdown of subject areas within computer science:

Exercise: Ask a friend, or a popular chatbot, if there is anything that can be added to this list.

Recurring Concepts

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.

Kinds of Software

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:

Related Fields

Computer science borrows from, and touches, a whole lot of other fields, including:

People

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.

ada_lovelace.png

alanturing.jpg

gracehopper.jpeg

johnmccarthy.jpeg

alankay.jpeg

franallen.jpeg

Two Big Ideas

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.

Exercise: What does that supercomputer in your pocket do that separate “single-function” devices used to (or still) do? Come up with a list of 20 things. Here are some things to get you started: set and activate alarms, make phone calls, tell the time, count your steps, navigate, manage your appointments). What things do they not currently do that you think they should do?

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.

Here is one such problem.

Exercise: Memorize the two big ideas and be able to explain them. It’s good to have these explanations handy in case people every ask you “Oh you are a computer scientist? What is that all about? What do you do?”

Summary

We’ve covered:

  • Definitions of Computer Science
  • AI is a subfield of computer science
  • What computer scientists are concerned with and what they do
  • Subject areas and recurring concepts
  • Which fields are related to computer science
  • Two big ideas in CS: (1) universal computing machines exist, and (2) not everything is computable