Jim's
Tutorials

Spring 2009
course
navigation

Tutorial Proposal Form - Spring 09

---------------------------------------------- --- Tutorial proposal form --- --- for students working with Jim Mahoney --- ---------------------------------------------- Basic guidelines : A typical tutorial is 3 credits : one class per week and 8 hours or so of work. Tutorials are usually for juniors or seniors working on advanced or interdisplinary work related to computers for which no corresponding course exists. Group tutorials are also possible; ask around and come talk to me. The best way to submit this form is to 1) edit this file to include your answers, 2) email it to mahoney@marlboro.edu, and 3) discuss it with me in person. Please do come talk to me about your specific situation in any case. Your name : Ryan Dolan Tutorial title : HTTP and BitTorrent: Protocols and Servers Desired credits : 3 Credits Tutorial description: (appropriate for the registrar's permanent record) An exploration of Web servers and the BitTorrent protocol, culminating in the integration of the HTTP and BitTorrent protocols into a Python program. Also, an exploration of the Domain Name System and its potential application for organizing BitTorrent files. What exactly do you want to study? Be as explicit as you can, including a schedule if possible. I want to find a working, open-source Python HTTP server. Then I would like to explore the BitTorrent protocol through an open-source Python-based tracker and client. Finally, I would like to implement both protocols into a single program, and design a way for the BitTorrent protocol to have some method of organization similar to the Domain Name System. The final program will have documentation oriented to a non-technical user, explaining the concepts behind the program. First - Find, install, and play with a simple Python HTTP server. Second - Find an open-source Python BitTorrent tracker and explore the API. Third - Design a means for organizing BitTorrent files with something like a Distributed Domain Name System. Fourth - Attempt to implement this Domain Name System in a Python BitTorrent Tracker program. Fourth - Integrate a basic BitTorrent client into the Torrent tracker program. Fifth - Combine the Torrent tracker/client program and the HTTP server into a single program that can distribute files over HTTP and BitTorrent. Sixth - Find or design a program which can test whether there is a corresponding torrent file for a specific web file, and download it over HTTP or BitTorrent. How does this relate to your plan and/or other course work? My independent project focuses on the virtue of opening oneself before other people, and these programs are intended to allow any computer user to use their computer to publish their own web files to others, and to allow users to join in collectively hosting other people's websites, allowing a more collective participation in hosting web files. What resources have you identified? (e.g. books, articles, websites, experience, ...) I will use the TCP/IP Guide for understanding HTTP, the Domain Name System, and general networking concepts. I will research for the open-source Python programs I will use as the semester progresses. What will be the gradeable products, and on what schedule? (e.g. projects, programs, papers, tests, ...) The final project will be 10% of my Plan work. It will include a functional program or set of programs with documentation designed for non-technical users. This program will be graded by Jim Mahoney and presented at my Orals, with Jim Mahoney explaining his grading of the project.