cs1120  Fall 2012

cs1120: Introduction to Computing: Explorations in Language, Logic, and Machines

Westley Weimer

Email Address

Class Meetings
Tuesdays and Thursdays, 3:30-4:45pm in Olsson 011
Office & Lab Hours
Mo 15:00-17:00 Stacks (J, L)
Mo 17:00-19:00 Olsson 001 (C, M)
Tu 13:00-15:00 Stacks (D, M)
We Noon-13:00 Rice 423 (Weimer)
We 13:00-14:00 Olsson 001 (C, J, M)
We 14:00-16:00 Olsson 001 (C, J, L)
We 16:00-17:00 Olsson 001 (C)
Fr 13:30-15:30 Olsson 001 (C, M, J)
Su 13:00-15:00 Olsson 001 (C, L)
Su 15:00-17:00 Olsson 001 (C, D)
Su 17:00-19:00 Olsson 001 (D, J)

Located in Thornton Stacks
or Olsson 001
or Rice 423 (We Noon-13:00)

Problem Set 9: Making A Dynamic Web Application

  1. Ideas and Team Requests
  2. Project Descriptions
  3. Design Review
  4. Presentations and Reports
  5. Peer Evaluations and other Surveys
Collaboration Policy - Read Carefully

For this problem set, you will work in assigned teams (you may request teams, see below). 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) or 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) or to users with iPhones or similar PDAs.


If you are having a hard time thinking of a good idea for your site, you may want to consider these titles from previous years: In addition, many presentations from CS 1120 in 2009 and 2010 are available on YouTube for inspiration. Turn up the volume on your end so that you can hear them. Watching the first few minutes of each one is a good way to get a feel for possibilities — then you might watch the one that interests you most in its entirety.

Another approach for finding ideas is to consider websites that you enjoy using. Could you make something similar to eBay, Flickr, Craigslist, Blogger, IMDb, or Facebook?

How Much Work: Challenging Computation

We are looking for significant, challenging uses of computation in your dynamic website. The number of challenging uses of computation I expect is roughly given by 1 + sqrt(team_size). Example:
Team Size # Challenging Computations
1 (Solo) 2
2 2 + (1 Extension)
3 3
4 3 + (1 Extension)
5 4
6 4 + (1 Extension)
... ...
Typically, a challenging use of computation goes "one significant step beyond" what was in PS8. Here is a list of examples: In addition, you can find a challenging use of computation by incorporating something from a previous non-trivial Problem Set. Example: Hopefully this has conveyed the basic idea. One unit of "challenging computation" is basically equal to "the tough part of one problem set". Simply sorting a list of numbes or finding the greatest element in a list of numbers do not qualify.

(Reminder: Nothing prevents you from doing part of your website in Python and part of it in Java! Use the best tool for the job.)

(Reminder: Nothing prevents you from combining ideas or changing the themes. For example, your King's Dominion Visit Planner site might help people coordinate carpools to the amusement park (like "volunteer coordination" above) and then help people find the shortest path to visit every different type of ride once they get there (like "bar crawl" above).)

Making A Pretty Website

A number of video tutorials are available on how to make your webserver look more professional. We grade primarily on functionality, but many students are interested in artistic merit.

Team Requests

You will be assigned teams for this assignment, but I may honor team requests. You must send these by email. 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. If you want to work alone, submit a team request for only yourself.

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.

Project Descriptions

By midnight, email to cs1120-staff@cs.virginia.edu a document that describes:

Design Reviews

After class one day (see calendar above), 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 or a report (reports are due about a week after presentations are due). In order to be eligible for the presentation option, your team must send me an email before 11:59pm on the appropriate day (see calendary above) 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 eligible for the presentation.

In the assigned room from 5pm to at most 8pm (see calendar above), teams that qualify for the presentation option will have an opportunity to present and demonstrate their web sites. The time for each presentation will be alloted depending on the number of qualifying teams (but will probably be about five minutes per team). To be eligible to present your site, you must send me an email containing a zip file containing all the files for your site by the appropriate day (see calendar above). The subject of the email should be "PS9 Team N", where N is your team name. You should also send me usernames and logins for your site: I will have them available in another window for copy-and-paste when you give the presentation. You can change your site between when you send the email and when you do the presentation, but you should be very wary. Your presentation should include the following elements:

Further notes:

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.

Minor extra credit (+2 points on PS9) will be offered to students who attend the (optional) Presentation Day to see the presentations.


Unless you gave a presentation, your team should prepare a written report. (In which case, nothing is due on the Presentation day and your materials are due on the Report day.) It should contain the following sections:
  1. Introduction. What is the theme or purpose of your website? Briefly, how does it work? Who would benefit from it? Why is it better than, or equal to, what is currently available? Sell me on your idea.
  2. Use Cases. Walk through indicative usage patterns for your website. What do you expect a user to do? For each one, include screenshots showing all of the steps. You should include enough screenshots to show off all of your hard work. If you want to draw attention to a particular portion of the screenshot, mark up the screenshot (e.g., as the red circles in the PS8 screenshots). For most groups there will be at least two such use cases: one for each CS 1120 concept. Notably, you should document everything a user could do on your site: if you don't document it, I won't know about it and won't give you credit for it.
  3. Implementation and Concepts. Describe the computing, coding, or stylistic work that produced your final website. Which concepts and topics from the course have you incorporated into your website? Include code listings for non-trivial new code that you wrote. For example, you need not list changes to constants.py or other minor cosmetic changes. You should, however, list any new database interactions, or any code that shows course concepts (e.g., recursion, list filtering, auction logic, etc.). If your code sits in the middle of existing PS8 code, do not bother showing the PS8 code. If PS8 code sits in the middle of your code, gray it out or bold your code or somesuch. In any event, it should be clear what was your work and what was already there. Code you list should be documented. In addition, every piece of code you list must also be described in English in the report. If your code does not work perfectly, so state, and describe what should happen and how you would solve it.
  4. Project Management. Describe your meeting frequency and structure. How was the work divided up? Who was responsible for what? How were the tests devised? Does your project pass all of your tests? How did you integrate separate pieces written by separate people? About how long did each person work on each task?
  5. Conclusion. Are you pleased with the result? What worked well and what worked poorly? What was easy? What was harder than you thought? Did you stick to your initial schedule? If you were going to do it over again, what would you change? What advice would you give to people doing CS 1120 projects in the future? Recalling your grading contract from your Project Description, what grade do you feel you deserve?
There is no length limit either way on your report. I am more concerned with the answers to the questions posed above than with filler text. Answer everything above fully and then stop. You will lose points for spelling or grammatical errors in your report.

Your report should be a turned in as a PDF file. You will lose points if you turn in a DOC or DOCX file.

Peer Evaluations

To prevent freeloading, part of your grade will be determined by peer evaluation. Peer evaluations can be completed via the automatic adjudicator, and must be completed at or before the time you turn in your report or make your presentation.

You must submit an evaluation of every member of your group, including yourself.

Group work can be tricky. For just one example of potential pitfalls, check out this recent journal article on gender biases in interpersonal communication. If your group has friction, please let me know and we can try to work things out.

Final Checklist: Presentation

If you applied for and received permission to do a Presentation, you must:

Final Checklist: Report

If you completed a Report, you must:

Recommended Reading and Browsing

cs1120: Computer Science
University of Virginia
Using these Materials