University of Virginia, Department of Computer Science
cs150: Computer Science — Spring 2007
cs150  Spring 2007
Problem Set 9:
Make a Dynamic Web Application
Out: 4 April
Various Deliverables described below

Collaboration Policy - Read Carefully

For this problem set, you will work in assigned teams. Unlike in previous problem sets, you should divide work among your group members in the most efficient way. It is not necessary for everyone in the group to work together on all parts of the assignment, but every student should contribute equally to the work. All students should also contribute to the overall design of your site.

You are encouraged to discuss this assignment with other students in the class and ask and provide help in useful ways. You are also encouraged to seek help from people outside the class on the content, use and implementation of your site.

You may consult any outside resources you wish including books, papers, web sites and people. You may use the code from the example sites in any way you see fit. You may also incorporate any open source code you find into your project so long as you follow the licensing rules for that code, include its copyright information and credit its authors. If you use resources other than the class materials, indicate what you used along with your answer.



Problem: Make an interesting dynamic web site.


Your site must be more interesting than just unchanging text pages — it must involve computation. Most sites will also involve a database (but it is not required if you think of a computationally interesting site that does not). Your site can be anything you want (so long as it is consistent with the University's policy on public computing resources). You may incorporate anything from previous problems sets you want into your site, as well as any other open source code you find (so long as your use of it is consistent with the provider's distribution license).

Your site should be as accessible to all web users. That means it should be obvious to any visitor what your site is for and how to use it. You site should be designed so it works well even for for visitors who have slow network connections (that is, its function should not depend on unnecessarily large images), small monitors with poor color contrast. You should even strive to make your site accessible to the blind (that is, it should be possible to use your site using a text-only browser).

If you are having a hard time thinking of a good idea for your site, you may want to look over projects from previous classes:

Note that expectations are much higher for this year's class than in previous years: students in previous years did not do a previous assignment programming in Python, did not have the course book, and according to Neil De Grasse Tyson's essay we should expect this year's students to be 4% better, so your web site projects should be even more impressive.

Idea and Team Requests

You will be assigned teams for this assignment, but I may honor team requests. You must send these by email before Monday, 9 April at 11:59pm. The subject line on your email should be "PS9 Request". If your team has agreed to work together, your team should send exactly one email, with cc:'s to all team members.

In order to increase the chances I honor your request, your email should not only list the team members but should give a brief description of the web site you have agreed as a group to build. Students who do not request teams, will be arbitrarily grouped into teams or three or four.

The size of your team may be between one and fifty students, but the impressiveness of the web site you intend to build should scale as the square root of the number of people on your team (e.g., a team of four students should build something twice as impressive as a team of one student working alone). If you have a large team, you will need to figure out carefully how to divide your project into smaller, independent pieces. The ideal team size in most cases will be three or four students. More than that, and you spend too much time on management issues. Less than that, and it is hard to build a sufficiently interesting web application.


Instead of lab hours for PS9, each team will be assigned an assistant coach as a consultant. You should view your consultant as a highly paid expert (you needn't actually pay your consultant, of course, but giving them Bodo's or Krispy Kreme's is encouraged) who can help a limited amount with your project.

Do not place unreasonable demands on your consultant — they are students too with their own assignments and exams to worry about. You should expect have at most two short meetings with your consultant. Use those meetings wisely to bounce design ideas off your consultant and to work out the trickiest programming issues for your site. You should definitely not expect your consultant to write any of the code for you.

In addition to your consultant, you may, of course, take advantage of Dave's office hours and schedule meetings with him, in addition to the required design review meetings.

Project Descriptions

Due: Monday, 16 April

Turn in a document that describes:

Project Meetings

Will be scheduled individually for week for 16 April.

In class on Monday, 16 April, each team will sign up for a time slot for a design review project meeting. All team members must attend the design review, so it is important that you select a time all members can attend.

At the design review, you will describe your ideas for what your site will do and how you will build it. You will also be expected to show your progress so far. We will discuss the questions on your Proposal document and how you are dividing the work among your team.

The design review does not need to be a formal presentation, but you should prepare for it to make it as useful as possible. In particular, you should come to the design review knowing what you think the toughest problem for your project will be and having some preliminary ideas how to solve it.

Presentations and Reports

The final project deliverable is either a presentation (on the last day of class) or a report (turned in before 5pm on Wednesday, 2 May). In order to be eligible for the presentation option, your team must send me an email before 11:59pm on Friday, 27 April that contains the URL for your project site. Some essential functionality of your project must be working at that URL when you send the email to be eligibal for the presentation.

In class on Monday, 30 April, teams that qualify for the presentation option will have an opportunity to present and demonstrate your web site. The time for each presentation will be alloted depending on the number of qualifying teams. To be eligible to present your site, you must send me an email containing a zip file containing all the files for your site before 10:55am on Monday, 30 April.

Teams that do not do a presentation instead submit a final project report containing:

If you present your site, you do not need to turn in a paper project report.

Recommended Reading and Browsing