A couple of weeks ago, we wrapped up the Spring 2017 offering of the EECS 489: Computer Networks course. This was my first time teaching this course — in fact, it was my first time teaching any undergraduate course. Trying to introduce small changes in a undergraduate course is difficult; being naive, I went for revamping almost everything! It was an impossible task, but I think we — my students, support staff, and myself — weathered it well. Hindsight being 20/20, now seems like a good time to look back at all the changes we have introduced and all the challenges we faced. It is also a good time to thank the village that made it a successful one; yes, it does take a village.
This one is easy to answer in one word — EVERYTHING!!!
- Course materials have gone through a major revamp with a focus on “in the new stuff” (datacenters, cloud computing, application-aware networking, SDN etc.) “without throwing out the old” (Internet still rules), all the while focusing on keeping things simple;
- Ordering of content is more straightforward now: a literal top-down walk of the network stack;
- Textbook upgraded to the 7th edition of Kurose and Ross;
- Most importantly, ALL NEW assignments/projects — on performance measurement, CDN, video streaming, reliable transport, and router design — with Mininet as the underlying substrate for large-scale emulation.
You can take a look at all the course materials from this offering at https://github.com/mosharaf/eecs489/tree/w17.
What Did the Students Think?
As far as I can tell based on student evaluations, almost everyone loved it! The very minority who didn’t enjoy the course as much, still felt they learned how Internet works and they can watch YouTube and Netflix; I consider that a success too and happy to declare victory.
There are three sets of people that made this course a success.
First, we have an amazing community in computer networking, where everyone cares about making life easier for the youngins. I must thank the many networking researchers and academicians who helped me by sharing many resources, including course materials, assignment/project ideas, and their collective knowledge from teaching computer networking for a long long time. Without any particular ordering, I want to give my heartfelt thanks to Sylvia Ratnasamy (Berkeley), Sugih Zamin (Michigan), Aditya Akella (Wisconsin), Peter Steenkiste (CMU), Philip Levis (Stanford), Nick Feamster (Princeton) Vyas Sekar (CMU), Mohammad Alizadeh (MIT), Hari Balakrishnan (MIT), Arvind Krishnamurthy (UW), Harsha Madhyastha (Michigan), Jason Flinn (Michigan) and Peter Chen (Michigan). Additionally, I want to thank Kshiteej Mahajan (Wisconsin), David Naylor (CMU), Matt Mukerjee (CMU), and Chase Basich (Stanford) for answering many questions regarding different projects and assignments as we modified and ported them to Michigan. Without the help of people above (and many others that I may have missed), my efforts probably wouldn’t have been as successful.
The second set is small, but they are the most important pieces of the puzzle: my support staff. Given the class size, I could have only one GSI and one grader. I was extremely fortunate to have Nitish Paradkar as that one GSI. He is many in one and made everything possible. Without him my attempt to change ALL assignments/projects in one go most definitely would’ve been a disaster. Thank you Nitish, and all the best with your future endeavor at Facebook. The other half of this team is Shane Schulte, my grader. While Nitish made everything ready-to-go, Shane kept them running by being very very punctual on grading everything. One drawback of changing the entire course was that we couldn’t create any autograders. Shane had to manually grade (with extreme cases being double-checked by Nitish) on time every time to keep the course going.While I’m on this topic, I also want to thank Github Education who supported us with creating private repositories of all the students, which made life easier for Nitish and Shane. Overall, I don’t know what I would’ve done if I were not lucky enough to have Nitish and Shane as partners.
The final set consists of my 72 students, who made all our work worthwhile. It was big ask when I walked in on the first day and asked them to tolerate all my mistakes and my inexperience. They had been excellent, and I don’t know what more I could’ve expected of them. There were many storms, but none became too big to handle because my students were very patient to give our team a chance to figure things out. I’m very thankful to have them as my first set of undergrads. I must admit that I never thought I would enjoy teaching as much as I did, and it is only because of them. I wish them all the very best that life has to offer.
Most things went well. However, despite our best efforts, there are still several loose ends — e.g., autograding, exposition of some complicated ideas etc. I hope that the next offering of the course will be markedly easier because of some content reuse, and I look forward to spending that time and energy to better address the remaining issues that I noticed or were brought up by my students.