I just finished taking a Coursera course on Software Defined Networking (SDN), taught by Dr. Nick Feamster from Georgia Tech. Since I was initially undecided on whether or not I should take it, I thought to blog about the experience, in case it will help anyone else make such decisions in the future. I won’t re-iterate content from the course or post answers here. 😉
Day 1, 14 July 2013
I read an informal advertisement for the course on a work mailing list the week before. The main questions on my mind were:
- Do I want to do the course? Yes!
- Do I have time for the course? Maybe.
- Am I confident that I can catch up? Yes, although now or never.
The course had been going on for three weeks, but the first two weeks covered introductory material including history of SDN, as well as topics like the so-called Control Plane and Data Plane separation, which I was familiar with, so I figured it should be possible to catch up. (Aside: after finishing the course, I found this FAQ entry on late enrollment, which may be useful)
I signed up around noon, and started studying straight away. By the late afternoon I had caught up on the first two weeks of material, which didn’t contain anything groundbreakingly new for me, but it was well structured and useful anyway. The practicals were also quite fun, since they involved playing with Mininet and OpenFlow, two technologies that I had wanted to look into for a long time. I thought to call it a day and do the next week’s worth of material later. Each week contained an interview, the first one being with Martin Casado (a Nicira co-founder!), which I thought was very interesting and made the course unique.
Later that evening I logged in again, and by chance found that week 3 contained a Python programming assignment due by midnight, which due to timezone differences worked out to be 8am the next morning. Thankfully it wasn’t too tricky though (largely because I’m familiar with Python), so no all-nighters were necessary (it took me less than an hour). Note to self: check the deadlines.
The rest of the course
In the next modules, notionally week 3 & 4, the course really picked up. The material was more interesting and challenging, which I welcomed. The next programming assignment took a bit longer (ca 2h) since it took me some time to figure out how to instruct an OpenFlow switch to drop packets (my initial attempts resulted in protocol errors, which was interesting). Weeks 5 & 6 continued at a similar pace, easing a little bit towards the end of the course when we were presented with with a broader view of SDN and it’s potential future. I found that solving the other programming assignments took less time.
Thoughts on related topics
I’m sure this is a topic which can cause a lot of debate (and it has on the course’s discussion boards). For this particular course, I would say that they required a working knowledge of Python, but assuming you had that and followed the numerous hints the assignments shouldn’t be too tricky. While I remember most programming assignments at university being harder (or well, at least the ones outside the introductory courses), I thought this was not a big issue, as it made the course accessible to a wider audience and the assignments still furthered the aim of the course, namely to teach you about SDN.
I treated this course similar to courses at uni, which for me meant taking notes about the important bits discussed during lectures. I would’ve written summaries if there had been an exam to study for. Even this was probably overkill, but it helped me reinforce the material and take the course more seriously; I don’t think one should treat MOOCs the same way as watching youtube videos on the train.
Notable differences with university
- The instructor has more knowledge about the students’ background, and can make more assumptions (e.g. about the degree of familiarity with Python)
- Lectures in an MOOC appear to be split into smaller chunks. I didn’t take advantage of this though, and watched all the ones belonging to a module in one session.
- For this particular one, there were weekly quizzes and programming assignments. At the university I studied at, it was more common to have long exams at the end, and more involved coursework.
There are of course lots of other differences, for example related to facilities, interactions with students & instructors, lab work (a MOOC on practical chemistry would be interesting), etc… The above are just the ones that I noticed.
I really enjoyed taking this course. I learned something useful, studying didn’t take up too much time, and it wasn’t stressful in any way. It also gave me a good opportunity to experiment with some interesting technology. Starting late didn’t turn out to be a big issue for this one, but when I take the next course I’d need to make sure I check the deadlines if I miss the start. Also, it’s worthwhile taking the prerequisites seriously.
While MOOCs don’t provide quite the same experience as studying at university itself, they do have lots of upsides (e.g. not requiring you to attend university full-time), and I think they’re pretty much the next best thing. I’d certainly recommend attending one that’s in your area of interest! Therefore, it’s probably worthwhile keeping an eye out for upcoming courses on Coursera, Udacity and others.