Sunday, December 4, 2011

CS Education Week Is Here!

This week is CS Education Week.  The idea is to celebrate and raise awareness of the impact of computing science and the need for CS education.  You can find out more here.

My first experience with CS education was terrible.  It was Grade 10 and I was enrolled in the pre-IB program (a preparation year for the full IB program which started in Grade 11).  I had chosen CS as an elective as I was generally interested in computers and programming, but had no background or training in either.  The first day the teacher gave out the assignment:

"OK, you guys are going to code a database, and you will be able to sort, save, search, and print records.  Go."

Can you imagine my shock and panic?  I had no idea what to do, but it seemed like all the other students in the class (all  boys, incidentally) did.  They confidently started up their IDEs and began typing away.  There was no textbook and the teacher did not offer any kind of useful help, and there was no internet so I could not search for examples or tutorials there either.

Well, I made it through the year (I had to, since by that time it was too late to transfer and nothing else fit into my schedule) but vowed never to take another CS course again.  I didn't feel like I learned anything except HTML programming and was very annoyed by the experience.  The next year I switched to Physics and managed to avoid CS courses almost entirely in my undergraduate studies.

Luckily I realized later how important CS would be for me and went back to school to study it - but I imagine that there must be many students like me who get turned off early on and never come back.  My experience highlights a few things that are currently missing from CS education in my opinion:
  • Programming is not CS: That is, programming is a tool of CS, but at its roots CS is much more than just writing code.  CS to me is all about modeling solutions to problems using algorithms and data structures.  It's about how to think abstractly, how to analyze problems and their solutions to come up with the most efficient one, and it's how to communicate those solutions to users in a sensible way.  When I took my first course in algorithms and data structures, I fell in love, but that wasn't until long after completing my undergraduate studies.  It seems to me we have the order of things backwards here.
  • CS is everywhere: There are so areas of education that CS could impact.  Bringing up CS when teaching about other topics could help inspire students or at least get them thinking about it more broadly.  Algorithms are an easy example when it comes to mathematics, and pretty natural when you think about the programmable graphing calculators students are encouraged to use these days.  We can start even earlier; even kids in elementary school could be learning how to sort using various algorithms (there is a neat demo using blocks and weights, or discs).  There are all sorts of applications of CS to art (digital painting, photomanipulation, using computers in art installations, graphics displays, etc).  There is a lot of literature around computing these days.  I'm thinking of Cyberpunk books like Neuromancer or Cryptonomicon.  How about artificial intelligence?  When I was a kid one of my favorite discussions on this topic was whether the character Data from "Star Trek: The Next Generation" was alive or not:
  • Teachers need CS, too: In my (admittedly limited) experience, few teacher training programs have little if any focus on CS (or even STEM subjects in general).  How can we attract people with the necessary technical skills to teaching, when the technology sector provides numerous better-paying jobs?  But it's not just technical skills we need in the classroom - we need a special blend of the ability to teach and instruct in addition to the necessary subject knowledge.  At my university they had a course which was in effect 'Math for Teachers'.  Maybe we need something similar for CS.  Greater awareness of CS in general among teachers could help them integrate it into more traditional subjects, especially when CS-specific courses are not available.
Are you supporting CS Education Week in some way?  If so, please sign the pledge and talk about it!  If not, please consider how you can help raise awareness.  I don't think my experience is all that uncommon, and if so we must be losing an awful lot of talent to other fields.  Let's do what we can to help make things better!

No comments: