“A manifesto for teaching computer science in the 21st century”

John Naughton wrote a public set of proposals to Michael Gove, Britain’s MP, Secretary of State for Education, for rebooting its ICT curriculum and published it in The Guardian. It’s a good read.

Even better, check out The Guardian’s profile of 7 teenagers who code.

Related:

Metafilter: Guardian feature on the future of computing education in UK

Charles Miller: “how mind-blowingly awesome that is?”

We’ve come a long way from the 80s and the devices that so many of us started our journey as programmers Charles Miller notes in “Johnny and Jenny Can Code”:

Today, if you’re a teenager with a Mac (insert some other platform into this paragraph if you object to Apple on moral or financial grounds), you can download for free the same tools that professional developers use to write Mac, iPhone and iPad applications. You can read countless free tutorials on how to use them, download reams of sample code for free, and ask for help on forums full of people who may never know you’re a precocious kid.

Al Sweigart: “Nobody Wants to Learn How to Program”

Author of “Invent with Python”, Al Sweigart, makes the case for teaching programming skills while enabling children to accomplish something, like making a game, not as an end in and of itself, in “Nobody Wants to Learn How to Program”. I believe this is mostly true, and the sooner we approach K-12 CS education similarly the better.

“Every day at my job I helped people just barely survive” on Metafilter and Hacker News

codacorolla, a librarian, posted his thoughts to a Metafilter conversation about Califaornia cuts to library funding and spurs a terrific thread at Hacker News.

Read his entire comment and check out the conversation:

“The digital divide isn’t just access, but also ability, and quality of information, and the common dignity of having equity of participation in our increasingly digital culture.”

I’m proud to say there has been a movement in Philadelphia on supporting the mission of libraries, and rethinking how they support their ultimate purpose, and that whenever funding has gotten seriously threatened, people have stood up.

For my part, I’m in talks with my local library to host an after school program teaching MIT’s Scratch. Following that I’d like to initiate a Code and Coffee meetup there and maybe encourage the Blogger Meetups that use to take place to consider local branch libraries as places to meet.

Randall Degges: “How I Learned to Program”

Randall Degges has a great post on how he, and you, can get started programming: “How I Learned to Program”:

Programming is, without a doubt, the most mentally rewarding thing I’ve ever done. Programming taught me that life should be fun, filled with creativity, and lived to the fullest. Programming taught me that anything is possible; I can do anything I want using only my mind.

Programming also taught me that learning is fun. It showed me that the more you know, the more power you have. Programming showed me that a life filled with learning is a life worth living. Programming revealed to me who I am inside, and has continuously helped me work towards my goals.

Is Programming The New High School Diploma?

Daniel Markham makes the case for incorporating programming into what we consider literacy in his post “Programming is the new High School Diploma”.

I’m not sure I’d go as far as he would, but this is not an idea to dismiss out of hand as quite a few folks did in a Metafilter thread I was following that led me to post the following:

Actually there are many, many folks circling in on the idea that programming *is* part of a new definition of literacy.

I believe people should have basic programming skills, in as much as they have basic writing skills.

NOT simply to ‘know how a computer works’. Programing is far more than the act of giving instructions to computers to do things.

The idea isn’t to create more programmers/software engineers/computer scientists, just as teaching writing isn’t done for the sole aim of creating more authors (although it more easily opens the door). Instead, programming should be taught as a means to explore science, health, social studies, history, and math. Just as reading and writing are. Instead of creating a book report, create an interactive story with visualizations. Maybe work with other students in its production.

Even the most rudimentary programming skills enable us to better communicate with one another, to tell stories, to create our own games, and to better participate in the networked world we live in.

New tools like MIT’s Scratch are coming along to make much of this possible. Check it out.

Related:

Bret Victor – Inventing on Principle from CUSEC on Vimeo.

Steve Jobs: “computer science is a liberal art, it’s something everyone should know how to use, at least, and harness in their life”

“Quotes from Steve Jobs Lost Interview”:

“Learning to program teaches you how to think. Computer science is a liberal art.”

NPR.org: “Steve Jobs: ‘Computer Science Is A Liberal Art'”:

“In my perspective … science and computer science is a liberal art, it’s something everyone should know how to use, at least, and harness in their life. It’s not something that should be relegated to 5 percent of the population over in the corner. It’s something that everybody should be exposed to and everyone should have mastery of to some extent, and that’s how we viewed computation and these computation devices”

Related:

“Steve Jobs Lost Interview”

YouTube: WGBH: “Steve Jobs 1990 Lost Interview Part 1”:

Reddit.com: “Want: a non-technical description of CS”

Introducing Programming in College with Scratch

I’ve mentioned Scratch as a way to introduce children to programming, but it works just as well, maybe even more so, as a way of introducing teenagers and adults to programming! Don’t take it from me though, take it from Harvard’s CS50, by David J. Malan (who is fantastic in these lectures btw), which has adopted Scratch (it moves on to C and other languages and tools), to help students make some connections early on.

YouTube: “CS50 / Week 0: Friday”:

Harvard: CS50.tv

Academic Earth: “Introduction to Computer Science I”

Scratch: “Starting with Scratch (literally) in CS 1”

“A guided walk through of CS50”

Some thoughts on Project-Based computer science education

Recently I had the pleasure of assisting someone who lives at Connelly House, managed by Project HOME, in bringing his music to YouTube. He was a 50ish year old man, suffering from disability, with no internet or real computing experience to go by, but he had a project. In the journey to produce that single video for YouTube, he learned some basic concepts around navigating the web, managing an email account, and using search, that empowered him not only to produce a single video, but to go on and produce over 30. Now, one experience does not a conclusive study make, but I came away from the this convinced that it is a technique I’d love to try with K-12 students, building an interactive story or video game, and along the way, having a goal for them to learn the basics of computational thinking, problem solving, and basic programming. The software to do this is free and with cloud-based storage (Dropbox) regular access to a basic machine in the home, the technology you need is already here.

This is not an original idea (I don’t believe in original ideas by the way), and there are many who have brought this up as a successful path to introduce programming in the past. Here go some great links to ponder:

Knowing and Doing: Eugene Wallingford: “Problems are the Thing”

Philip Greenspun: “Improving Undergraduate Computer Science Education”

Edutopia: “Project-Based Learning”

“Invent Your Own Computer Games with Python”