# Formats for 699 Project Proposals Your project proposal (due at the beginning of each 5 week period) must contain the following (you can even use this section numbering to make it easy). For 699 students: if you're working on a team, each team member should send their own proposal (to force everyone to go through the thought process of planning), however it is important that you coordinate. For class projects, a team can submit a single proposal. 0. Title and Due Date Picking a descriptive title is suprisingly valuable. Also, be clear on the day that the "deliverables" will be due (see below). While the date should be about 5 weeks away, you might want to adjust a day or two so it doesn't conflict with an exam in another class or something. Ideally, due dates should coincide with the weekly meeting so we can discuss the results then. 0. Problem Statement Briefly describe the _problem_ that you will solve. 0. Methods Briefly describe how you intend to solve the problem. If you don't know, be sure to say so - but try to give some indication of the ideas that you have. If you have no idea, there might be an issue. In the course of doing the project, it could be that you're proposed methods won't work out, so its more likely that you will change methods over the life of the project than change the problem. That's why methods and problem are different. 0. Plan Give a rough outline of your plan of attack. This might change, but you should have at least thought about it. One way to phrase this is as a series of milestones or subgoals to the overall goals In your plan, you should be specific about what the first steps are (roughly the first week of the project). While the future might be hazy, you should have a clear picture about where to start. Also, if you are working on a team, you should discuss how you will distribute the labor. 0. Evaluation Criterion How we will decide that you've been successful? How will you decide that you've solved the problem? 0. Deliverables What (specifically) do you intend to deliver. An interactive program? A library? Documentation? A written survey? Some pictures? 0. Readings This should have two parts: first the things that you've already read to prepare the document; and second, any readings that you expect to need to read in the process of doing the project. This may not be all of the reading you do for this class. If you don't expect your project to require a lot of reading, you should say so. Give some indication of what other things you will be reading. 0. Risks Can you foresee any potential pitfalls that would prevent you from succeeding at reaching your goal? Being aware of these at the outset can help you plan around them. 0. Motivation Why are you doing this? It might just because you want something that solves the problem. Often there will be other kinds of objectives like learning something specific, or to enable some later project, or because its a research question and if you achieve the goal you can write a paper. If possible, your motivation should relate the project to the bigger picture. ## An Example Here's a somewhat contrived example, based on what I've spent the past week doing... (note: this is a one week project, so putting into the 5 week plan format is a little contrived) 0. Title and Due Date **TextWeb** due Jan 20, 2006 0. Problem Statement To create a system that will allow me to put materials on the web by putting text files into a directory. The system should be able to take text files and dynamically translate them into web pages, surrounding them with a template and applying _Blosxom_ filters (like _MarkDown_). It should also provide for directory navigation. 0. Methods Use PERL/CGI (so its compatible with _Blosxom_ plugins). Keep a tree of the texts, have the URL's "PATH_INFO" point to the file or directory to be rendered. If its a text file, first send over the template, replacing the "body" with the text. Apply _Blosxom_ plugins to the text. 0. Plan - milestone 1: serve blank pages (just the template) - milestone 2: show the text file in the template - milestone 3: support directory listings - milestone 4: applying _Blosxom_ plugins - milestone 5: deploy for class web pages, tuning as needed The first step is to read enough of a perl/cgi book and figure out how to write CGI scripts and do file I/O. By the end of the first week, I should be able to have a CGI script that can get the PATH_INFO and use it as a file name for a file to send across text to a web browser. 0. Evaluation Criteria - I'll be done when its ready to be used for making the class web - I'll know its good if I really use it for the class web - The real long term test is if it proves easier to make webs this than just hacking the html with Dreamweaver 0. Deliverables - The textweb PERL program - A sample web / or a real production web to show it off 0. Readings PERL books to learn about PERL and CGI. Web resources on CGI and PERL as well. The PERL books I have from the library are: - PERL in a Nutshell (Siever et al, O'Reilly) - CGI Programming (Guelich et al, O'Reilly) 0. Risks - Learning PERL might be a bigger endeavor - Trying to interface with _Blosxom_ plugins requires deciphering _Blosxom_ source code - It might just be better to make web pages by hand 0. Motivation I'd like to be able to just type small text files and not have to think about how to make the web look nice. In particular, using _MarkDown_ sounds attractive.