30

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.

Raphael
  • 73,212
  • 30
  • 182
  • 400
JackOfAll
  • 419
  • 4
  • 6

9 Answers9

29

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).

Jerry101
  • 496
  • 3
  • 10
25

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.

meriton
  • 529
  • 3
  • 7
11

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.

David Richerby
  • 82,470
  • 26
  • 145
  • 239
8

Computer science is to computers as astronomy is to telescopes.

— Edsgar Dijkstra

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

Kartik
  • 181
  • 1
  • 5
2

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.

1

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.

Yea!!

JackOfAll
  • 419
  • 4
  • 6
1

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.

0

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".

Kartik
  • 181
  • 1
  • 5
0

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.

babou
  • 19,645
  • 43
  • 77