Monday, October 13, 2008

Project 5

Due Date: Monday, 8 December (firm)

Group Project


Familiarity with

  • client-side JavaScript
  • DOM event handling
  • jQuery library
  • AJAX
  • mashups
  • public web APIs


In this project, you will develop a browser-based mashup (from at least two sources) of your choice, pending on instructor approval. No later than Friday, 14 November, should you have discussed your project choice with the instructor and finalized the project requirements. This project is a great opportunity for your group to get really creative. (Hint: keep it simple! As many of the examples show, some useful mashups are extremely simple.)

General requirements

For full credit, your mashup should have the following characteristics:

  • some form of persistent data
  • data and/or functionality from two or more source APIs
  • clear, useful functionality on top of the source data/functionality


Sample project

The default project, in case you prefer not to come up with your own, is a continuation of the food and health themes from Project 3. The requirements for this option, called the Recipe Sanity Check Mashup, are as follows.

  • The user enters the ingredients of a recipe into a table with a column for the ingredient name and another column for the quantity.
  • The user then presses the "check" button.
  • For each ingredient, the application then shows the following information:
    • energy in kcal for the given quantity
    • some pictures that pop up on demand
  • The application also calculates the total energy for the recipe.
Extra credit is given for the following additional functionality:
  • (Less hard) Links to health-related articles for each ingredient.
  • (Less hard) Storing data for ingredients not yet in the database.
  • (Harder) Storing, retrieving, and searching recipes.
Nonfunctional requirements:
  • Browser-based mashup in JavaScript with one or more suitable libraries such as jQuery.
  • Per-ingredient calory data comes from Google Base, where you can manually enter this information through your Google account. Recipes can be stored there as well.
  • Photos come from a source such as Flickr. You should narrow the search using suitable tags.
  • Health-related articles can come from the British NHS.

Alternative approaches

You are also welcome to build a hosted mashup using platforms such as Yahoo! Pipes, Microsoft Popfly, Ning, or IBM Mashup Center. You will need a Yahoo! account to use Pipes, or a developer account on one of the other services, and you will learn on your own how to use them.


Please send the instructor email as soon as your project is ready to be reviewed. The date your message is received counts as the submission date. Be sure to include your departmental Linux ID in your email message.

Project 4

Due Date: Wednesday, 29 October

Individual Project


Familiarity with

  • client-side JavaScript
  • DOM event handling
  • JavaScript timers
  • jQuery library


In this project, you will implement a simple browser-based timer.

Functional requirements

The timer has the following controls:

  • One two-digit display of the form 88.
  • One multi-function button.

The timer behaves as follows:

  • The timer always displays the remaining time.
  • Initially, the timer is stopped and the (remaining) time is zero.
  • If the button is pressed when the timer is stopped, the time is incremented by one up to a maximum of 99. (The button acts as an increment button.)
  • If the time is greater than zero and three seconds elapse from the most recent time the button was pressed, then the timer beeps once and starts running.
  • While running, the timer subtracts one from the time for every second that elapses.
  • If the timer is running and the button is pressed, the timer stops and the time is reset to zero. (The button acts as a cancel button.)
  • If the timer is running and the time reaches zero by itself (without the button being pressed), then the timer stops and the alarm starts beeping indefinitely two times a second.
  • If the alarm is sounding and the button is pressed, the alarm stops sounding; the timer is now stopped and the (remaining) time is zero. (The button acts as a stop button.)
  • The label of the multi-function button should indicate the current function of the button, such as increment, cancel, or stop.

Nonfunctional requirements

  • All code for dynamic client-side functionality must be provided in the form of external JavaScript source files using components from the jQuery library; embedded JavaScript within XHTML documents is not permitted. Your JavaScript code should include inline comments where appropriate.
  • All content must be valid XHTML 1.1 documents. You are advised to use a validating editor or the W3C Validation Service to ensure that your content is valid. For convenience, you may want to place a link on each document that runs the validation service on this document. Your document should state the correct document type at the top.
  • All rendering styles must be provided using a single shared valid CSS2 style sheet. There must not be any rendering styles in the documents themselves. You are advised to use a validating editor or the W3C CSS Validation Service to verify that your style sheet is valid.


Total: 10 points

  • Increment state /1
  • Counting state /1
  • Alarm state /1
  • Working timers /1
  • Error checking (limits checking in increment mode) /1
  • Changing Label on button /1
  • Visual presentation look/feel /1
  • Proper separation of document, styles, and behavior /1
  • Proper architecture in behavior part /1
  • Inline comments /1


Please send the instructor email as soon as your project is ready to be reviewed. The date your message is received counts as the submission date. Be sure to include your departmental Linux ID in your email message.

Sunday, October 12, 2008

Project 6

Due Date: Wed 29 Oct (outline); Mon 24 Nov (presentation)

Group project


In this project, you will have the opportunity to investigate a topic of interest in the area of client-side web development.

Given the remaining time of the semester and the length of each presentation, you are not expected to conduct an exhaustive study of your topic. The purpose of this project is for you to find and present some starting points for using a particular technology or discuss the utility of some general approach. Please consult with me if you have any questions.


This project consists of the following deliverables:

  • Brief outline of your presentation due on 29 October.
  • In-class presentation of your findings (10-15 minutes, followed by up to 5 minutes of questions) held on 24 November and 1 December.
    • Where appropriate, presentations should address "who/what/when/why/how" questions, discuss the significance and availability of the technology, and how it relates to competing technologies.
    • Presentations about specific software libraries, frameworks, or platforms must include a brief working demo of up to 5 minutes.
  • Accompanying materials, such as electronic copies of your visual presentation, code examples, etc.

Groups are encouraged to involve all members in the presentation. For example, two people could present separate parts of the findings, and the third could give the demo. Please choose what you believe works best for your topic.

Possible topics

Here are some possible topics:

You are encouraged to propose other topics, subject to instructor approval.


Please refer to the online submission procedure. Each team is to make exactly one submission. Any written materials should be submitted either in PDF format or through Google Docs.