Fall 2007 - Project
The focus of this course will be a substantial project involving the design and development of a databased-driven web software application.
Your project will include all phases of the development of a web software application, including- Design: documents and figures describing the components of the system, tasks, modules, and other detail necessary to convey the important details of how the system will function.
- Implementation
- Testing: A full suite of unit, functional, and integration tests
- Report: A paper describing your design and implementation
- Presentation: An in-class presentation of your completed work, similar to how you might present a project to peers and supervisors in a professional setting.
You will choose the application that you develop. However, online stores will not be acceptable, as the textbook uses an online-store as a motivating example, If you have a job, hobby, or research project that could benefit from a web application, these efforts provide excellent inspiration. Alternatively, you can chose to implement a scaled-down version of a popular web site: interesting possibilities might include eBay, Craigslist, LinkedIn or FaceBook. Google Mash-ups are also possible, as long as they include substantial database and server components on your part.
I also have a couple of suggestions that meet immediate needs here in our department at Towson:- Online course management and presentation System: Towson University provides Blackboard for management of course information. This tool lets instructors create web pages, provide information, and manage grades on line. Students can access course pages, check grades, and perform relevant tasks. Unfortunately, Blackboard is not particularly flexible or customizable. Moodle is an open-source alternative.Your challenge is to build your own version of a subset of Blackboard's functionality
- A Tech Report database: University Computer Science departments often make technical reports available online. A technical report system would allow users to search for papers by criteria such as date, author, and research group. Details from each paper including an abstract, title, and links to the full paper (PDF format) should be provided. An administrative interface for faculty would be used to submit new papers to the database. All papers should be given a number of the form "YYYY-xxx", where "YYYY" is the year (4 digits) and "xxx" is a number that starts with 01 for the first paper of the year and increments for each subsequent paper.
Your project might also include exploration of other issues related to web software development, including (but not limited to) interfaces for mobile devices, deployment, security, and comparative evaluation of development frameworks. If you are interested in any of these areas, please feel free to propose a project, or to speak to me if you would like to discuss possibilities.
Appropriately defining the functionality and scope of this project will be an important part of the project. As projects that are too modest will not be considered challenging enough to deserve the best grades, you should try to be ambitious. However, excessively ambitious projects may be difficult - if not impossible - to complete in a timely manner. In the tradition of Agile programming, you are encouraged to take an iterative approach, starting from a modest base and working towards a more fully-functional system.
The schedule of intermediate deliverables given below is designed to help keep you on track towards successful completion of the project. If you have any concerns during the semester, including difficulties in implementation, questions about the appropriate level of complexity, or uncertainty about designs, please feel free to talk to me at any time.
Subject to my approval, you may choose the implementation platform for your project. As Ruby on Rails is the platform that we will be using during the semester, it is the obvious first-choice, but other web frameworks will be considered. If you wish to use something other than Ruby on Rails, please indicate your preference in your initial proposal and speak to me as soon as possible.
The project can be completed individually, or in groups of up to three students. If you wish to work with a group, please indicate the members of your group in the initial proposal, which is due on September 18. Please keep in mind that the expectations for the project scale with the size of the group: a group of n students will be expected to accomplish n times what a single student will be expected to accomplish.
If you work in a group, please expect to put serious effort into planning, coordination, and communication. Teamwork can be hard: you should clearly identify who will do what by when. At the end of the semester, I will ask you to provide a report at the end of the semester detailing each team member's contributions. All team members must contribute to the final writeup. It is your responsibility to make sure that your team works productively. Please do not come to me one week before the final presentations with a tale of sorrow about how your teammates have not done any work - by then it will be too late. If you have difficulties with your team, please let me know as soon as possible. Unless there are clear difficulties, all members of the team will receive the same grade.
The project will have several phases, with details and due dates as follows:
- Proposal: Due September 18
- Design: Due October 16
- Progress Report: Due November 13
- Presentations: December 11
- Paper: Due December 17
Proposal: due September 18
You will prepare a proposal describing the problem that you are going to address, its importance and your plan for addressing it. Using techniques described in class, you should describe:
- The overall goal of the system
- Major classes of objects that will be needed
- Uses cases: which types of user will use the system, and which tasks will be involved
- Other necessary features, including web-services, authentication, security, etc.
If you are proposing to implement functionality similar to that of an existing web site, please indicate which site. Also, if you are planning on using a platform other than Ruby on Rails, please indicate which one you will be using
.The proposal is your contract with me. I will review it to make sure that what you have proposed is adequate without being overly ambitious. I may suggest changes, or revisions as necessary. I also reserve the right to request that you resubmit a new proposal, if your original proposal is inappropriate.
The proposal is due on September 18, but I encourage you to talk to me before then to discuss plans and ideas. This will help you avoid going off-track.
The proposal should be a maximum of two pages in length, including figures.
Design Due October 16
Your design report will be a more fully-developed version of the initial proposal, including more detailed versions of class diagrams, modules, use cases, other components included in the initial proposal, and any other details that might clarify your design.
The goal of this document should be to provide a team of competent developers with the information that they would need to successfully complete your project.
If your project undergoes substantial change between the submission of the original proposal and the submission of this document, any changes should be described and justified.
Note that you need not and should not wait until after this point to begin implementing your project. If you have written any code at this point, code samples and/or working screen shots can be included.
Progress Report Due November 13
A 1-2 page progress report will be due on November 13. This should tell me what you have done, how things are going, if you have had any difficulties, where you might need help, and anything else I might need to help you make your project a success.
As with the design proposal, this progress report should include descriptions of major changes and screen shots of working functionality if available.
The goal of this project report is to help keep your project on track. You are welcome to talk to me about your progress before or after the progress report is due. I strongly encourage you to do so, particularly if you are having difficulties.Don't wait for the last minute!
Presentations December 11
Each team will present their projects in class. These will be conference-style presentations with slides, demos, and other materials designed to convey your points to others.
We will discuss strategies for effective presentations as these dates draw near.
If your work is done in a team, all team members should participate in the preparation of the presentation materials, and in giving the presentation itself.
Final Paper Due December 18
The project final report will be an 8-10 page paper in the ACM SIGCHI conference publications format. This paper should include an abstract, introduction, description of the major components of your system, screen shots, and other information necessary to summarize what you've done, and how you've done it. Class diagrams and other components from the design proposals should be included as appropriate.
