We survived the first day of our intensive RDBMS programming course at MIT. About 25 students showed up at 10:00 am and all returned after the lunch break. Though the syllabus is new and untested, the students reported that the class was better than their average MIT course and more effective for learning. I think this goes to show that almost anything works better than the traditional lecture format. We had individual students or pairs working together on laptops and three teachers milling about the room offering assistance for solving problems (plus Andrew in California on IM and Skype). We used Google Docs to distribute the assignments and as a shared workspace for doing code review once problems were wrapped up and ready for discussion.
The only thing that did not work well was distributing the 2.7 GB .zip file containing the virtual machine for the course. It took at least 30 minutes to download even though it was parked on web.mit.edu. We had a couple of DVD-ROMs, but should have brought a bunch of USB sticks. The MIT wireless network and/or the Web server is not ready for intensive use. We used virtualbox.org and had sysadmin problems on all underlying platforms (the mix was approximately 80 percent Windows, 10 percent Macintosh, 10 percent Linux; one guy had a $150 Android tablet for viewing documentation). It would have been ideal to get everyone set up well before the class started, though many of the attendees did not pre-register so it is unclear how we would have reached them.
Overall it was a very rewarding experience. A lot of very smart people showed up and we were able to save them a lot of time while teaching them some useful skills. I need to offer a public thank-you to Andrew Grumet, John Morgan, and Shimon Rura. Given the range of systems that we had to deal with as well as the problems students encountered that were peculiar to their laptops or “just plain peculiar”, there was no way that I could have been effective alone. So thanks, guys!
Wireless networks are not usable for this kind of distribution using the normal protocols. Even the n standard only claims 300 Mbps, shared by every user. Had you used a broadcasting protocol, that would have taken 74 seconds (ignoring protocol inefficiencies). With 25 individually downloading users, 30 minutes is already very good.
You will get better performance when the students are able to use multiple access points, and are close to them.
Hi Phil: Would love to hear more as you progress on this topic, more details on how you evolve strategies. Especially if you can apply this to other CS class type subjects where technical productivity is important, ie Javascript, Server Programming, anything which requires you to write code to build things with. Not the algorithms and CS theory type classes.
We are trying 2 things in teaching CS courses for working programmers.
1) interaction and a place to practice. Nick Parlante’s codingbat exercises and rails for zombies, http://railsforzombies.org/ are simple examples.
2) teaching by emulation
We created a java concurrency class(https://sites.google.com/a/hackerdojo.com/javaconcurrency/) using a teaching by emulation technique. For a skill level sport say tennis you can look at someone better and try to emulate as a strategy for trying to improve. We are trying something similar for coding, giving a students to observe someone who is a better programmer. We have the person teaching teach through an IDE, writing code and lecturing at the same time. Students can see why and how the better programmers work. As the instructor types, he explains why and what his thinking process is. Not sure how effective this is but the students seem to enjoy it. Would like your opinion on this. Great post as usual. thanks.
Phillip,
Why not use bittorrent? It would be an interesting thing to do and would likely solve your problem.
Another option if you know your students have MIT credentials is the SIPB service xvm.mit.edu — you can get a VM running in minutes, and if there are big files you need to transfer to get a standard configuration in place, it should be lightning-fast to copy them from web.mit.edu to a virtual machine which is also hosted on MITnet.
bittorrent wont solve the problem, as it is no broadcast protocol. Bandwidth is the problem.
Distribution of the VM would be trivial; you could use Dropbox and provide the link in the course description. Alternatively, tell everyone to bring flash drives that are bog enough and distribute the VM that way (as long as 15% actually bring flash drives and are willing to share, it’ll take less than 30 minute for a class of 30 to get a copy).
BTW, thanks for the class, it’s enjoyable and informative. 🙂