Archive

Author Archive

Watch Me: Help Wanted

February 16th, 2012

[reposted from the Software Carpentry blog]

Back in 2007, Jon Udell observed that screencasts facilitate accidental knowledge transfer in a way that more traditional media don’t. As I said yesterday, we’d therefore like to start recording short screencasts of programmers thinking aloud as they solve small problems using their preferred tools. The aim is to show learners how to program—what order to write things in, how to debug, when and how much to test, and so on. Everything will be covered by the same Creative Commons license as our other material, and made freely available for remixing and other use.

If you’d like to help, please:

  1. Volunteer to be recorded by mailing us. We’ll help you install a screen recorder (if you don’t have one already—you might be surprised to find that you do), give you a small problem, and edit the video you produce so that you don’t have to.
  2. Volunteer to edit video for us, so that we can put our energy into organizing people :-) .
  3. Volunteer to work the floor at PyCon in March. We can’t attend (workshops to run, etc.), but it would be great if we could get a dozen or more “here’s how I do it” recordings done during the conference.

Remember, as an open source project, Software Carpentry depends on your help to survive and thrive. If you have wanted to help, but have worried that creating and recording lectures would be too much work, this is a way for you to help that will take half an hour or less. We look forward to hearing from you.

Software Carpentry, Teaching

I Have Seen the Future…

February 15th, 2012

…and its name is Bret Victor. (Jump ahead to 7:00 and watch for a couple of minutes if you need to be persuaded…)

Extensible Programming

Slide Drive

February 15th, 2012

I just posted a note on the Software Carpentry site about Slide Drive, a new HTML5+audio slideshow tool from David Seifreid. Please check it out and let us know what you think.

Software Carpentry, Teaching

He Would Have Appreciated the Irony

February 13th, 2012

Software Carpentry in Ninety-Five Seconds

February 3rd, 2012

I posted a ninety-five second explanation of Software Carpentry on YouTube today. Feedback would be very welcome.

Software Carpentry

Bullshit, Appropriation, and Technology in Education

February 2nd, 2012

A few weeks ago, a former student who’s now a friend asked me to teach him how to bullshit. At first I couldn’t decide whether I was flattered or offended, but then I decided I was more curious than anything. What did he mean by that? And why did he think I’d be a good teacher?

After a bit of back and forth, we agreed that he didn’t mean outright lying, or the indifference to truth that Frankfurter talks about in his book on the subject. What he wanted to learn was how to present things in a way that made the speaker’s preferred outcome seem like the only sensible or desirable choice—how to (in the words of one of my teachers) sacrifice truth for clarity, or (in the words of an ex-girlfriend) how to clarify things for people.

I’m still not sure why he thought I’d be able to teach this, but his request sent me wandering down memory lane. Back in 1989, when I was doing some work for a sociologist in Edinburgh, I occasionally sat in on his group’s seminars. At one, an American researcher talked about her studies of the impact of networked computers on workplace dynamics. (Remember, this was before the Internet: most PCs were still only connected to a printer, not to each other, and even on Unix systems, NFS needed a lot of love and care.) She claimed that networking was democratizing the workplace by allowing people to share information more freely.

She made a plausible case, but then one of the grad students challenged her with a thought experiment. Suppose we’d invented networked computers first, and that mainframes had only come later. Wouldn’t she be arguing that they were a democratizing force—that giving everyone access to the totality of the group’s computing resources was more empowering than allowing everyone a small, fixed fraction of those resources? In fact (he went on, warming to his theme), wouldn’t she be reading meaning into the term “time sharing” in the same way that she had actually emphasized “networking”?

This was where I first heard the term “appropriation” applied to explanations. Today, I see it happening a lot in and around education. Almost everyone claims that new technology will fundamentally disrupt the way we teach. As Audrey Watters pointed out in a recent podcast, though, the big education companies have an incentive to make sure that “disruption” isn’t, and the budgets and connections to neuter any change that might threaten their business models. Simlarly, as much as we might want kids to grow up to be better citizens, teaching them to program won’t automatically make this happen, any more than teaching them addition will automatically make them better at balancing budgets.

In his 2008 essay, “The Winning Ways of a Losing Strategy: Educationalizing Social Problems in the United States“, David Labaree showed how people have increasingly turned to schools to solve social problems, even though schools have repeatedly proven that they are ineffective at doing so. I think it’s equally true that reformers all too often ask technology to solve educational problems, even though it has shown time and time again that it can’t. (I speak as someone who lived through the VCR-in-the-classroom revolution, the PC-in-the-classroom revolution, and the first-generation-Internet revolution. Meet the new class, same as the old class…) Yes, new technologies might enable change, but they will not make that change happen. Only we can do that.

Uncategorized

On Algorithmic Thinking

February 1st, 2012

“You keep using that word. I do not think it means what you think it means.”
– Inigo Montoya

I recently sat in on an online discussion with Cathy Davidson, whose work focuses on technology, collaboration, cognition, and learning. She recently wrote a blog post titled “Why We Need a 4th R: Reading, wRiting, aRithmetic, algoRithms“, in which she says:

…our world changed in April 1993 when the Mosaic 1.0 browser was released to the general public. We need new forms of education. We need to reform our learning institutions, concepts, and modes of assessment for our age… I have a basic literacy to add to the last century’s 3 R’s of “reading, ‘riting, ‘rithmetic.” Let’s add a 4th R: “algoRithm.”

I’m all in favor of that. But I’m not sure that Davidson and I mean the same thing when we say “algorithm”—in fact, I’m pretty sure we don’t. Based on the slide that appears on this page, and on comments she made in that online discussion, her definition includes:

  1. procedural thinking
  2. webcraft/webmaking
  3. forking
  4. participation
  5. diversity
  6. future partisans for the open web

I’d definitely include the first; I’d say it was a prerequisite for the second, and plays into the third, but the rest feel like aspirational goals for society rather than anything algorithmic. Yes, the interweb is a powerful tool for implementing those goals (or their opposites), but “diversity” and “algorithm” have no more to do with each other than “justice” and “double-entry bookkeeping”.

What I mean by “algorithmic thinking” is, I think, closer to what Michelle Levesque is describing in this blog post (available here as a handy visual aid, complete with drop shadows). It’s what Jeannette Wing meant in her 2006 article that introduced the term “computational thinking”. Everyone immediately started using it to mean whatever they already wanted to push—office suite skills, parallel computing, how to search and filter—but Wing herself later defined it as:

Computational thinking is the thought processes involved in formulating problems and their solutions so that the solutions are represented in a form that can effectively be carried out by an information-processing agent.

She went on to say:

Computational thinking enables you to bend computation to your needs…to:

  • understand which aspects of a problem are amenable to computation,
  • evaluate the match between computational tools and techniques and a problem,
  • understand the limitations and power of computational tools and techniques,
  • apply or adapt a computational tool or technique to a new use,
  • recognize an opportunity to use computation in a new way, and
  • apply computational strategies such divide and conquer in any domain.

That’s a much narrower definition, but I think it’s also more useful. CollaboRation or paRticipation would make a great “zero’th R”, but they’re very opposite of “algorithmic”. They are, fundamentally, about the exercise of judgment in situations where right answers can’t be calculated by following a formula—in short, about the things that still distinguish us from machines.

Uncategorized

Old Soup in New Bowls

February 1st, 2012
Comments Off

In a recent podcast, the always-interesting Audrey Watters talks about the tension between innovators who want to use technology to disrupt existing models of education built around top-down sales to school districts, rather than direct delivery to learners, and the big “educational” companies’ desire to subsume those technologies into their existing (very profitable) business models. Start in around 20:25 — there’s a lot to think about…

Teaching

I Hope Someone Has Already Built This

January 31st, 2012

Over the next few months, I want to experiment with at least four new learning formats for Software Carpentry. The baseline is what we have now: each topic is covered in 6-10 lessons, each of which has its own page. Most of those pages have a voice-over-slideshow video lasting 5 to 10 minutes and the slides themselves as PNG images in parallel with a transcript of the voiceover; the exceptions are the lessons on spreadsheets, databases, and debugging, which are actual screencasts of the appropriate tools in action. Only a handful of topics have exercises, and the only way to give feedback is to comment on the page.

Here’s what I want instead:

Superficially, it isn’t much different from what we have The “Slideshow” area shows the current diagram, code snippet, or whatever. The “Continuous Controls” (the usual forward, pause, and rewind) control the synchronized slideshow and audio track, while the “Stepping Controls” allow users to move forward and back a slide at a time, and the “Pointmarks” show where slide transitions take place. Finally, the “Transcript” is, as its name suggests, a transcript of the audio that accompanies the current slide.

The big difference doesn’t show up in this diagram. In this version, the slides are not PNG images, an MP4 video, or any other paint-by-pixel format. Instead, they are SVGs stored right in the body of the web page, so that their content is visible to search engines, and can be copied and pasted in sensible ways. This means that if the current “slide” is showing some code, the user can pause the show, select that text, and paste it into her own editor. She can do similar things with the diagrams, i.e., select a cloud, shift-select the caption, and paste them both into her favorite image tool, rather than having to select a rectangular block of anti-aliased pixels that happen to look like lines and letters to a human eye.

I haven’t built this yet, but I think it should be fairly straightforward: each “slide” is a div with a unique ID containing an image and a block of text. The audio is linked from the page; a data-* attribute in each slide div has its start time, and a bit of Javascript shows the right slide at the right time. Marking start times will be a bit tedious—I think it’ll have to be done by hand, at least for now—but it should be easy to allow people to add and view comments and questions in place, instead of tacking them all onto the bottom of the page. And displaying an all-in-one view of the slides with appropriate bits of transcript for printing (or for people who just want to browse) will be easy.

This is just a start, of course. I haven’t said anything about (self-)assessment, which is crucial to real learning, or about accessibility (although I think that having all the code and captions in the page as first-class text will help a lot). I also haven’t thought yet about whether I can build this in just one week, which is about as much time as I have, because there’s one question I should ask first:

Has someone built this already?

If so, I’d be very grateful for a pointer.

Software Carpentry, Teaching

Girls in a Tech World

January 29th, 2012
Comments Off