Later when I came to UNC I also made a few friends in the Computer Science Department here and sometimes it was rather awkward hearing them trying to explain what they did for their graduate studies (especially when they had to explain it to Med students). The conversation would usually go something like this:
CS Student: "I'm working on my PhD in Computer Science."
Med Student: "Oh so you what...learn how to fix computers?"
CS: "Uh. No. I do Computer Science."
Med: "So you program computers?"
CS: "No. I...uh...I figure out how to solve problems on computers."
Med: "Like math problems?"
CS: "Uh...not really...more like I work on [technical explanation that causes the Med student's eyes to glaze over]."
Med: "So you figure out how to make pictures on the computer?"
CS: "Something like that."
Med: [Later talking to his wife] Wife: "What does he do?" Med: "Something with computers."
So with problems of communication like this it is no wonder that people really don't understand what computer scientists do. This is usually compounded by the fact that the most esoteric of the CS guys don't even do any of the normal computer stuff like replace hard drives or fix Windows or even know a single programming language (it is surprising how many CS guys there are that don't know a single programming language, more than you would expect). It is precisely because of this misunderstanding that there are apparently high schools that offer "Computer Science" courses which actually turn out to be classes on typing or making web pages in HTML (which actually doesn't require any programing at all). To give you an idea how bad that is, it's like offering a shop class and calling it physics (imagine a class called Physics 110 with the description stating that the class will teach "introductory lathe techniques"). Or for a different perspective, it's like offering a class on "Introduction to Libraries" and calling it a Law Class.
So we return to the question, what is Computer Science? To put it simply, Computer Science is applied logic (and before anyone tries to correct me, calling Computer Science applied logic makes as much sense as calling Physics applied math, which only makes sense if you are a mathematician who has never actually done physics). In a more general sense, Computer Science is the study of how we make computers useful and how to make computers do new stuff (for example, a team at UNC took photos from Flickr and used them to recreate 3D images of famous landmarks. It was a friend of mine who worked on this project.) Other Computer Science projects include things ranging from Google Maps and Google Earth to modern digital readers (2D "bar codes"), and things as strange as trying to figure out how to test all possible permutations of DNA that will result in stable strands (depending on the length there are something like 10^275 possible permutations (that's a 1 with 275 zeros after it, which is more than the total number of stars in the universe). Now imaging trying to run through all possible permutations and find the ones that could possibly be stable. Now try doing that in less time than it takes the universe to experience entropic death i.e. you have to figure out how to do it within your lifetime. That's what computer scientists do.)
So returning to what I started with, asking a computer scientist to fix your computer is kind of like asking your dentist to lay down tile in your house (hey they both use cement right!?!). So the take away lesson here is that Computer Science is just applied logic, just like Physics is applied math (in other words it isn't, but I guess that is a good way to explain it to those who have no clue). Can anyone think of a better way of explaining what Computer Science is, and have the explanation make sense to a Med School Student?