Teaching Computer Science

Thursday, October 28, 2004

I helped a Geology major with a computer science project the other day. It was a very taxing, and yet eye-opening experience. From my prospective computer science is natural. The demand for structure parallels literature and engineering. And yet English majors and Engineering majors, not to mention Geology majors, can't program computers.

First, and foremost, I can assure you of the existence of willing students. Many equate this with Bigfoot and Nessie, but I have seen them. (My friend even has a blurry photo of one.)
The more plausible explanation is the difference in perspective between professors and students. Most professors have ten, or more, years in the field of computer science. They think in code. They dream in code. And, quite logically, they teach in code. There exists almost a mutual dependency between a programming language and the abstract consepts it is used to express. A circular bridge if you will.

A picture is worth a thousand words. So why don't we use more pictures to teach abstract concepts? Formalized software engineering methods are real and use simple symbols such as clouds, squares, circles, diamonds, letters, numbers, and arrows to explain absolutely everything. They could be used to teach the concepts of computer science instead of computer languages. New students would gain a "Big Picture" perspective over what the program is doing compared to a line by line code example. Similar to concept mapping.

How to solve a problem is a problem still waiting to be solved. I asked the girl what would be the general process of averaging up the grades entered by the user. She did not have an answer. Schools are supposed to teach this from day one. In the end, I just did her project for her.

I wonder if this could be applied to other forms of language. I can see it now, "Learn French via UML".