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 2015-01-01:

Computer science is the scientific and practical approach to computation and its applications.

My definition:

Computer Science is the theory and practice of computation, algorithms, software systems, data organization, knowledge representation, language, intelligence, learning, and consciousness.

A shorter definition, relating it to other broad fields of study:

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

You might also want to see what Wikipedia has to say about Computer Science. (After all, this is one of the areas in which Wikipedia is “way better” than Britannica!)

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:

Subject Areas

For what it’s worth, the ACM and IEEE identified these 18 knowledge areas in Computer Science way back in 2013.

Exercise: Has anything changed? Can you think of recent trends in computing that might warrant another category?

More Subject Areas

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

Recurring Concepts

Computer scientists need to understand the following concepts. Note that these are not specific to computers that have keyboards and monitors.

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.

Two Big Ideas

You’ve undoubtably 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 is called undecidability.

Here is one such problem.

Summary

We’ve covered:

  • Definitions 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