Code in Place

This week, I finished my final weekly volunteer session with my Code in Place section for 2024. Code in Place is a free online introductory programming course offered by Stanford University, teaching the fundamentals of Python programming based on the university’s flagship CS106 course.

CS106 has been a huge inspiration for me ever since I took the class in fall quarter of freshman year (in 1999!), and especially since I took CS198, the course where they taught us to run our own sections. I don’t think I’m overstating things when I say that CS106 + CS198 have been transformative experiences for me: My times section leading for CS106 were some of my fondest Stanford memories, and the inspiration and energy from then have informed my career for the last 15–20 years as an educator here. I’m not certain we’d have Tinkercademy or Swift Accelerator now if I hadn’t been through those.

Thanks to all my students, mostly from halfway around the world, for showing up every week, putting in the work, and for participating actively in class. This was some of the most fun I’ve had teaching an online class in a while. (Yes, the cat made an appearance during section.)

The Code in Place team remains a huge inspiration — thanks to profs Chris Piech, Mehran Sahami, and the rest of the team at Stanford CS for this opportunity, all the teaching training materials, and for making this available to everyone.

Super cool too that I managed to reconnect with Leoson — an ex-student from over a decade ago when he was in high school — as a section leader whose post I happened to stumble upon in the forums!

Pictured: A screenshot of the section homepage, showing “Next section: 2 days and 2 hours ago” ????)

Screenshot

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.