Posts tagged ‘programming for everyone’

Dijkstra’s Truths about Computing Education Aren’t: The many kinds of programming

ACM Turing Award laureate Edsger Dijkstra had several popular pieces about computer science education. I did my Blog@CACM post on one of these (see post here), “On the cruelty of really teaching computer science,” which may be the most-cited computing education paper ever. Modern learning sciences and computing education research have shown him to be mostly wrong. Dijkstra encouraged us to avoid metaphor in learning the “radical novelty” of computing, which we now know is likely impossible. Instead, the study of metaphor in computing education gives us new insights into how we learn and teach about programming. So far, I’m not aware of any evidence of anyone teaching or learning CS without metaphor.

After my Blog@CACM post, I learned on Twitter about Briana Bettin’s dissertation about metaphors in CS (see link here). Briana considers the potential damage from Dijkstra’s essay on computing education. How many CS teachers think that analogy and metaphors are bad, citing Dijkstra, when the reality is that they are critical?

The second most popular of his computing education essays is “How do we tell truths that might hurt?” (See link here). This essay is known for zingers like:

It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.

He goes on to critique those who use social science methods and anthropomorphic terms when describing computing. He’s wrong about those, too (as I described in the Blog@CACM post), but I’ll just take up the Basic comment here.

Today, we can consider Dijkstra’s comments in light of research on brain plasticity (see example article here). It wasn’t until 2002 that we had evidence of how even adult brains can grow and reorganize their neural networks. We can always learn and regenerate, even as adults. Changing minds is always hard. The way to achieve change is through motivating change — being able to show that change is in the person’s best interest (see example here). Maybe people stick with Basic (or for me, with HyperTalk and Smalltalk) because the options aren’t obviously better enough to overcome inertia. The onus isn’t on the adult learner to change. It’s on the teacher to motivate change.

There are computer scientists, like Dijkstra, who believe that innate differences separate those who can program from those who can not, a difference that is sometimes called the “Geek Gene.” An interview with Donald Knuth (another Turing Award laureate) last year quoted him saying that only one person in 50 will “groove with programming” (see interview here). We have a lot of evidence that there is no Geek Gene (see this blog post here), i.e., we have note yet identified innate differences that prevent someone from learning to program. Good teaching overcomes many innate differences (see blog post here making this argument).

Of course, there are innate differences between people, but that fact doesn’t have to limit who can program. Computers are the most flexible medium that humans have ever created. To argue that only a small percentage of people can “groove with programming” or that learning a specific programming language “mentally mutilates” is to define programming in a very narrow way. There are lots of activities that are programming. Remember that most Scratch programs have only Forever loops (if any loops at all), and Bootstrap:Algebra doesn’t have students write structures to control repetition. Students are still programming in Scratch and Bootstrap:Algebra. Maybe only one in 50 will be able to read and understand all of Knuth’s The Art of Computer Programming (I’m not one of those), and maybe people who programmed in Basic are unlikely to delve into Dijkstra’s ideas about concurrent and distributed programming (that’s me again). Let’s accept a wide range of abilities and interests (and endpoints) without denigrating those who will learn and work differently.

December 7, 2020 at 7:00 am 6 comments

Developer Bootcamps and Computing Education: Tech Done Right Podcast

I was so excited to be invited to do this podcast with Noel Rappin (my first PhD student) and Jeff Casimir who runs the Turing Academy bootcamp. I learned a lot about bootcamps from Jeff, whom I was pleased to learn is a data geek and measures things pretty carefully.  Two of my favorite insights:

  • Female students are more likely to graduate from the bootcamp. They are more likely than male graduates to leave before six months on the job.
  • Students who skip college and go straight to bootcamp (as Peter Thiel encourages students to do) have a harder time graduating and getting a job. That latter part might be ageism, bias against younger job-seekers.

I recommend the podcast — we had a fun discussion.

How do people learn computing? Who learns best from traditional computer science education and who from bootcamps? How can we teach people who are not developers but who need to learn some programming to do their jobs? Jeff Casimir, the founder of Turing academy, and Georgia Tech’s Mark Guzdial, one of the founders of the International Computing Education Research conference, join Noel to answer these questions and also explain why Excel is both the best and the worst thing in the world.

Source: Tech Done Right Episode 20: Developer Bootcamps and Computing Education with Jeff Casimir and Mark Guzdia

September 29, 2017 at 7:00 am 3 comments

Open Source Edition of LiveCode (Modern HyperCard)

HyperCard is likely still the world’s most successful end-user programming environment.  Having an open source version that runs on all modern OS and mobile platforms would be fabulous.  I’m backing.

LiveCode lets you create an app for your smartphone, tablet, desktop computer or server, whether you are a programmer or not. We are excited to bring you this Kickstarter project to create a brand new edition of our award-winning software creation platform.

LiveCode has been available as a proprietary platform for over a decade. Now with your support we can make it open and available to everyone. With your help, we will re-engineer the platform to make it suitable for open source development with a wide variety of contributors.

Support our campaign and help to change coding forever.

via Open Source Edition of LiveCode by RunRev Ltd — Kickstarter.

February 5, 2013 at 1:27 am Leave a comment


Enter your email address to follow this blog and receive notifications of new posts by email.

Join 9,005 other followers

Feeds

Recent Posts

Blog Stats

  • 1,878,939 hits
October 2021
M T W T F S S
 123
45678910
11121314151617
18192021222324
25262728293031

CS Teaching Tips