Friday, June 09, 2017

What is the purpose of a computer science education?

One of my former students posed that question. He then asked if it were:

  • Building computer scientists
  • Building software engineers
  • Building citizens

Now context is important in this question. At the university level, many schools see the first item as their main priority. Some see the second a a priority but then they may also see software engineering and computer science as very different majors. Where does the third item – building citizens – fit? Recent events (think Volkswagen diesel issues and hacking and more) suggest that building good citizens should have some thing of a higher priority.

At the high school level , where I teach, the questions are different still. We are not, for the most part, trying to turn out job ready CS students. Oh sure, many of my students have gotten summer internships and part time jobs based on what they have learned in my classes. But I’m not trying to make everyone a professional developer. Nor am I expecting the end result of my course to be a serious (for example published) computer scientist. No, high school is more about preparing students to take their place in the world as informed and (hopefully) ethical citizens. I teach in a Catholic school so we are allowed to emphasize values pretty strongly. In fat that is part of our mission.

I see the purpose of teaching computer science in high school as about several things. Not about making professional developers but giving students the tools to understand computers.What can computers do? What can they not (yet?) do? And how do these things impact the world they live in?

I see my role as building enthusiasm for the subject. (See What CS Should a Student Know Before High School) Not every student will major in CS in college nor should they all. But if I can encourage a few smart kids to do so that is great. At least I don’t want to kill enthusiasm that students might have.

I really want to instill some ideas about ethical practice. High school should be something what about citizenship. That  is where I want students to start thinking about the consequences of computer science and what it enables. They really have to understand CS to understand what is happening though. They need a vocabulary and some understanding of basic concepts. They need to be able to participate in conversations intelligently and with some knowledge. And they have to learn how to learn more.

High school computer science is a beginning and not an end in itself. A high school diploma is not a terminal degree. If students are a little more prepared for a world where computers are important we have been successful.  


John Dougherty said...

This reminds me of a conversation with Charles Keleman about CS as a great liberal arts program, preparing "Good citizens." (My quotes) Nicely done.

Michael Rosario said...

This is such an insightful post. I really appreciate the idea of teaching citizenship and values to students.

Mike Zamansky said...

I've been working on and off on a post somewhat related to this -- maybe this post will spur me to finish it.

I always describe my job as:
1. teach the kids to think
2. teach them to problem solve (in new ways)
3. teach them to learn on their own
4. show them some neat sh*t to accomplish 1-3 with my neat sh*t being computer science.

The ethics piece is important but also pretty complex -- whose ethics? Where's the line between teaching and indoctrinating. Where's the line between encouraging thought, sympathy and empathy, discussion and debate and pushing our own views on the students?

And of course, our very behavior can have a huge effect on the kids as they pick up what we model.

Garth said...

Considering the background and training of most high school CS teachers most of us are only qualified to introduce CS. We can teach thinking, problem solving and how that relates to programming. Most of us have limited expertise in actual coding so training for industry is out.