COMP 303/CPSC 448 Fall 2010

Project Overview

Goal: A Software for a Cause Application for Cystic Fibrosis Canada*

You will be building a new application for the cystic fibrosis community in Canada to list their goals and track progress over time. This application will be used for daily life and big milestones, such as transplantation. Also, to enable social interaction among community members, the application will be deployed on Facebook so they can share and discuss their goals. Before reading further, view the following short videos to familiarize yourself with this project:

* Cystic Fibrosis Canada is currently known as the Canadian Cystic Fibrosis Foundation. In February 2011, the name and logo change will become official. As the anticipated launch of this application will coincide with the change, the new name and logo will be used for this project.

Background: Software for a Cause

Software for a Cause is a project that explores how student teams can benefit from working on distributed open source software projects that are “for a cause”. Figure 1 below is an overview of all the stakeholders in Software for a Cause. The first group is the end users of the application. We are trying to help them by building them a useful application that is applicable to their cause. The second group is the educators and students who will build the application and learn software engineering practices in a distributed environment. Finally, IBM fits into the picture by providing the tools needed for development.

Figure 1. Software for a Cause overview

Figure 2 outlines the Software for a Cause 2010 instance. This year teams from University of British Columbia and McGill University will be building a Web Application for Cystic Fibrosis Canada. In particular, the project will be deployed as a Facebook application that is hosted on Google App Engine. Student teams will be using Rational Team Concert as their Software IDE because it has a number of built-in tools for collaborative software development. The Rational Team Concert backend and source code will be hosted at Marist college in Poughkeepsie New York.

Figure 2. Software for a Cause Fall 2010

Ultimately, the final project will be released under an open source license (EPL) so that students and interested software developers can continute to contribute and maintain the project well after the semester is over.

Background: Cystic Fibrosis

Cystic fibrosis is the most common, fatal genetic disease affecting Canadian children and young adults. Cystic fibrosis is a multi-organ disease, primarily affecting the lungs and digestive system. A build up of thick mucus in the lungs causes severe breathing problems. Thick mucus also blocks the ducts of the pancreas, preventing enzymes from reaching the intestines to digest food. There is no cure, and ultimately, most cystic fibrosis deaths are due to lung disease. Research has shown that certain bacteria (which are highly transmissible between persons with cystic fibrosis) can be very harmful – even deadly – to persons with cystic fibrosis. Therefore, it is difficult for individuals with cystic fibrosis to connect and interact with each other in person. Cystic Fibrosis Canada Cystic Fibrosis Canada is a Canada-wide health charity, with 50 volunteer chapters, that funds vital cystic fibrosis research and care.
The organization’s mandate is to help individuals with cystic fibrosis, principally by funding cystic fibrosis research and by supporting high quality clinical and transplant care.

For more information visit

The Application : Requirements and Challenges

Cystic Fibrosis Canada was presented with a number of application ideas and the one that stood out for them was the idea of a CF Goal Poster. The application will allow users to list their goals, track their progress and share their progress with others to help motivate them accomplish the goals they have set out.

Application Challenges :
After some discussion they had laid out these requirements for the application :
  • Users must list their goals and track their progress using checklists
  • The checklists must be rendered into infographics
  • The infographics must be geared towards a larger audience, so friends and family of people with CF can use it
  • It must be a Facebook application
  • It should be responsive to user commands
  • The application must be completely FREE to operate.
These requirements present a number of challenges and constraints to the architecture of the application you will be building. The most difficult constraint is that you cannot use a database to store infographics because that will incur costs.

Creating a checklist application is not a novel concept. There are already a number of existing web-based checklist applications, such as 43 Things,Ta-da list, My 50, and Super Viva. You should look to these websites for inspiration and ideas on how to design the checklist portion of your application. What makes this project exciting is that you must design and implement an infrastructure for combining simple checklists with stunning infographics.  For example, a simple infographic could be a checklist beside a pie chart showing completed vs. uncompleted goals. As the user ticks off items, the pie chart updates.To inspire you to think of more interesting infographics than a pie chart, below is an infographic taken from here which maps the web trends of 2009 as a Tokyo subway map. The other infographic taken from here is a graphical representation of how Starbucks and McDonald's are proliferating across the globe

In addition to creating an application for Cystic Fibrosis Canada, you will also have to interact with them directly at different points in your project to get their feedback on your progress and ideas.

Team Challenges :

This project will require you to work on a large distributed team. Some of the challenges associated with this are :

  • Team management
  • Keeping regular communication with remote and co-located team members
  • Distribution of work
  • Decision making
  • Ensuring all team members understand the application
  • Designing intuitive interfaces
  • Establishing good coding habits across the entire team
  • Conflict resolution (both human and code based.
Overcoming these challenges may prove harder than the actual development of your application. Thus, proper communication and teamwork will determine the success of this application.


The challenges above may seem daunting, but there are a number of worthwhile takeaways that this project can provide in addition to the skills you will learn in class, such as:
  • Working in a large distributed team
  • Interacting with an actual client
  • Building an application for a cause
  • Contributing to an open source project
  • Working with industry tools like a build system
  • Learning a Web GUI framework
  • Creating a Facebook Application
  • Working with Google App Engine


The project will follow a simple development process consisting of four milestones. A milestone is a coherent set of deliverables that form a working (but incomplete) version of the product. Producing all four milestones will involve a significant amount of programming and teamwork. All milestones also include bonus requirements that are related to the material associated with it. Information on each project part will be posted on the website during the term. Here's an overview of each part.

Milestone 0: Project Setup and Team Introductions (deadline: TBD)

This milestone will involve setting up your environment, installing the utility classes, studying their implementation, and experimenting with the unit testing framework. This is also where team introductions will be made. There is no deliverable associated with this part.

Milestone 1: Infrastructure and Infographics (deadline: TBD)

The first milestone will involve the development and testing of all the logic required to create and modify basic checklists and infographics. The deliverable for this part will include your implementation, test cases, and infographics.

Milestone 2: Feedback and Prototype (deadline: TBD)

In this milestone, you will interact with the client directly to get feedback on your infographics. Also, you should have a working barebones prototype.

Milestone 3: GUI and Release (deadline: TBD)

In this milestone, you will design and complete the GUI as well as run final tests to ensure that the program is stable.


Optional: Use this section if you are interested in learning more about what is under the hood of a web application or need additional resources.


There will be two teams composed of four teammates building separate applications. Each individual team will be composed of two students from UBC and two students from McGill.

Besides applying knowledge learned from your coursework, completing the milestone tasks will require your team to apply practices such as work prioritization, division of labour, and regular communication. Throughout the project you will be required to accomplish various team exercises to make the most of a large distributed team.

Academic Integrity

Except for the source code explicitly provided on the course website, each team must author the entire code of their project. In particular, snippets of code cannot be reused from the other implementations you can easily find on the Internet.


McGill University values academic integrity. Therefore all students must understand the meaning and consequences of cheating, plagiarism and other academic offenses under the Code of Student Conduct and Disciplinary Procedures (see for more information).


As a student at UBC you should be familiar with the "Student Discipline" policies outlined in the "Academic Regulations" section of the UBC Calendar. As a Computer Science student, you are also expected to be familiar with the Computer Science Department Lab policies and responsibilities found at:

Creative Commons License
Software for a Cause 2010 and all related materials are licensed under a Creative Commons Attribution 3.0 Unported License.