Intro To Programming
So a friend of mine is taking his first intro CS course, and I found myself ranting on EotL this morning about education. Most of my grumbling here is specifically about intro classes, but I really feel that’s the kind of programming we’re going to need for the future.
Sure, programming the big fancy thing in the big fancy building will still be done by expert programmers who are probably very well served by an advanced CS curriculum; but I’m convinced the most demand is gonna come from the programming of everyday things that are all around us – the kind of programming done by the layman or hobbyist who probably isn’t going to take more than one or two programming “classes” their entire life, most likely at the community level. I decided to post this here because I also think these are the kind of programmers we’re going to need in order for gabbo to work. Not a lot of folks are gonna want such a pervasive machine governing their actions, no matter how much fun it may be, without retaining the means to control it to some extent. Part of this will come from political machinery yes, but it must also come from universal access to a basic programming education. The modern world was formed out of a basic need to control our environment, and programming is how one controls their environment in the connected world. We won’t be able to advance very far until we fix how we’re teaching it.
With that here’s the log (amended):
<pre>You say: one thing I feel programming classes get wrong, seemingly
universally...
You say: so handing out assignments
You say: that is basically what we in the biz call requirements
You say: and usually it comes in text form, drafted by some sort of business
person or liaison to a business person or whatever
You say: the teacher shouldn't even really be involved there, requirements
can easily come from the book or tutorial or whatever
You say: and then you have to analyze them and figure out what you need to
build
You say: that's what we call technical requirements
You say: then you write the code
You say: okay the 'grading your work' part of the teacher role
You say: is basically code review
You say: I mean code kinda grades itself, it either meets the requirement or
it doesn't
You say: that's the debugging process
You say: and everything on top of that is style, which is why you need
review
You say: every developer needs to not only be graded, but must also learn
how to grade
You say: because in most situations, the reviewing is done by your peers
You say: so handing out assignments, and grading them
You say: that should be part of what you're learning to do, not the role of
the teacher
You say: hell sometimes you don't even need the text to hand out the business
requirements, if the class is creative enough the students should be
able to do that too
You say: the role of the teacher should be to teach
You say: but the curriculum is usually so focused on writing code it ignores
those other things
You say: sometimes schools like make another higher level class that you can
take after the intro class to teach those things separately
You say: but learning how to write code without being able to do the other
stuff is a nearly useless skill
You say: oh and another thing, expecting any student no matter how gifted to
get it right the first time is unrealistic
You say: no programmer gets it right the first time
You say: but my experience, with these intro classes especially, is you hand
in an assignment, get a grade, and move onto the next thing
You say: that's never how it works, technology is by nature iterative
You say: teaching programming without allowing if not requiring the student
to iterate on their own work is absurd
You say: anyway end of rant, but hopefully that gives you an idea of why I'm
interested in this stuff
You say: I'd love to try and fix it
</pre>