Updated on 28th December 2014 to fix errors caused by a change in the CodeSkulptor library.
The latest Coursera class I’ve been taking is Introduction to Interactive Programming in Python, a long and unwieldy title. It was conducted by professors Joe Warren, Scott Rixner, John Greiner and Stephen Wong of Rice University and ended yesterday so, as usual, I thought I’d write a few words about it.
To tell the truth, I was misled by the title of the course. I thought it really was an introduction to writing interactive programs. Since all of the programs we worked on in the Algorithms class were non-interactive, I thought this would be a good new experience. It turns out that this course should really be labelled something like Introduction to Programming via Interactive Games in Python, which is even more of a mouthful but more aptly describes the content of the course.
That’s because it really is an introduction to programming, using Python as the language of instruction, starting from variables and moving on to functions, conditional statements, lists, dictionaries and ending with classes. The emphasis is really on getting students to do stuff as quickly as possible, so there’s very little in the way of theory. As the professors themselves explicitly point out, they even tell you to do nasty stuff like use global variables all over the place in order to get students moving fast.
One interesting thing about the course is that all programming work is done in a special web-based tool called CodeSkulptor that was created by one of the professors. It implements a limited subset of Python by running JavaScript in your browser. Obviously the intent is to make things easy for beginning programming students who would likely get lost when trying to install Python and selected libraries on a variety of platforms. Since the programs written in this course are all peer-assessed rather than machine-assessed, this also avoids all manner of incompatibility problems.
It does mean that this course was as a whole far too easy for me, since I’d previously implemented a whole game in Python before this. I did learn a few new Pythonesque tricks (what the hell, how come this works: (x, y) = (y, x) ?!?) including list comprehensions and manipulation of sets. I also learned a whole lot of useful from the forums including lambdas and mathematics for drawing 3D perspectives. But it is worth keeping in mind that the hardest problems for me, and the other advanced students in the class, was not completing the quizzes and assignments, but in working out how to overcome the limitations in CodeSkulptor.
Still, working through this course made for useful practice and I did enjoy working on the assignments. I made it a personal point to add in an extra bit of flair for each of the weekly mini-games that we had to turn in as assignments. This started from a simple text-only Rock-Paper-Scissors game to a graphical version of Blackjack. I particularly spent a long time adding all sorts of cool stuff to the final project, which is an implementation of the classic Atari arcade game Asteroids. I’m pleased that it even received a personal seal of approval from professor Joe Warren!
The course videos were entertaining to watch and the professors tried very hard to get and retain your attention. Some of the humor may be a bit tacky and I have to give them an A for effort. The professors also provided an amazing amount of support on the forums, not only in answering questions but also in allowing students to e-mail them with non-working code so that they could get advice on how to fix the code.
Overall, I have no reservations about recommending this to anyone interested in an introductory programming course. But it’s probably too easy for anyone else, even as an introduction to Python if you’re coming from another language. But I liked the professors and how well they organized the course so I will be looking out for more advanced courses from the same team at Rice University. Finally, here’s the link to my own version of the final Asteroids project. Just click the top-left run button to start it. Standard controls are the arrow keys for movement and the spacebar for firing. Enjoy.
Thanks for building the asteroids project. It is a useful resource.