NOTE: All deadlines are listed in the SCHEDULE page, *not* on this page. If you see a date listed here, please check it against the schedule page.
NOTE: This page is subject to change, and is to be considered "under construction" until the beginning of week 2 of term.
Specifications and submission instructions will be posted throughout the semester
The project is worth 35% of your mark in CPSC 310. You will work in teams of 4, or 5.
You will be building data-intensive web applications using the freely-available datasets from Data BC and/or Data Vancouver (see links below). The project deliverables are intentionally vague: it is up to you and your team to choose a dataset, load it in to your application, and display it. The TAs will be your onsite Customers and can give you feedback with respect to your project. However, you must meet the following constraints:
your user stories should relate to one of the technical requirements below.
the dataset(s) recommended are the Data BC or Data Vancouver websites. You cannot use other datasets without talking to your TA first. Adventurous students can find data to import from other Web services here: Programmable Web
the data must be parsed and persisted on the server-side of your application. This means you must not simply load the data in by hand.
the web application must display the data in a tabular format and a geographic format. The Google Maps API is highly recommended (but not mandatory) for the geographic format.
your mark will be affected by the ambition and follow-through of your project. If you do a simple project exceptionally well, you might get an A. If you do an ambitious project poorly, you will get a low mark.
The following are the categories of technical requirements that your user stories' acceptance criteria must cover:
Import and clean data - access data on a remote server, parse it, and translate it into a format useful for manipulation.
Storage - the data should persist once uploaded. You must load your data programmatically. You should have a button that an admin can use to load the data.
Data display - display the imported data in a tabular and a geographic format.
Social network integration - integrate with at least one social network (e.g. Facebook, Twitter, LinkedIn, etc.).
Access - Users need to login with a password and have some user-specific account data (profile, preferences, media, etc...)
During this project you will:
learn how to leverage APIs and cloud computing infrastructure.
work on an inter-disciplinary software development project.
work with legacy data formats.
use acceptance criteria to verify and validate your code.
use team software infrastructure to collaborate.
turn requirements into implementation.
prioritize and plan.
design and architect your system.
You must:
work with Eclipse, EGit and Github to manage your code and your team. (You may also use IntelliJ if you want -- talk to your TA about this. We recommend Eclipse if you're using GWT)
use Google Web Toolkit and Java to deliver the application online (if you wish to use another language or framework, please ask your TA).
use Google App Engine to host your application (if you wish to host your application somewhere else, please ask your TA).
The assignments and final project are worth 35% of your mark, comprised of:
(Participation credit, checked for completeness) Assignment 1: Intro to GWT
(Participation credit, checked for completeness) Assignment 2: Intro to Git and EGit
(5%) Assignment 3: Project Requirements Engineering phase. Create user stories.
(6%) Assignment 4: Project Sprint Planning. Use stories to prioritize future work.
(2%) Assignment 5: Design.
(10%) Assignment 6: Project Sprint 1. Demo to TA in lab.
(11%) Assignment 7: Project Sprint 2. Demo to TA in lab.
(1%) Project retrospective. Reflect on what you did, how your project evolved, and how the tools worked and didn’t work.
The project will be built as a series of deliverables. Initially you will work on understanding the tools you will be using; later in the semester we will begin building the final working application. The TAs will serve as your customers and your team leaders.
The first part of the term is dedicated to familiarising yourself with the technologies that will underpin the project. It's possible that the technologies we use for these first two assignments are not those you continue with -- that's fine. The concepts remain the same, and can be carried over to new technologies and tools.
Assignment 1: Web Framework
Objective: Prepare yourself to work on software development in CPSC 310 with Eclipse and GWT. This is an individual assignment.
Procedure: For this assignment please first read the document titled CPSC 310 Web Applications (see below) and then work through the GWT tutorial (see below again). The TAs will check that you've completed this assignment at the beginning of your next lab.
Mark: Participation credit.
Related material: Web Application Reading Source code for Reading
Assignment: GWT tutorial
Assignment 2: Centralised Version Control
Objective: The purpose of this assignment is to introduce you to Git and EGit.
Mark: Participation credit.
Related material: Interactive tutorial Git Cheat Sheet ProGit Reference Manual
Instructions: Git Tutorial
In this second part of the term, you will begin applying Agile methods (specifically SCRUM) for the software development of your project.
Assignment 3: Project User Stories
Objective: The purpose of this assignment is for you to perform requirements elicitation and create user stories.
Mark: 5% of your final grade.
Instructions: Assignment 3. Note: there is a pre-lab deliverable for this lab! Come to your Week 4 lab with it complete!
Assignment 4: Project Sprint Planning
Objective: The purpose of this assignment is to perform sprint planning and estimation based on user stories.
Mark: 6% of your final grade.
Assignment 5: Project Design
Objective: The purpose of this assignment is to create a design for the project using UML.
Mark: 2% of your final grade.
Reference diagrams:
Stockwatcher after the initial tutorial
Stockwatcher after the AppEngine Tutorial (note that if you didn't do the GWT-RPC tutorial, you wouldn't have the types related to the StockPriceService)
Now your planning starts to pay off! You are now going to program your project in two sprints.
Implementation tips for your project
These tips will help you with your implementation. We suggest that you read them carefully.
Assignment 6 - Implementation Sprint 1
Objective: The purpose of this assignment is to work through your sprint backlog and implement high-priority user stories for the project, and demo a working app to your Product Owner/TA in lab.
Mark: 10% of your final grade.
Assignment 7 - Implementation Sprint 2
Objective: The purpose of this assignment is to work through your second sprint by implementing all or many of the remaining user stories for the project (depending on team size), and demo a working app to your Product Owner/TA in lab. You must also complete a project retrospective, due last week of class (see Assignment 8)
Mark: The second sprint is worth 11% of your final grade. The retrospective document is worth a further 1%.
There is one last thing to do, and that is think about your experience.
Assignment 8 - Project Retrospective
Objective: The purpose of this assignment is to have you reflect on your project and think about what you learned and what you would do differently in the future.
Mark: The retrospective is worth 1% of your final grade.
Instructions are here.
Student’s Guide to SE projects
How to set up Google App Engine in Eclipse