Explaining the difference between computer science and computer literacy 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.
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).