4 ms·
> Programming is about identifying a goal for a program, and iterating on code to achieve it regardless of what bugs you encounter. More than that, programming
by dimmke 3y ago
> Programming is about identifying a goal for a program, and iterating on code to achieve it regardless of what bugs you encounter. More than that, programming is about harnessing the computer to express yourself creatively, systematizing the contents of your imagination until they come alive in the real world
I don’t think this is a useful definition of programming in general, but perhaps a good way to frame it for an intro class.
The way he described his curriculum touched on something that always bothered me (and made me a D-F student for most of high school)
It sounds like the course was a series of projects, like “learn to do X in Python”
That’s how geometry and algebra and chemistry were for me, it was just “memorize this formula” and be able to solve problems with it on this test, then make sure you can also solve it on another test at some point in the future (midterm or final.)
It was never explained what the actual purpose of these algorithms were used, why they are significant. Not just “how am I going to use this?” But “how is this used by people in the world I live in?”
And because of that, it was impossible to motivate myself to learn any of it. I just didn’t care. I think a more holistic view would have been helpful for me. But other students got through it just fine.
But I taught myself web development during the same time because I wanted to learn to make websites. Because the applications of programming are so broad, maybe it makes more sense to design a curriculum where instead of forcing students to do every project, you have a list of projects that after a certain point students can pick to pursue themselves (or if they are high performers, they can propose their own)
It sounds like he was writing custom libraries for these projects too. Why not encourage the use of open source libraries instead?
And is Python really the best language to use for this stuff? I’m not sure. I know the syntax is more simple but I think teaching JS (a simple subset obviously not every language feature) would be more realistic and give more flexibility into the types of projects that can be done?
- fragmede 3y agoI think which language to teach is getting into the weeds a bit, but imo python is the right language to start with because it's so straightforwards. There's no pointers like C or anonymous functions/await in JavaScript to learn. once there is some confidence, more advanced concepts can be introduced, but there needs to be a solid foundation first. JavaScript makes for a great diving off point though. Have the class open a webpage on their laptops, then open the developer console, type in some JavaScript, and do a thing to the page they're on. Choose the right thing and the kids will be hooked on programming.
- dimmke 3y agoI mean how does Python handle asynchrony? Callbacks? I’m not sure if that’s really better. I think my issue with it is where is Python widely actually used by programmers? It mostly seems popular with data science people. So it just feels like choosing a language because the syntax is a little simpler on the surface isn’t a good enough reason, especially since when writing modern JS it’s not that much more verbose.
- fragmede 3y agoFair point, python has async and callbacks too. My point though is that those are advanced topics and shouldn't be part of an intro to programming class. It is a little simpler, but given that most students are having to learn so much all at once, imo that "little" counts for a lot!