Beyond Teaching Computer Science
One of my students had a problem with a computer program he was writing. It wasn’t an assigned project; he was writing a program to handle the calculations for chemistry lab data entry. Obviously he could have been doing this using a calculator for a single set of data points. For more than that, the operation would become tedious at best. One of the things we stress in computer science classes is reuse of code. The student made the natural and appropriate jump to the idea that a computer program written once would let him evaluate many data sets much more quickly than he could with a calculator. This is exactly the sort of thing I want to see from my students.
People are constantly telling me that not everyone needs to be a computer programmer, so teaching computer science is fine as an elective. Somehow, they never say that we shouldn’t teach English, because everyone won’t be a novelist. The latter is obviously absurd because almost everyone understands that being able to write well is a useful life skill. What few seem to realize is that we are rapidly reaching a point where being able to program a computer is going just as generally useful in many fields.
Like my student in a chemistry class, people in many fields are finding that knowing how to write a little bit of code to solve a specific problem is a useful skill. Even 40 years ago when I was a college undergraduate, mathematics majors were already being encouraged, if not required, to learn some programming. I tutored my math-major brother in FORTRAN, and in return, he helped me with Linear Algebra. Today, this sort of thing is growing to the point where students in many STEM fields are encouraged to minor in computer science, or at least to take some programming so they can write their own code now and again.
No, we don’t expect our chemists to write fully professional code, nor do we expect our business majors to create their own computerized accounts receivable systems, but a chemist who can write her/his own small piece of code to test algorithms on data is going to be well ahead of the game. A businessperson who can use programming concepts (if statements, conditional formatting, etc.) is going to be able to create data analysis on her/his own without waiting for budget-busting IT departments discovering his task in their overloaded work queue.
There is more to this than just writing some code to save time, though. The first book I ever read where computers played a part was a novel, where a young boy accessed his father’s computer and programmed it to do his math homework. His peers complained to the teacher. The teacher replied that the student had to have a far greater understanding of the concepts to write the program than he would have to just do it the old fashioned way with pencil and paper. Years later my statistics professor said pretty much the same thing to students who “reported” me for using the school’s computer to do my statistics homework.
They say that you learn a lot by teaching something to others. Well, a computer is remarkably stupid, so students who learn to “teach” a bit of work to a computer learn a lot indeed. If we teach students how to program when they are young and then ask them to use the computer, by teaching it to do things, I see a very real possibility that they will learn those things a lot better.
We need to go beyond teaching computer science just as a goal of its own, and start thinking of students using programming to learn other things, such as chemistry, physics, math, business, and more. Once students begin, there is no telling where they will go with it.
Alfred Thompson (@Alfredtwo on Twitter) is currently a high school computer science teacher. He has also been a professional software developer, a textbook author, a developer evangelist with Microsoft, a school technology coordinator, a school board member, and more. These days, he sees himself as something of a computer science education activist working to help reach more young people with the news that they can make the world a better place through software. Read more by Alfred Thompson at his Computer Science Teacher blog.