Monday, 10 December 2012

I Know How Cars Work, and So Do You

A few people have challenged my idea of universal computer science education with the following comment: "People don't need to know how cars work in order to drive them, why do they need to know how their computers work?" I think we actually know a lot about how our cars work, but before I get into that, let me clarify a little about what I mean by computer science. I'm not talking about every child learning the Java programming language in grade nine, or even grade eleven. Learning languages would likely be part of computer science education (although maybe Python would be a better choice than Java), but a focus on specific languages misses the point. Computer science is a discipline, with big ideas and fundamental understandings. Those are what we need to focus on and teach in school, using the tools that make the concepts most accessible (and fun) for our learners.

It's true, you don't need to be a mechanic in order to drive a car. Nonetheless, every elementary school student learns about simple machines. We teach the big ideas of mathematics in school to all students (I hope), but expect only a few grow up to be mathematicians. It speaks to our general illiteracy about computer science that the fundamentals aren't obvious to the general population, the way they are in the other disciplines we teach in school.

As far as driving a car goes, we do know how it works. Beyond knowing about simple machines, we know how a car will behave in a variety of situations. We rarely wish we could throw our cars out the window, the way we do our computers. 

We use our cars as extensions of our bodies. We are physically in synch with our cars when we are driving. We learn, spend months practising, and spend years refining how to coordinate our sensory input, movement, reaction, response and physical coordination with the functioning of our vehicle, to take best advantage of what it can do. It's a lot more than turning the key and pushing the correct buttons. If I drove my car without deeply understanding its behaviour in response to my input, if I was a passive user of my car rather than a driver, I would be a danger to myself and society. 

A computer is an extension of my mind. If I understand some basics about computer science, for example how programs work, how computers handle big data, and how networks interact, I can predict how an application will work, I can choose the right software to make my work efficient and productive, and I will know what to expect from my tools. People often use software in inefficient ways because they don't assume things about its design that would be obvious to programmers, or they don't understand how computers handle data. When there is a problem with computers, the frustration and misunderstanding that ensues is less when users understand a bit about computing. We need to bring our minds into synch with our computers the way our bodies are in synch with our cars. To do that, we need to know how computers work.

Computers, like language, shape and are shaped by what we do with them. Our relationships with computing machinery run deep, but our awareness and understanding of those relationships is often shallow. It's a problem we are just beginning to recognize. The solution is to teach computer science in schools.

Monday, 19 November 2012

Computational Thinking: an essential literacy

Imagine we are living 200 or so years ago, when reading and writing was the privilege of the elite - bureaucrats, business magnates, and priests - and everyone else received oral education and training sufficient to carry on the tasks and culture of their social class. What was the fate of the individuals who didn't learn to read and write? What were the implications for democracy? Last year, visiting Boston for the BLC Conference, I stood looking up at the inscription on the north side of the Boston Public Library, from 1895: "The commonwealth requires the education of the people as the safeguard of order and liberty". I felt a sense of awe. Yes, this is exactly why I do what I do.

We are in need of a similar sentiment, here at the start of digital age, to promote computer science education to ensure full participation in our democracy. The techno-elite know how to manipulate politics, the legal system, and business for their own advantage, and the rest of us (including many politicians and decision-makers) are ignorant of how we are being used to keep the rich and powerful firmly in place. That is, except for forums like Reddit or Slash-Dot, or technology blogs like BoingBoing, ReadWriteWeb, and others, who pride themselves on their understandings of how computing and computer systems work. These groups successfully stopped the US "Stop Online Piracy Act" in early 2012, because they understood the implications of the legislation for the free and open Internet, freedom of speech, and access to information in general.

Back in Boston, the impression I got from wandering through the streets, museums and graveyards was that the original Boston Tea-partiers weren't above taking the law into their own hands, and they are now greatly admired for their passionate commitment to the same ideals that motivate groups like Anonymous today. Personally, I would rather have decisions made by democratically elected politicians and mainstream lobbyists who have an understanding of the Internet equal to Anonymous, than rely on a vigilante group to protect my rights. Anonymous scares me quite a lot - vigilantism in general frighten me - but the thing about Anonymous is they stand up for ideals like free speech, rational thought, access to information and ideal-based decision-making. And they sure know their stuff when it comes to computer science. Right now, I don't know who else we've got with that combination of ideals and understanding.

Yikes.

Monday, 12 November 2012

Computer Science for Everyone

It's true, 21st century learning is about a lot more than digital technology - it's about creativity, collaboration, critical thinking, and communication, among other things (P21 Framework,  What are 21st century skills?Personalized Learning BC). On the other hand, the impact of digital technology on learning and living in the 21st century is pervasive. Digital media are changing how people work, communicate, play, interact, think and learn. So, it's important not to give digital technology secondary status when we talk about 21st century learning.

The more I learn about how integrated the digital layer is becoming in human life, the more I feel connected to and concerned about the learning needs of my students, both now and in their futures. We have an incredible responsibility to reform education and incorporate digital technology with best practices in pedagogy. More than that, we need to help students grow into citizens who understand, on a deep and critical level, just how our computer-dependent world works.

In order to do this, I have come to believe we need to teach computer systems and computer science to all students, just like we teach math, science, language arts and social studies. By this I mean the logic, mathematics, science, and languages that make computers work. Some educators call this "computational thinking." It isn't "IT" education (which teaches students how to operate the technology); computer science is about understanding how computers work, and the thinking that people do to make computers work.

In my experience, those who understand programming and systems are also those who understand the implications of policies and laws affecting digital communication - including copyright, the collection and responsible sharing of data, freedom of access to information, and protection of privacy. I think there are reasons for this correlation, rooted in the kind of thinking taught in computer science. Understanding how information and communication technology actually works might just be vital to understanding how it can be used to either promote or prevent true democracy.

Many other people have come to the same conclusions. Here in North America and in the UK, organizations have been working for some time on defining computer science as a unique core subject area in K-12 (primary and secondary) schools (Computing at Schools UK CurriculumCSTA K-12 Standards). I am throwing my hat into that ring. At this point in my career as an educator, I am making a commitment to promote computer science education in all schools, and help educate teachers so that this is done in the deepest and broadest possible way. There is much work to do, and many questions about how to do it, as we move forward within the context of evolving curriculum in a rapidly changing world.