CPSC 350 - Applications of Databases - Fall 2024

Assignment #9

Possible experience: +40XP (or even higher)

Due: Tuesday, Dec. 10, 11am

The DB World Tour®, stop #4 of 4

The last step of your World DB Tour project is to add a bit more functionality, polish and thoroughly debug it, and demo it to the class.

Additional functionality

Your project must contain one of two things not explicitly required for any of the previous assignments:

  1. At least a nodding pass to Neo4j, with some small and simple amount of data stored in that database and a way to manifest it on your website, or
  2. Use of the Flask session object in a way that allows multiple simultaneous users to have different experiences.

One example of the first approach would be to allow the user to link Mongo objects to one another by means of labeled graph edges, in order to express relationships among those objects. From your Mongo document display page, the UI would let the user choose a relationship type from a set of types you choose, then choose another document by name (drop-down, e.g.) Then a relationship hyperlink would be displayed on both document's pages, and allow the user to traverse the graph by clicking on object names. (Note that you can sort of do this Mongo, but only in one direction; in the Star Wars example, Princess Leia knows the contents of her own relations dictionary, but is unaware that admirers like Han might have an entry for her in their own relations dict. In Neo4j, both participants in a relationship will always be aware of it.)

One example of the second approach would be keep track of a user's browsing history, so that on the home screen or side bar they can see a list of the past pages/objects/documents they have viewed, and return to them as desired. (This must use the session object to "count" for this homework: I'm not interested in "a single global list of every user's combined browsing history.")

You do not have to go with either of these specific ideas. You can do something else with Neo4j instead, or something else with the session instead.

Demo

Tuesday Dec 10th will be D-Day (Demo Day) for both classes, in the final exam session corresponding to your class section (section 01, normally at 12:30pm, will meet at noon-2:30pm; section 02, normally at 3:30pm, will meet at 3:30pm-6pm). You should prepare a little mini walk-through of your site that takes no more than three minutes to explain. (Hint: you should practice this, and time yourself. Do not simply plan to show up on the final exam day and eject a rambling stream of consciousness as various features of your website happen to occur to you. Think it through, jot down a list of bullet points to cover, make it coherent, and explain it to your roommate or mom ahead of time to ensure it makes sense.)

After each person's three-minute demo, the entire class will be turned loose on your website for three additional minutes to add/modify/query data and to explore. (This is traditionally referred to as "the Three Minutes Of Chaos™.") If you chose option 2, above, it should be immediately obvious that your session-enabled feature(s) work because people sitting next to each other in the classroom should see different favorites lists or whatever.

Your grade for this assignment will be based half (20XP) on the functionality you create, and half (20XP) on the lucidity of your presentation and the performance of your site during the Three Minutes Of Chaos™.

Important: other stuff

  1. The order of demos will be determined by me, randomly, and will be displayed on the course website 10 minutes before the final exam period begins.
  2. You must NOT visit anyone else's website until I give the go-ahead immediately after their three-minute demo. This includes snooping on their website in the hours or days preceding the final exam period. Don't be a jerk. Violators will be publicly humiliated.
  3. You must NOT touch anything on your own website after 11am. This includes trying to sneakily improve your code in the classroom while your peers are presenting their demos. Violators will be flogged.
  4. You must NOT deliberately try to break your fellow classmates' websites by entering strange characters, violating obvious assumptions, or doing anything else mean or nasty. Violators will be hanged.
  5. You must NOT add any text to a classmate's website that includes profanity, sexual references, racial slurs, or anything else likely to be offensive. If someone's website supports images, you must NOT add any pornographic images or others likely to be offensive. You know what I'm talking about. Violators will be drawn and quartered.
  6. You MUST try at least two flavors of Ben & Jerry's ice cream on D-Day. (Non-dairy alternatives will be provided.)

Prizes

At the conclusion of all the demos, we will have an anonymous class vote on the following prizes:

There will be two such votes, one at the end of each final exam period. And yes, it is possible for a student to win more than one prize.

Turning it in

Send me an email with subject line "CPSC/DATA 350 Assignment #9 turn-in". In the body of the email, simply paste the link to your website.

Getting help

Come to office hours, or send me email with subject line "CPSC/DATA 350 Assignment #9 help!!"

Get excited

We're almost done!!