I’m taking An Introduction to Interactive Programming in Python through Coursera, and I’m blogging my thoughts about it, when I have them. If anyone wants to chat about the class online, I’m happy to do so! (I didn’t end up with much of a local cohort—just a couple of people, and they don’t want to meet regularly.)
I watched the Week 0 lectures and did the quiz and homework, and I have to say, I had forgotten how “mathy” CS people were. (I’m differentiating “CS people” from “programmers,” because they aren’t necessarily the same thing. There’s a Venn diagram deal going on, between the two groups.) For the most part, I don’t mind—math’s OK with me—but I kept thinking, during the recorded lecture, how off-putting the early focus on numbers might be, for a big portion of the class’s online audience—and how unlikely it is that the teaching staff will even realize that. Seriously, one of the quiz questions wasn’t even programming; it was just unit conversion (grams to ounces).
So I find myself looking back at and reflecting on not only my formal CS education of over a decade ago, but also the books and websites I’ve used to teach myself in the meantime. It seems like it’s really normal for CS folks to start with a bunch of arithmetic. It might be out of respect for history, because computers were originally designed to do math (though they do a lot more now). But probably not. I think they do it that way primarily because the people who have traditionally gone into CS have been math-loving people, so starting with numbers feels easier, to them, than starting with strings or other concepts. Maybe it is easier, in that operator precedence and simple problems solvable with a pencil and paper are cleaner to teach and easier to grasp, early on.
Looking back at C/C++, my first language, I vaguely recall that the number stuff was easier than the string stuff, but that may have been my professors over-complicating things when they taught strings. Or it might be that C/C++ is terrible. Strings don’t seem hard, in the languages I use now. (Except that I always forget whether I need to use single-quotes or double-quotes. But that’s just syntax, anyway. Syntax is its own thing.)
So now I am having thoughts, mostly about how to make programming accessible to folks who don’t self-identify as “mathy.” Because, like I said (or at least implied), not all programmers are CS people. I honestly believe that you don’t have to be good at math to be good at programming. You have to be good at logic—and you can get good at logic while you’re learning to program—but since they teach logic in philosophy classes, I’m convinced that’s doable without math. I have this weird idea that maybe I could convince people they’re able to do logic—and, by extension, programming—by playing Zendo together. (I got the idea from a programmer I know, named Fred. He’s one of, like, two people I’ve ever met who didn’t like the game Zendo, and he said it was because it was too much like what he did all day.) Also, I feel like I should say, the game’s more fun than the Wikipedia article might make it sound.
Anyway, all of these thoughts aside, I’m enjoying the class, so far. I think I’d be open to teaching people Python in CodeSkulptor, for exactly the reasons the instructors listed, in their class intro. I’m told that learning Python 2.x is probably better than jumping right into 3, since a lot of people haven’t done the conversion yet, so I’m pretty OK with that decision, too.
I’m looking forward to having a working version of Asteroids at the end of the class. :) I’ll have to see what’s involved in exporting my projects to the web, so I can make them into a mini Python portfolio, more for my own entertainment than any kind of employability. Apparently the Django tutorial my husband was following online isn’t finished, so I’m open to suggestions on good Python frameworks to explore, hopefully with online tutorials or really great (and they’d seriously have to be really great) books.