The day I lost a child on the Tube

From the Teacher Network Blog on The Guardian:

Twenty years ago our blogger lost one of his pupils on the London Underground and didn’t even report the incident to the child’s mother or his headteacher… fast forward to the present day and it’s a very different story

A little old in Internet-time, but I just got around to reading it, and it’s a fun read with a very insightful conclusion that’s not “OMG look at kids and parents nowadays ughhhh”.

When I first read the title, though, I thought it was “the day I lost a child on YouTube”. THE HORROR

An argument for teaching Computer Science over basic Math

An interesting argument: that calculating devices are now ubiquitous, and math should focus on computational problem-solving instead of drilling and memorisation. An example the author cites:

Computer languages allow students to transform ideas into action. Here is a simple rule that a math teacher might describe to her students:
If the number is greater than 9, carry the 10’s place; otherwise add the number to the bottom row.

The solution for this can be expressed as an if/else statement:

if number > 9:
carry += number / 10
else:
bottom += number

There are, as expected, plenty of opposing views in the comments, but it’s good food for thought. Also noteworthy: the comments aren’t completely stupid. Not-completely-stupid comments! On the Internet! WHAT IS THIS WORLD WE’RE LIVING IN

Nobody Wants to Learn How to Program

From the blog behind the “Invent Your Own Computer Games with Python” book:

“[For] the casually interested or schoolchildren with several activities competing for their attention, programming concepts like variables and loops and data types aren’t interesting in themselves. They don’t want to learn how to program just for the sake of programming. They don’t want to learn about algorithm complexity or implicit casting. They want to make Super Mario or Twitter or Angry Birds.”

We’ve actually found that our students are usually quite happy to spend lots of time making silly console-output programs, like printing a pyramid of asterisks. However, the intro programming courses we’ve conducted have been for a fairly self-selected bunch.

The book is available [online](http://inventwithpython.com/chapters/) for free, and it certainly looks like a great instructional resource.

C’est la Z: a computer science teacher’s blog

Mike Zamansky is a very experienced and highly-regarded computer science teacher in New York, and founder (I think?) of the upcoming New York City Academy of Software Engineering (here’s [Joel Spolsky](http://www.joelonsoftware.com/items/2012/01/13.html) on the topic). Imagine, then, my delight at discovering that he’d recently started blogging again.

I love his [latest post](http://cestlaz.blogspot.com/2011/12/my-favorite-student.html) on teaching:

I’ve been thinking a lot about my career as a teacher recently. I decided to leave industry over twenty years ago. As teachers, particularly teachers with technical backgrounds we leave a financially lucrative field to enter one with very few financial rewards. It’s also a field very much under attack, particularly in recent years. […]

So, what do I get out of the deal? Well, when I hear form my graduates, I know that I’ve made a difference. Also, the friendships I’ve developed over the years.

His other pieces are great, too — [thoughts](http://cestlaz.blogspot.com/2012/01/pretty-sneaky-sis.html) (with starter code!) on a software engineering class project that teaches design through implementation, some [reflections](http://cestlaz.blogspot.com/2011/12/ml-and-ai-courses-how-they-were-taught.html) and [suggestions](http://cestlaz.blogspot.com/2011/12/stanford-classes-what-id-do-next.html) on the Stanford profs’ CS classes, and some details of a [lesson module](http://cestlaz.blogspot.com/2011/12/wheres-waldo-text-style.html) he developed to teach 2-D arrays (again, with code). Fantastic.

CodeRunner

CodeRunner is a Mac app that lets you:

Edit and run code in AppleScript, C, C++, Java, JavaScript (Node.js), Objective-C, Perl, PHP, Python, Ruby, Shell or any other language you might have installed on your system.

This could be really useful for programming teachers — one of the big headaches we always have in the first lesson was making sure things were set up properly. There was a time we tried teaching C++, and found out that the computers’ permission settings disallowed running of _any_ shell programs, so we sang songs and dreamed of correcting missing semi-colons. Ah, fun times.

Codecademy

Codecademy teaches JavaScript programming through the browser: follow instructions, type in code, move on to the next step. This is similar to the (slightly more amusing) [Rails for Zombies](http://railsforzombies.com/).

Browser-based code classes look promising for classroom teachers: there’s no need to install compilers or even text editors, making this environment much easier to set up in a lab. Students can also continue their work easily at home, with (some level of) instant feedback from the built-in help system.

The associated [Hacker News post](http://news.ycombinator.com/item?id=2901156) has some interesting suggestions, and the comments from non-programmers about the course’s difficulty can be quite enlightening to anyone trying to teach a programming course.

Learning programming: the deep end of the pool

Computer Science Prof Zack Kurmas writes about the challenge of teaching introductory programming:

> I believe that expecting a student to learn to program well enough to study Computer Science in a single 15-week course is almost as absurd as expecting a student with no instrumental musical experience to be ready to join the university orchestra after 15 weeks. There are, of course, musical prodigies that can handle this challenge. Likewise, there are many “natural born programmers” who learn how to program with very little apparent effort.

Kurmas makes some very good points: that almost every other college programme has some basis of preparation in a standard high school curriculum, hence creating a much steeper learning curve for CS; that CS education could be better modelled after a foreign language learning framework; and finally, that he might just not be very well-suited to teaching intro CS, as a “natural-born” programmer.

This post was linked from Steve Losh’s [response](http://stevelosh.com/blog/2011/05/on-learning-and-teaching/), which is also a good read for CS students and educators. Losh provides an interesting analogy about the difficulty of learning programming and dancing:

> The first plateau of programming is the syntax and the first plateau of dancing is footwork. The bad part about this is that dancing when you only know footwork or programming when you only know syntax isn’t much fun. You can’t do all of the most interesting things that make these skills so rewarding.

Escalating enrolment in Computer Science

Prof Eric Roberts on how the intro CS courses at Stanford have surpassed even pre-tech bubble numbers. He notes that the students coming in seem different this time round:

> The students who are now inflating the ranks of CS106A are, it seems, deciding to take a computer science course as a way of bolstering their credentials before they emerge into a weak economy. Most have majors in other areas but recognize, probably correctly, that having programming skills will likely increase their chances of gaining employment in their own field. A surprising number of those students, however, once they get into our introductory courses fall completely in love with the material and continue on to double the size of the downstream courses in the curriculum.

I didn’t take many CS courses back in the day, but I have great memories of being part of the CS106 course assistant team. After having planned and taught my own intro programming curricula, I’m now even more impressed by how effective CS106 was, with its engaging assignments, well-planned structure and overall strong pedagogy. I’m glad more students are giving this course, and computer science, a shot.

The courses are available [online](http://see.stanford.edu/see/courses.aspx) for free, if anyone’s curious.