Dr. C. Titus Brown is a professor at MSU and one of my committee members. He recently sent me this blog post, entitled “IPython Notebook + Towtruck + Etherpad + Slide Drive = Win.” The article describes an ideal learning tool for students to interactively program with input from professors as well as other students. Greg Wilson, author of the post, claims that no perfect integrated teaching tool exists in today’s world. He instead proposes a combination of four existing tools, each of which I will give a moment of discussion.
IPython: a live notebook which supports plaintext, LaTeX, Python shell, html, and a variety of other media
Towtruck: a collaborative code-editing tool from Mozilla (which is still in the prototype stages); allows simultaneous updating from several users, like Google docs
Etherpad: a discussion-oriented real-time collaboration tool with a live chat feature
Slide Drive: a method of creating slides with voice-over, saved as svg for easy distribution
Wilson suggests that his ideal tool to teach programming would support all of the functions of the four tools listed above. Students would start with IPython interactive lessons which they could accompany with synced audio voiceover and automated code highlighting/execution where appropriate. If students wanted help, feedback, or to share ideas, they could share their notebook session with other users in the browser, which would feature note-taking sections and as well as text chat.
Wilson argues that such a resource for teaching would appeal to the generation of MMO games, noting that he didn’t learn how to play Homeworld in a classroom, but instead “a 14-year-old in Florida took pity on me after crushing me a few times and showed me how to maneuver my ships more efficiently.” Essentially, the combined mega-tool that Wilson proposes would facilitate casual online mentoring and learning.
Unfortunately, he suspects that development of such a tool would require a “one talented programmer year” would be required to create a usable prototype, despite the fact that all of the component pieces already exist.