Wednesday, May 07, 2014

The Case For Lifelong CS Education

I stumbled upon a really good talk by Simon Peyton Jones from Microsoft Research about teaching computer science early on today. In it he talks about some things I have been thinking a lot about myself lately. That being computer science education throughout the school years. Not just a single or pair of courses late in high school but a series of including CS starting in the primary grades. Even if you don't read the rest of my post I recommend the video.

I’m teaching high school computer science and for most of my freshmen this is their first experience with computer science. Oh sure they have been using computers for many years but that is hardly the same thing. They have been exposed at some level to just about every other science and math subject for years. We don’t wait until high school to teach addition for example. That would be silly. Is it less silly to wait until high school to start computing science training? I think not.

By high school students are using math to help them learn other subjects like physics and even social studies. Can you talk about financial systems without an understanding of math? Not hardly! And they have been using reading and writing for over a decade as tools to learning other things. But not computing and that is a shame. I feel like I get my students just to the point of being able to do interesting things and then we are out of time. Frustrating!

I had my Explorations in Computer Science students write a temperature conversion program recently. It was a great way to talk about the difference between concepts like integers and real numbers, order of operations, and even number bases (1/10 is an infinitely repeating fraction in Binary). This is all material that they learned (sort of) in middle school if not earlier. Why could they not learn it with computing? Personally my understanding of those important concepts was enhanced when done with programming. I suspect it would be for many others as well. That is the tip of the iceberg for me. I really started to understand algebra when I got into programming. Programming allowed me to do so much more is less time that it became a wonderful tool for me.

What I would like to see my high school students is using computing  and programming as a tool for more than just learning how to program. I want to see them getting creative. I want them to solve problems but not my problems. I want them to solve their own problems. In my university statistics courses I kept getting bogged down in the arithmetic so I wrote programs to do the math for me. As my professor pointed out to my peers who complained about that I had to really understand the formulas and their application to write the programs.

I’ve had students go on to write programs to help them with their other school work. It is a wonderful thing to see. I would like to see it become the norm rather than the exception. For that to happen we have to start earlier. And it has to be a regular and, dare I say it, required, part of the curriculum.

People say that making computer science required will make it boring or that it will cause students to be turned off from it. And that is always possible. A poor teacher can make the most interesting topic dull, boring, and horrible. That is a very pessimistic and self-defeating attitude though. The other problem is a serious shortage of people qualified to teach CS. What that means is we need to train and prepare more teachers not that we should just give up on the idea of doing what needs to be done.


Garth said...

There is one minor difficulty with teaching CS at the lower levels – finding teachers at the lower levels that know CS. I am finding that except for a few very outstanding self-taught exceptions elementary teachers know absolutely nothing about computers or CS. Elementary education teacher programs do no CS or computer education (other than MS Office). We have a student teacher in science this semester. He has had no CS training except Excel, which I do not count as CS training. This seems to be the norm. Using programming as a tool in other classes presents the same difficulty – teachers’ lack of knowledge in programming.

Most K-12 classrooms seem to be little different from the way they were 40 years ago. Math is worse. We use word processors instead of type-writers and electronic spreadsheets are used for traditional problems like having the kids figure living budgets, but that is about it. This is a bit of a gross simplification but in general I think it is true. I have not the slightest doubt that if computers were removed from the classrooms of America there would be very little adjustment required by the teachers and in many cases there would be sighs of relief. Lack of initial training and professional development for teachers in the field of CS is going to keep the US stunted in CS for a long time. And, just to rabble rouse, the age of the instructors at state schools of education will ensure this trend. Rant, rant…..

Alfred Thompson said...

Clearly, to me anyway, the states need to add a CS requirement to K-8 certification requirements. If the states require it the universities will start to offer it to meet demand.

Garth said...

I agree. Then there is the issue of finding people to teach that requirement. Kind of a Catch-22 thing going here.