I dipped my toes into fresh Coursera waters with trepidation. While I tend to hold a far less mystical view of education and learning than many, I knowthere is a measurable benefit in an interactive, collaborative, classroom. This environment can sometimes replicate entire worlds, serving students by giving them a way to view the area of study that isn’t accessible through reading and self-study. Though classrooms are in many ways beneficial, I found the Coursera promise tempting: free online education, from accredited universities taught by experts in their fields. Intriguing, no?
I was also drawn to Coursera because I have wanted to begin to learn about programming for some time. Of course, there are entire libraries devoted to aspiring coders but I stayed away from the books and websites because I didn’t know where to start. Browsing the available classes on the Coursera home page I was delighted to see “Learn to Program: The Fundamentals” would be starting right as I was looking for a new project to undertake. Even though I was interested in the topic of learning to program, I was also curious to learn more about Coursera and the learning experience first hand.
Taking place over seven weeks, the classwork was composed of interactive videos, exercises and assignments. I won’t follow the class from beginning to end, rather, I will look at each of the components and try and tease out how well they worked or did not work for teaching me (and by extension, other students) how to program.
The lecture portion of the class took place through interactive videos. Two professors from the University of Toronto took turns doing lectures. I came to appreciate these two professors a great deal and viewed them as my guide through the strange new land of programming. In this course, the programming was all done in Python (Python 3, if you’re curious). The first video explained how to install Python and Idle, its graphical interface. This video explained the process very well and I was up and running in no time. In hindsight, that first video was indicative of the quality of instruction I received for the duration of the class: clear, helpful, and concise.
I mentioned above that the videos are interactive. In most lectures the professors introduced a topic – typically a function of some kind – and gave an example of its application. After these introductions and examples, the videos paused and the student answered questions about what they learned. While the lectures were good in and of themselves, the allowing students to practice what they have just learned was indispensable. In fact, I might go so far as to say that this is one area where online learning might have a leg up over classroom learning. I found that I was able to learn and absorb quite a lot that I didn’t understand at first blush because I had the opportunity to interact with what I had just learned immidiately. While these questions were sometimes multiple choice, they usually involved forming new code based or doing simple computations. Usually they involved using doing. Through trial and error I was able to test what I had learned and have a good sense by the lecture’s end if I really understood the material or needed to go back and watch again. Much credit must be given to the instructors for choosing mini-exercises at exactly the right difficulty level. They were almost always helpful and with only a few exceptions helped me understand what I had just learned.
The mini-exercises were helpful and prepared me for the graded exercises, the second component of the classwork. These exercises were untimed, open-book quizzes comprised of multiple choice questions and solving problems that required line of code. Like their mini-brethren in found in the interactive videos these exercise questions were generally very good. They mostly served as solid reinforcement of what had just been covered in the week’s videos and gave me good practice for applying what I had learned. While I found most of these questions to be very instructive, some of them were a bit more convoluted than necessary. I second guessed myself a couple of times because I misunderstood the question. These misunderstandings could have been avoided in a class by simply raising my hand. I do not fault the content itself, necessarily, it was more that the questions were not worded in a way that made sense to me. These exercises were, on balance very good aside from the few stretches of frustration caused by unclear questions.
The final classwork component, assignments, seemed to be exercises in frustration. But I mean that in a good way.
Rather than the structured exercises, the assignments were a chance to write code from scratch. Assignment instructions gave some goals to complete and what the outcomes might look like, but it was up to me to figure out what came in between. I came to simultaneously enjoy and loathe the assignments. I really enjoyed the openness and the feeling that I was creating something from scratch. Each assignment was like a multi-part puzzle and there was a great amount of joy to be had from applying what I had learned to completing the puzzle and seeing it all come together.
However, I am no savant. I should mention here that none of this came easy to me: while the coding in this course was not difficult or advanced in any way, it does represent a very different way of thinking. I count this as a good thing, even though the frustration that comes from nearly endless trial and error became a source of reticence to approach the material near the end of the course. Probably I spent between 12-16 hours on the 3 assignments. And, for the sake of full disclosure, I never submitted the final assignment completely because I simply was not able to devote enough time to it.
Although I hate leaving things incomplete, I would not change anything about these assignments. Though challenging and sometimes frustrating more than any other component of the class they were able to put me in the mindset of programming. They forced me to break the problem into small parts, solve each part on its own, and then look at how all the parts worked together. Really, my only complaint is that I did not have enough time to devote to the assignments.
I had a very good experience with this class and would recommend it to anyone who wants to take a very small step toward learning how to program. Obviously, this comes with some caveats. First of all, do not expect to do this casually. I had to devote some serious time and brain powers. At the beginning I was under the impression that the Coursera classes were a somewhat casual affair. While not the same commitment as what I would give to a class in university, neither was it something that I could casually pick up in a moment of free time. I had to carefully change my evening schedule to complete what I did, and even then I was still not able to get everything done. I actually count this as a point in favor of the Coursera model: the professors approached the topic on its own terms and did not cut corners for the sake of ease.
Of course, this highlights a potential problem for would-be Coursera students: it requires a high level of motivation. I did all of this because I wanted to and was excited to learn about the topic. But that was not enough to carry me through to the very end because the amount of time needed to complete everything exceeded my motivation. This is not, however, a zero-sum game. I am glad that I took this course and I fully intend to learn more about Python, though this time I will choose something that I can complete at my own pace.
In fact, that is probably my biggest criticism of the class. Because the class takes place over seven weeks, each exercise and assignment was on a tight, weekly deadline. Still, the deadlines and grading are illusory. A grade of 70% confers the student with a certificate of completion. I’m not sure that this certification translates to any tangible benefit, besides a feather in ones cap. I am not entirely clear as to why the material could not be completed and submitted at my own pace since all of the answering mechanisms are automated. Perhaps this will come in the future. I hope it does, though this is ultimately a minor complaint.
I started Coursera with reservations, and I still have them. The lack of immediate feedback, need for strong motivation, and inability to work on my own schedule are all problems that need to be addressed. However, I would absolutely recommend classes to anyone who has the interest, time, and motivation to learn.