This week an opinion piece in Time came out with the provocative title Can We Fix Computer Science Education in America? The article does a great job of summarizing the problems with K-12 computer science education, mentioning a few of the approaches people are taking to address the issues. It’s well worth reading. It also took me back to the first keynote of the 2012 ITiCSE conference.
The 2012 ITiCSE conference was part of the official Centenary events of the Alan Turing Year, and all of the keynote speakers were chosen with Turing in mind. The first keynote, given by Michael Rabin, was especially relevant to computing education. He began by decrying the approach of teaching a programming language as a student’s first experience in computer science. He then set out to list what he feels every high school student should learn about computing to become an informed citizen. It was an impressive set of topics and included:
- Turing machines
- Physical addresses (circuits, 64-bit numbers, the structure of a processor)
- Stored programs
- Data structures and algorithms (lists, trees, tables, stacks, sorting, searching, solving linear equations, cost/complexity of algorithms)
- World-wide connectivity (structure, packet switching, algorithms and protocols)
- Programming languages (high-level languages, compilation, assembly language, machine language)
- Economic, societal, and scientific impact of computing (workplace and tools, global outsourcing, e-mail, e-books, newspapers, privacy, search engines, social networks, applications to science)
I’ve taught introductory computing courses at the university level for over 20 years, and this struck me as an ambitious set of things to try to teach high school students. I often have difficulty getting undergraduate computer science majors to understand them all! But Rabin claimed that he had success in doing just this and challenged everyone there to not pull people down but instead pull them up.
In the question and answer session afterward it was clear that people present are actively working to implement at least part of what Rabin suggests. In fact, the June 2012 issue of ACM Inroads focuses on the Computer Science Principles and the CS 10K Initiative and is also a must-read for anyone interested in this topic. There are many hard at work on reforming computing education in the United States. But Rabin’s list was the most ambitious I’ve seen, particularly with its emphasis on theoretical computer science.
Recently Alan Kay gave a presentation at DePaul University in which he said that an interesting person is one who makes you think, regardless of whether you agree with him or not. I think the same measure can be applied to talks as well as people, and Rabin’s keynote was most certainly interesting. I look forward to seeing how K-12 computer science education develops and how much of Rabin’s vision is a part of the end result.
Thanks to Barbara Boucher Owens for her excellent notes from the Rabin keynote, without which I could not have written this post!