[an error occurred while processing this directive]
Problem Set 9: Making A Dynamic Web Application
Checklist:
- Ideas and Team Requests
- Project Descriptions
- Design Review
- Presentations and Reports
- 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.
Purpose
- Learn to build a software project from start to finish.
- Gain experience making web applications.
- Make a useful and interesting web site. I hope all groups will
produce web sites that will continue to be used and developed after the
course ends.
Assignment
|
Problem: Make an interesting dynamic web site.
|
Deliverables
- Ideas and Team Requests: 20 November (email by noon)
- Design Review Scheduling: 20 November (after class)
- Project Descriptions: 27 November (email by 11:59pm)
- Design Review Meeting: as scheduled
- Presentation Requests: 4 December (email by 11:59pm)
- Presentation (optional): 6 December (send zip file before Noon)
- or Report Due: 11 December (Noon)
- Peer Evaluations Due: with Project or Presentation
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.
Ideas
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:
- Assassins
- Bored in C'ville
- Cavalier Daily News Discussion
- Club Baseball — news, scores, schedules, stats, and rosters
- Crossing Words — puzzle-generating website
- Flash Card Builder for Pictoral Languages
- Get Rich Casino
- Hoo Knows Where To Live — easy-to-compare housing options
- HoosGotIt — Your University Trading Service
- HoosHookingUp?
- Hoos Trading Books — student-run bookstore
- Hoos Where? — alumni connection site
- Marching Band
- Meet a Hoo
- Online Collaborative Scheduling System
- Test Your Cognitive Abilities
- The Adventure Nexus — interest and hobby networking site
- University of Virginia's Pre-Medical Applicants
- UVA Community Forum
- Virginia Women's Chorus Forum
- What Wahoos Watch
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:
- Recipe Database.
- Not Enough: Your website allows people to upload recipes,
rate recipes, and find all recipes that use a given ingredient.
(This is too close to PS8: upload restaurants, rate restaurants,
sort restaurants by cuisine type, etc.)
- 1 Challenging Computation: Your website allows people to
upload recipes, and each recipe has a list of ingredients. People
can then go to the website and list the ingredients they have in
their kitchen currently, and you'll list all meals for which they
already have all of the ingredients.
- Extension: Find all meals for which they are only missing
one ingredient, or find sets of three meals (each set has one
breakfast, one lunch, one dinner) that could be made.
- 1 Challenging Computation: Your website allows people to
upload recipes, but each recipe has a list of ingredients with
associated values (like "price" or "calories"). People can visit
your website and give a maximum budget ("amount in wallet" or
"calorie diet limit") and you'll list all recipe combinations
they could make within that budget (e.g., "with that money you
could make Chicken Dish #1 and Cake #3").
- Extension: As above, when listing combinations list on
breakfast, one lunch and one dinner.
- Bar Crawl.
- Not Enough: Your website allows people to upload bars, rate
bars, and find all bars that serve a certain kind of drink. (This
is too close to PS8: upload restaurants, rate restaurants, sort
restaurants by cuisine type, etc.)
- 1 Challenging Computation: Your website allows people to
select a number of listed bars and finds the shortest path that
visits all of them. (You can use the Google Maps API to find the
shortest path between any two bars. How could you chain that to
find the shortest path that visits all of them?)
- 1 Challenging Computation: Your website allows people to
upload bars and indicate some drinks and drink prices for each
bar (e.g., "wine, $5" "beer, $3" at Bar #1, but "wine, $7" at Bar
#2). People can visit your website and list how much money they
have. You output a way for them to visit as few bars as possible
but have as many different types of drinks as possible.
- 1 Challenging Computation: As before, but this time the
visitors list the drinks they want to have and you output both
the "minimal walking" tour that gets all those drinks and also
the "minimal money" tour that gets all those drinks (those two
answers are likely to be different).
- Message Board.
- Not Enough: Your website allows people to upload stories (or
pictures, etc.), rate stories, and find all of the top-rated
stories. (This is too close to PS8.)
- 1 Challenging Computation: Your website recommends
news stories from among those you haven't seen yet by finding
other people who have liked the same stories you have and then
finding other stories they have liked.
(This is basically how Amazon's "you might also
like" and Pandora's "try this music" gizmos work.)
- Extension: Your website also recommends new friends to you
by finding friends who have liked the same stories you have and
disliked the same stories you have. (This same idea works for a
"take this survey to find out which major you should choose"
site or a dating site, etc.)
- FourSquare / Humans-v-Zombies Site.
- Not Enough: Your website allows peopel to indicate
locations (e.g., "by the Rotunda", "on the Corner") and indicate
their presence at those locations. Visitors can see who has spent
the longest at each location, or get a current map of all people
now. (This is too close to PS8.)
- 1 Challenging Computation: Not only can visitors log time at a
location, but visitors can request that the site find for them
the closest location where they would have to the least amount
of time to become the mayor of that location (find some way to
combine or limit time and distance).
- 1 Challenging Computation: Not only can visitors indicate
whether they are humans or zombies, but visitors can request that
the site find for them the closest that is far from all zombies
(if human) or the path they should take from location to location
to catch the most humans in the shortest time (if zombie).
- Auction/Swap Site.
- Not Enough: Your website allows peopel to upload items
for sale, give them prices, rate sellers, find all items for sale
under five dollars. (This is too close to PS8.)
- 1 Challenging Computation: Your website implements a full
auction, as in PS5. You can only bid on items that exist, bids
must be strictly increasing, you must have enough money, and
after a time period the item is "purchased" by the highest
bidder.
- 1 Challenging Computation: People put various items up for
swap and various wishlists (e.g., "have textbook", "have lamp",
"want bike") and your website automatically figures out the set
of swaps that make everyone the most happy (e.g., "Alice gives
the lamp to Bob in exchange for the Bike, then Claire gives ...").
- Volunteer Coordination.
- Not Enough: Your website allows people to upload volunteer
opportunities (or houses on fire) as well to indicate people who
are volunteers (or firefighters), each a particular set of skills
(e.g., trash collection, ambulance driver). You can view and sort
all of the people and opportunities. (This is too close to PS8.)
- 1 Challenging Computation: In addition, each volunteer
opportunity (or fire, or whatever) has a list of skills needed to
handle it (e.g., needs "cleanup", "cooking", "management") and
each person has a set of skills. Your website finds the optimal
way to allocate volunteers to tasks so that the most tasks are
handled.
- Extension: Each volunteer activity has a "payout" or
"benefit". Rather than just serving the greatest number of
activities, your website maximizes societal benefit.
- Extension: Each volunteer activity has a location and a
duration. A person cannot be in two places at once. Your
website gives each volunteer a schedule of places to be so that
the most opportunities are served. (Bonus: People do not travel
at the speed of light, but instead take time to get there.)
In addition, you can find a challenging use of computation by incorporating
something from a previous non-trivial Problem Set. Example:
- PS1 Challenging Computation. Visitors to your website can upload
tile photos and big photos (or they upload URLs to such images), and
you create photomosaics for them.
- PS2 Challenging Computation. Visitors to your website can upload
essays they have written or "gotten from friends", and you detect
cheating by finding which essays are too close (i.e.,
have the greatest alignment).
- PS3 Challenging Computation. Visitors to your website can upload
grammar fragments, color choices, backdrops, etc., and you make
l-system fractals when are displayed in a gallery and voted upon.
- PS4 Challenging Computation. You make a website where people
can upload text that has been encrypted with a Ceaser Cipher (etc.) and
you automatically decrypt it (Google for many examples of such
websites). The more cryptography you handle, the more this counts for.
- PS5 Challenging Computation. See "auction site" above.
- PS6 Challenging Computation. You make a multi-player website where
people can explore an interactive world and "run into each other" at
locations. (Or you make a "Fantasy Football" / "Pokemon Battle" sort of
site where visitors have budgets, buy players / pokemon, and then the
stats change over time accord to some rules.)
- PS7 Challenging Computation. You make a website like the Udacity
interface, in which people watch a video and then enter some Python
code to answer quiz questions. You interpret their code and see if they
got things right or not, etc.
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:
- The name of your team. You can keep your assigned name, or select a
new one.
- A list of your team members by UVA ID (e.g., mst3k). CC'ing them on
the email is not enough. You must list all team members in the description
document.
- The dynamic web site you propose to build. It should make it clear
what a visitor to your web site will be able to do. This should be at least
two paragraphs long.
- A plan for how you will build it. The plan should include all of these
components:
- What work will be done. Notably, this should include all
programming: what key functions will be written? What will their input
and output be?
- How the work will be divided among your team members.
- A schedule: who will do what when. Each team member should commit
to a minimum of 20 hours outside of class to work on the
project; stronger projects will require more time. Be sure to include
support in your schedule for half-way milestones and slipped deadlines.
- A testing strategy. It is important to have a strategy that
will allow you to start testing pieces as you develop your site.
Expecting different pieces of functionality written by different team
members to magically work together at the last minute is a recipe for
disaster.
You want to have ambitious goals for your site, but be able to get
something working even if you don't accomplish them all. The plan should
typically be at least half a page long, with each of the four points above
meriting at least one paragraph.
- A suggested grading contract. Complete this sentence: "We believe
we will deserve an A on this project if we can demonstrate ..." We may not
agree to your contract suggestion, but it will give us a chance to tell you
if your expectations are very different from ours. The suggested clause
should be more than "if we do all the work described above" — you
must make it clear to me which course concepts will be involved in your
project and where they will be involved. An A-grade project typically
involves the strong use of at least two key course concepts and the weak
use of at least one other. Projects should not just be PS8 but
with new content (e.g., course reviews instead of restaurant reviews).
- A list of questions you have. These questions should clearly
identify anything you will need to do to build your site that you don't
know how to do yet.
- The team member sending the document must CC every other member of
the team.
- Your document should be in plain text format, HTML or PDF — but
not DOC or DOCX. You will lose points if you turn in a DOC or DOCX
file.
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:
- You should introduce your team and indicate everyone on it. (Your
entire team must be present.)
- You should briefly describe the theme or purpose of your site.
- You should demonstrate all of the key functionality of your site.
- You should make explicit any major portions of your site that
demonstrate key course concepts (e.g., "the whole site is a
database-backed dynamic web site written in Python, but we also have this
auction part over here ...").
- You should make explicit any course concepts that you covered
more minorly (e.g., testing, object-oriented class hierarchies, list
filtering).
- You should indicate the role of each team member. That is, you
should explain who did what.
- You should indicate what was difficult and what was easy.
- Each team member must speak for at least thirty seconds. All team
members must stand up at the front during the entire presentation. Beyond
that, you can divide up the speaking and mouse-clicking duties any way
you like.
- Speakers should speak loudly and clearly while making eye contact
with the audience.
- You may do anything else you like (e.g., pass out fliers, call for
audience participation) as long as you stay under the time limit. I will
email the time limit once it has been determined.
- I may ask your team a question or two at the end.
Further notes:
- You will have a generic computer with a browser (e.g., Firefox)
open to your website.
- There may be some slop in the schedule. If your team would be
interested in having extra time if extra time were to become available,
please indicate that in your email.
- See above for YouTube videos of presentations from past years.
Teams that do not do a presentation instead submit a final project
report containing:
- a short text description of your site
- the URL for your project site
- a URL to a zip file containing all the files in your project site
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.
Reports
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:
- 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.
- 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.
- 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.
- 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?
- 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:
- Give your presentation on the appropriate day, as per the
directions above
- Complete a Peer
Evaluation Survey for each member of your group (including yourself)
by the end of that same day.
- Complete a PS9 Final
Turn In
by the end of that same day.
- You're done.
Final Checklist: Report
If you completed a Report, you
must:
Recommended Reading and Browsing
[an error occurred while processing this directive]