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.