Whew! Just this morning, I submitted my final project in Rice University’s An Introduction to Interactive Programming in Python. With that, I’m done with the eight-week course. This was my first experience with Coursera, and I wanted to jot down some impressions. A good portion of my work week centers on digital content and instruction, so I was particularly interested in the pedagogical elements of the course.
For background, each week in the course is based on a half dozen or so instructional videos, totaling about an hour or so in length. Following that, there are two quizzes. The most time-demanding element of each week is the project, where you’re asked to apply the week’s instructional content to build an interactive game using Python. For additional support and practice, there are practice exercises, an active support forum, course notes, and student-created tutorial videos. Each unit repeats this pattern through the eight weeks of the course.
On the whole, this was a great experience. The instructors (Scott Rixner, Joe Warren, and John Greiner) clearly care about the quality of the course, and take extra steps to make the course fun with their geeky humor. Rather than dump full lectures online, each short video is specifically designed for online delivery. A ten-minute video covers a lot of material, and you get a lot of learning in the week’s video content. Explanations are clear, no time is wasted, and learning pathways are well connected. The quizzes force you to apply the material in the videos, and can be quite challenging. The projects are extraordinarily rewarding: the last project is a fully working version of RiceRocks, which is an asteroids game you build over the last two week of the course.
All is not perfect, however. The course is billed as an introductory course, and while this is technically true, the learning curve is pretty steep and the workload fairly demanding. Each week adds a handful of new concepts, and you immediately apply them in building the week’s project, which is often complicated. The stated workload is 7-10 hours. (I’d worked through 75% of the CodeAcademy Python course before taking this course, so I knew about 40% of the material beforehand.) The first half of the course took me about 7 hours per week, but the back half of the course took me at least 10 hours on average, and that was just doing the essentials: videos, quizzes, and project. I had no time to look at the practice exercises and other materials, which could have easily consumed a few more hours. I can’t imagine how much harder this course would be if you didn’t have any background in programming.
I found the projects very challenging. I’d pretty much start each week’s project during the back half of the course in a total panic, not having any idea how I was going to be able to complete the work. After an hour or two of hyperventilating and blundering my way through things, I’d eventually get some traction and start making progress. This often involved looking for answers to my questions on the forums, going back through previous videos to relearn concepts that I’d forgotten from previous weeks, and just plain trying lots of things to see what happened. By the midpoint in the project, I’d start to feel a bit less panicky, and by the end I’d start to feel like I knew what I was doing. From reading other’s posts on the forums, I’d say my experience was pretty typical for someone who had limited programming experience.
The odd thing here is that the projects give you a template, which often includes some of the base code you need to complete the project. Each project also has a walkthrough, which is essentially a step-by-step walkthrough on what to do to complete the project. I often found these both helpful and disorienting. Disorienting because I had no clue why we were doing things in a certain order, or putting things in a certain place. I felt like I was walking down a walled pathway, and when things didn’t work, the lack of conceptual understanding for what I was trying to do got me totally stuck. The pathways were extraordinarily helpful once I “got” how we were expected to approach a solution.
A lot of the difficulty comes from the limited time you get to apply the concepts in the course, the pace with which new concepts are added, and the lack of practice with each of the concepts in isolation. With the looming Sunday deadline, I felt like I had to race through the material just to keep up. Ideally, the course would be spread over 16 weeks instead of 8 (or I had 15-20 hours in my life to devote to the course every week instead of 10). The slower pace could be used to formally incorporate the optional practice exercises built into the course. It would have been great, for example, if each video had two or three “Apply this” problems, so you could use the concept in isolation to build confidence. I found it challenging to watch videos on three or four concepts, then immediately jump into a project that asks you to integrate all four concepts. I’d get mixed up as to which concept should be used for each solution, let alone how to apply them. Toss in the need to remember concepts from earlier weeks, and there was a whole lot of scrambling to patch together my projects. I’d feel a lot more confident in my learning if I had some isolated practice on each concept. As such, I feel like I half-learned a ton of new things about Python, and I’m not very confident that I could apply all of them effectively outside of the structure of the course.
Still, I’m very glad I took the course. I feel like I’ve got a moderately good understanding of Object Oriented Programming, and can actually apply many of the concepts we learned. And despite the panic attacks, I somehow made it through each week with working games/projects.
As for recommending this course to others, I’d strongly recommend newcomers to programming take a different course first, perhaps: University of Michigan’s Programming for Everybody. However, if you’ve got some fundamental understanding of programming, or already know another language, or simply have a lot of time to work on the course each week, this is an excellent choice. The instructors care, do a great job explaining concepts, and the learning pathway is very strong.