Individual Programming Assignment 3

From CS160 Spring 2013
Jump to: navigation, search

Programming assignment 3 is worth up to 35 points.

Due Date: Before Spring Break - Friday, 3/22/10, 11:59pm


For your last and final individual programming assignment, we will build on our in-class discussion of user interfaces for BART. Your task is to design and develop an mobile application for Bay Area visitors who have never taken BART before. In particular, your application should help BART newcomers people understand how to buy BART tickets, show real-time schedules, and calculate trip costs.

This assignment is more open-ended than previous programming assignments. It is part of your task to determine what the right design for such an application should be. You should go through a rapid version of the user-centered design process we have been discussing in class. Do not jump into implementation right away -- sketch/prototype your ideas first! We have already distilled key tasks for you and provide you with examples of competitive applications.


At a minimum, you need to implement features to serve the following user goals in your design:

Required User Experience Goals

  • How do I buy/use a ticket? Provide information on how the BART ticket system works.
  • Where can I go? Provide a (possibly interactive) graphical map of the BART system.
  • How much will my trip cost? Provide fare information for a BART trip, given the originating and destination stations.
  • When will the next train leave? Provide real-time train departure times for the closest station using the Location API.

Required Technical Topics

  • Working with Web Service APIs: Learn how to pull data from feeds and web service APIs. You will have to query the BART API for realtime arrival and fare data.
  • Location API: Learn how to work with GPS locations
  • XML Parsing: Learn to interpret the data you received.

Optional User Experience Goals for extra credit

The tasks above are are a starting point for your application. However, you are welcome to think of more tasks that your target users may want to accomplish. Here are some examples:

  • Find BART stations on a full map
  • Find the closest BART stations to tourist destinations (either through a directory or a search)
  • Bookmarks/history: Remember previously searched fares or trips
  • Build a trip planner: Allow users to plan trips for arbitrary stations and arbitrary times (harder)


According to the BART copyright statement: You may not use the BART logo, the BART map or any other content from the BART website without express written permission in advance from BART.

Pandav, the developers of the iBART iPhone app, have given us permission to use their custom BART map, created by Peter McClelland, for this assignment. You may only use the map for your homework assignment; you may NOT use the map in any commercial (or free) applications you develop outside of class. Here is the file in PNG format:

Pandav BART Map.png

Grading criteria

Up to 35 points will be given for a well-designed application that compiles, runs, contains the functionality as detailed in the instructions; you must also have submitted a narrated video.

Since this assignment involves more conceptual and interface design, you will be evaluated on those aspects. A well-designed application is an application that addresses concrete user needs (and only those needs), is readily understandable by its target users, and is aesthetically pleasing.

Up to 5 extra points will be awarded for innovation on your part, in addition to the requirements listed above. Some suggestions for additional functionality are listed above. You are welcome to think about others.

Example Applications

Many mobile applications already exist that serve riders of public transportation. A good number focus on BART in particular. Use them as inspiration, but keep in mind that they may serve different target users (e.g., regular commuters) and may thus make different design decisions.

Submission Instructions

  • Create a new page for this assignment like this: [[ProgrammingAssignment3-FirstName_LastName|Programming Assignment 3]]
  • Your submitted project must include the full source code as well as the executable of the working application, the video, and a writeup:
    • Create a zip file of your project tree (the top-level folder that includes the Eclipse project. Rename the zip file to (e.g.,
    • Record a narrated screencast video as you've done for your previous assignments.
    • Include a writeup of your design - what design decisions did you make and why did you make them? Include relevant screenshots and sketches / mockups of your interface.
    • Make sure you explicitly mention any extra credit options you implemented and want us to consider.
    • If there are features you designed but did not get to implement, add a section to your writeup that describes these features (with sketches / mockups / …) to get points for design work.

Add Link to Your Finished Assignment

One you are finished editing the page, add a link to it at the bottom of the page with your full name as the link text. The wiki syntax will look like this: *[[ProgrammingAssignment3-FirstName_LastName|FirstName LastName]]. Hit the edit button for the last section to see how I created the link for my name.

Links to Finished Assignments

Add your submission below this line: