What is a good metaphor or example to explain to an English major the difference between classical computer science and "being good with using MS-Windows"

  • computer science
  • computer programming
  • using computers

3 profoundly different things. Most people have no idea what Computer Science even is. They just see the word "computer". Hence, "he is a Computer Science major" can be interpreted as "He can hook up my printer". Or that he's "good with computers". Even fewer people know the difference between computer programming and Computer Science.

Computer Science is computing theory. CS can be learned without actual computers. CPU micro architecture. How to sort numbers, how to traverse lists, etc. State machines. Algorithms, big(Oh), etc. How to design a programming language or compiler.

Programming is writing code and creating applications in a language and compiler created by a computer scientist.

Lastly, there is using a computer (using a GUI, mouse, and keyboard. Internet, MS-Office, etc)

Yet all three of these are used interchangeably by laymen.

What is a good metaphor or example to explain to an English major the difference between classical computer science and "being good with using MS-Windows" Or simply, a pithy example of how real computer science has nothing to do with using MS-Windows.

  • 2
    $\begingroup$ I'm looking forward to biting answers for that one ;-) $\endgroup$ – vonbrand Mar 6 '14 at 18:00
  • $\begingroup$ Why not say, "CS is a kind of math". $\endgroup$ – Karolis Juodelė Mar 8 '14 at 12:39
  • $\begingroup$ see old famous essay noting/remarking on this age-old dichotomy the two cultures by CP Snowe. CS is just the latest in a long line of disciplines fitting into that. as a scientist/novelist he was uniquely qualified to comment/pontificate on it & it will be very relatable to english majors, its probably even studied in some english classes. also deep connections to sociology. $\endgroup$ – vzn Mar 8 '14 at 18:15
  • $\begingroup$ Hello, and thanks for posting! Unfortunately, as it is, I'm having a hard time seeing how this question isn't primarily opinion-based; as such, in its current form, it isn't a great fit for this site (despite its popularity). Please take a moment to update your question to make it more narrow in scope, to ask for specific kinds of information (references, I expect, will be the most appropriate sort). For instance, if the question asked "what are well-known analogies which have been used to explain computer science," or "where can I find information on comparisons,". Thanks for contributing! $\endgroup$ – Patrick87 May 5 '14 at 18:55
  • $\begingroup$ (Also, sorry for missing this question until now. I would have preferred to be asking for these edits earlier than now. Thanks for your understanding.) $\endgroup$ – Patrick87 May 5 '14 at 18:56

How about an automotive analogy?

  • uses computers and maybe "is good with computers" :: a driver (can drive and refuel safely) and maybe a car enthusiast (can jump start a car; is familiar with many makes and models; knows techniques like using windshield treatment to keep rain from reducing visibility).
  • programmer :: an automotive mechanic or technician. Knows how cars work. Can repair and modify cars and even build kit cars. Ought to know how to debug/diagnose problems by using the scientific method. Might not be aware of relevant theory and thus might write O(n2) loops.
  • software engineer :: an automotive engineer. Designs cars, engines, and other components that you can entrust your life with, and does it within schedule, cost, manufacturability, and other constraints. Knows how to apply the relevant theory/math such as finite element analysis.
  • computer scientist :: an automotive scientist. Researches new ideas in vehicles, human-machine interfaces, and propulsion. Does computational crash test modeling. Adds to the body of theory and experimental results.

So for people who equate all “computing” with “proficient in using some software package,” that's like equating driving proficiency with the ability to design antilock brakes that we trust lives to, that are manufacturable with consistent high quality and low cost, and work for years in extreme weather. Or equating driving proficiency with researching what kind of radar-triggered braking features will avoid collisions without freaking the driver into swerving into another lane.

Perhaps lay people confuse these terms because "computer science" classes teach computer use skills, programming, theory, or engineering. All that stuff (arguably not the first part) fits in the curriculum of computer science. None of it is the end-all "content" of computer science, just as English classes are learning on the way to an English major (a fuzzier concept).

  • 1
    $\begingroup$ See also my attempt here; "skillful use of some computer programs" would probably equate to some thing like "ability to hang a picture and change lightbulbs". $\endgroup$ – Raphael Mar 6 '14 at 18:53
  • 2
    $\begingroup$ From a friend: First metaphor that comes to mind is cars: - Computer science ~= designing a car engine: theory matters, math is involved. - Computer programming ~= rebuilding a car engine: you need to know what you're doing and understand how everything works, but theoretical aspects are much less important. - Using computers ~= you can drive the car and put gas in it without blowing up the gas station. $\endgroup$ – JackOfAll Mar 6 '14 at 19:59
  • $\begingroup$ Incorporating the suggestions from @JackOfAll required distinguishing programmer from software engineer. Engineering is building something within schedule and other constraints, that works in a wide variety of conditions, and that we can further build on and rely on. Other programming is to hack together something like Perl. Science is generating new knowledge through experimenting. Engineers and scientists need to know the relevant theory and math. Scientists should add to the body of theory. $\endgroup$ – Jerry101 Mar 6 '14 at 21:10
  • $\begingroup$ All true, but what about wrestling with people who equate "computers" with "proficient in using <insert favorite package here>," and don't fathom there is more here? Or a bit more advanced ones who consider anything "trivial, just write a program"? Extra points for handling people who think the halting problem can be solved as a matter of course... $\endgroup$ – vonbrand Mar 6 '14 at 21:25
  • 4
    $\begingroup$ You could go further; theoretical computer scientist::physicist - can describe the maths that models why the car works, but may not be able to drive. ;) $\endgroup$ – Luke Mathieson Mar 7 '14 at 2:23

Since it is an english major:

Computer literacy is like reading, computer programming like composition, and computer science like linguistics. All 3 are about language, but the skills are not exactly interchangable.


Somebody put it to me this way but I'm afraid I've forgotten who.

Disinfecting your kitchen isn't microbiology; operating your computer isn't computer science.

  • 2
    $\begingroup$ Doesn't go into too much detail about what CS actually is, but good for a quick analogy and induces a little chuckle. $\endgroup$ – Cheezey Mar 7 '14 at 0:05
  • 1
    $\begingroup$ Sounds much like Dijkstra's telescope statement. $\endgroup$ – Raphael Mar 7 '14 at 7:11
  • $\begingroup$ computer science compared to disinfection/microbiology? vaguely works... $\endgroup$ – vzn Mar 8 '14 at 18:04

Computer science is to computers as astronomy is to telescopes.

— Edsgar Dijkstra

I read this in some book but unfortunately I forgot which book.

  • $\begingroup$ en.wikiquote.org/wiki/Computer_science#Disputed - has 3 places it's quoted in ~1993 and disagreements as to whether it was really from Dijkstra $\endgroup$ – WernerCD Mar 7 '14 at 14:55
  • $\begingroup$ Also, "Edsgar" Dijkstra. I think the Nederlanders made the name just to confuse English speakers. $\endgroup$ – Luke Mathieson Mar 8 '14 at 0:07
  • $\begingroup$ @LukeMathieson English speakers? I think anyone will be confused by that name. $\endgroup$ – Kartik Mar 8 '14 at 11:36
  • $\begingroup$ “Edsger”, in fact. $\endgroup$ – James Wood Mar 8 '14 at 16:21
  • $\begingroup$ @LukeMathieson It's not exactly a common name in Dutch either, about 1 in a million have it as first name. But as an English speaker it should've felt natural to you ;) The etymology of the name is the same in English as in Dutch, meaning SwordSpear, eds like in edge->sword and ger like in the uncommon gar (which you obviously know as you made the right spelling change to make it English) meaning spear, or the related gore. $\endgroup$ – Rinze Smits Mar 8 '14 at 17:42

I work with some "real engineers", a lot of them seem to think computer programming and CS are the same thing (apparently they think engineers do really high level math as well, different topic there). I used to be a CAD drafter back in high school so, I tell them I am basically a mechanical engineer, seems to even the playing field . I guess you could tell your English major friend you can read books already so, you might as well have an English major. Or in a less confrontational way let them know that would be the equivalent of what they are saying.

  • $\begingroup$ You say "different topic", but I feel that the two are actually very similar: when an engineer says "high level math", they're almost certainly referring to high level applied math, and what is programming but applied computer science? On the other hand, if these "real engineers" are considering stuff like solving lots of polynomials as "high level math" (without using those concepts that allow efficient solving of such systems of equations, or just plugging them into a program without understanding how it works), I could see where you're coming from. $\endgroup$ – JAB Mar 7 '14 at 17:03
  • $\begingroup$ Yeah I mean the second kind, where using Laplace Transforms and Runge–Kutta is considered doing high level math (even when those topics aren't really considered high level math). Then again I graduated with a degree in applied math so, the standard of what I consider high level math is probably a bit skewed, just thought it was funny anyway. I agree about computer programming being applied computer science, I was just drawing a parallel between what a mechanical engineer may do most of time in a job vs what a software engineer might, i.e. CAD Drafting vs Computer programming. $\endgroup$ – SuperSecret Mar 7 '14 at 22:26

Hmm, here's another metaphor: Google search

  1. Computer Scientist designs the Google PageRank algorithm.
  2. Programmer knows how to take keyword input, access the database and display the results on a webpage.
  3. User knows how to do a Google search.


  • 1
    $\begingroup$ Problem with this being that a lot of people will not understand / be able to distinguish between (1) and (2). $\endgroup$ – Ant P Mar 7 '14 at 20:19

I miss a fourth bullet, "computer engineering".

An engineer knows how things work. A scientist knows why things work. A builder makes things (that sometimes work). A user uses things.

For "thing" read house, computer, car, ... For "builder" substitute suitable name for manual labor professional, e.g. "programmer" when thing = computer, "mason" when thing = house, etc.


I just now found another quote, again by Edsger Dijkstra (from here):

...the harm was done: the topic became known as “computer science”---which, actually, is like referring to surgery as “knife science” --- and it was firmly implanted in people's minds that computing science is about machines and their peripheral equipment.

You can shorten it to

Computer science is like referring to surgery as “knife science”.

But you don't even need to say that. It think it would be enough to say that "CS is a kind of math that has nothing to do with computers".


Computer science is the knowledge of what computers can do so that you can use them.

Computer literacy the knowledge of what you can do with computers so that they can use you.

  • $\begingroup$ The role of downvote is to show that someone is being silly. $\endgroup$ – babou Jun 24 '14 at 15:28

Not the answer you're looking for? Browse other questions tagged or ask your own question.