Pop Quiz: Python in the Classroom
*Ha! Not the snake! This whole post is about computer programming.
This past weekend I went to PyOhio the Python programming language conference held in Columbus, Ohio. The conference serves the needs of both beginner and experienced programmers. So there were an array of different types of talks from introductory (“Hello world”) to the more experienced (this is what I do at work) topics. There were several talks that were useful to me and to my husband. I can’t wait to see who will be at next years conference! (Also, if you would like to check out the speakers they should have videos of the talks up at some point.)
One of the neat things about this conference is the young coders portion of the conference. They have a section dedicated to teaching Python programming to kids from ages 12 – 17. The classes are free and they get to take home with them a Raspberry Pi computer kit. That is pretty awesome!! Needless to say the people that run this conference do an excellent job.
So why am I telling you about my weekend? Well, I am not sure exactly how many K-12 schools have actually implemented in their curriculum computer programming training but I think that this is a skill that is very valuable to children. I am not talking about using a computer. Kids know how to use computers. Isn’t it standard issue with the umbilical cord at this point? I am talking about actually learning how to create programs to make the computer do their bidding (cackle, cackle.)
I know kids have so much to learn in school at the moment but really programming serves the function of teaching critical thinking skills, logic, problem solving, and creativity all in one wonderful package. When I was in school Basic was the programming language de rigueur and I did learn it in school. It was an elective at our high school and was not implemented in any other class. However, that was when most homes did not have a computer and the ones that did loved their Atari mostly to play MULE and Space Invaders (sorry husband.)
I really think that programming should be taught at a fundamental level to all children as part of the curriculum of math and science education. It is after all the world they are growing up in and Python is a pretty awesome language to start with. I found a short commentary about someone who taught their kids to program using Python in case you are interested. Actually, I think everyone should learn how to at least program “Hello world.”
Since I do not teach K-12 and have no children in K-12 I have no idea what is going on in the schools regarding the teaching of computer programming. I would really like to know have K-12 public institutions made this a part of the curriculum? Do you think computer programming is beneficial to children? What language would you suggest as a starting point for a child or for an adult?
The Pop Quiz is a question posed to you, the Scholars of Doubt. Look for it on Mondays, Wednesdays and Fridays in the afternoon (ET).
Featured Image: Crystal icon theme by Everaldo Coelho
Yes! More programming, for everyone!!
I have only taught college-age, but in the places I have been, students don’t know how to use a computer, period. They don’t know the QWERTY keyboard, and forget being able to type, even with just two fingers. They can barely deal with navigating a file system, even through a graphical interface, and they just about faint when told to work with any facsimile of a command prompt. And reading the help files? I must be joking. And these were bright, hardworking students on a pre-med track.
So I am in favor of anything that would increase computer savvy, not just clicking-around-the-internet savvy, although that has its place.
As for programming in particular, I rather think that programming would be more beneficial for general college requirements than calculus, because programming forces you to break down your thinking into steps, implement your thinking, and do lots and lots of trouble-shooting. I don’t have data to support or deny this opinion, though.
Further, if college students showed up with some basic programming then calculus and pre-calculus classes could be even more awesome (yes, I teach math) because I could incorporate much more in the way of “okay, let’s see what happens if we make the computer do this thing over and over” moments. Fractals! Learning how you can make a computer do your Riemann sums! Collatz Conjecture testing! So I would love to see programming implemented in K-12. As a second-grader, I would have enjoyed it much more than “answer the addition questions to build a monster” game that was what we had then. Rice University runs a Coursera course teaching Python where each assignment is building a simple game; that approach would probably go over very well in elementary schools.
When I was in (public) high school (nearly fifteen years ago), AP Computer Science was an elective, and taught C++. My calculus classes also included some minimal programming of our TI calculators. I don’t know for sure, but I don’t have the feeling that things have changed all that much in K-12 education since then, based on what the students that come to my fairly selective university seem to know. Almost none of the undergraduates who come to work in our neuroscience lab have any programming experience to speak of, which is really too bad as it’s probably one of the single most valuable skills for them to have. Even most of the new graduate students in my program have little if any programming background, and people are often surprised how much of their time is spent programming once they start their research projects.
Nowadays, I think Python is probably the best choice for children or adults who want to learn programming just to learn it. But, after having learned more programming languages than I can easily keep track of, I’ve generally found that I don’t really learn a new language until I have a project, and I think that’s an important element in choosing what to language learn. Python’s an excellent choice for general-purpose programming, and of course the Raspberry Pi opens up lots of potential fun projects. But maybe you want to build a wearable electronics project — you might want an Arduino, and learn its language (which is really just C++ with a few specialized libraries). Love video games? Lots of games these days can be scripted with Lua, letting you add your own creative touch to your favorite game. Want to do some serious number-crunching? You might want R, or Matlab/Octave. Math geek? Mathematica will be a perfect toy for you (if you can afford it). Want to build a website? Can’t beat JavaScript, and maybe PHP.
I think learning programming as a theoretical exercise is great, but what really makes it transformative is discovering that armed with a computer and a little programming knowledge, you’re empowered to explore your creativity in ways that would otherwise be impossible. Of course this is invaluable in math and science, but I think it’s equally true in other domains as well. I think the best thing for a child or adult student is to learn a language that will let them do something they want to do.
That said, Python is absolutely my favorite language to program in. If what a student wants to do can be easily accomplished in just about any language, my vote is to learn Python.
There are many efforts to bring coding into the k-12 classroom. Code.org is leading the way, but they are not alone. The collegeboard has piloted a new AP computing class that is more fundamental than AP comp sci. The curriculum is developed for a wider audience, and is more about algorithmic thinking and the cognitive skills necessary to successfully start coding.