Really enjoyed this talk on how we're bad at teaching programming. Maybe exploration isn't the answer.

@GeoffWozniak Except I know from actual work, that self-taught programmers, artists, musicians, writers, & other creatives are massively better than school-taught ones, who are usually comically bad until they have equal years of non-school experience. I wouldn't let a college grad code fizzbuzz let alone anything worth money.

@mdhughes The point in that talk, as I understood it, was not that exploration and being self-taught is wrong, it's that it's a shitty way to start.

As for my experience, being self-taught doesn't correlate with anything. Some are good, some are garbage. Some self-taught programmers have terrible habits. (I certainly had to break some of mine to get better.)

@GeoffWozniak I played it thru fast, and she's proposing silly things like reading code aloud; hard in Python in Dutch, but impossible with most programming languages in any language. Read C or Scheme aloud, it sounds like a Victor Borge skit.

Giving "non-expert" goals to a class assumes they learn programming at the same rate or way, which is so false; I took an "advanced" HS prog class and me & a couple others just made games while 90% were stuck on basic assignment & logic.

@GeoffWozniak I'm guilty of a lot of this, to the point that some of her talk fit into past Teaching Statements of mine (like what Piaget said). I think most of people who are in teaching long enough eventually start noticing that giving explanations and drills does actually end up with better students.

Not that exploratory teaching is a total dead-end. There are advantages to constructionism, which is that IF a student discovers something on their own, they remember and understand it more deeply than if they'd had it explained. It's a big "if" though: that moment takes a long time, and maybe never at all. But every now and then a moment reveals itself where you can set up bread crumbs for a student to be tricked into discovering something.

@GeoffWozniak The big question is, so, well, how do you give students direct instruction? How do you tell them how to do something?

You're teaching for-loops, so you show them printing out the numbers 1 to 10. Then 1 to 20. Then 10 to 1. Then only the even numbers. And so on. It's not long before you've kind of gone through all the permutations and you've got no choice but to move onto something more complicated.

I've found Design Patterns are a useful teaching tool when students reach the "Java 2" stage. But at the "Java 1" stage it's tough. What I'd really love are a big pile of exercises to pull from. My dream is a big book of 1000 exercise that only require "if"s, or only require "while", or what have you. Computer science is sort of tough in that creating/specifying a problem is much harder than solving it (usually).

@ethicsperoxide Similar. When I was a TA and lectured (which was not a lot, but I did), I often said, "just try different things out". I did not consider my own experience very carefully, though. Sure, I fiddled with ideas in code, but I already knew the fundamentals, that is, I could remix code in my head. And I, too, noticed that it just didn't pan out all that well for students. It wasn't just my classes, either. (I don't think I was that bad of a lecturer...)

I thought about it a bit and I realized that when I was younger, I read code listings more than I "just tried coding" because, well, that's all I had to go on. But I would stare at the listings for a long time.

I also don't know how to approach it. I should ask my friends who are lecturing at universities what they are trying.

My wife is a high school teacher and she agrees that exploration has lots of value, but it doesn't seem to work as the starting point.

I like your "bread crumbs" metaphor. Getting students to the point where they are confident to explore is probably more fruitful.

Sign in to participate in the conversation

A bunch of technomancers in the fediverse. Keep it fairly clean please. This arcology is for all who wash up upon it's digital shore.