COMP 303/CPSC 448 Fall 2010
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 FibrosisCystic 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 www.cysticfibrosis.ca
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
, 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
. 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.
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.
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.
In this milestone, you will interact with the client directly
to get feedback on your infographics. Also, you should have a
working barebones prototype.
In this milestone, you will design and complete the GUI as well as
run final tests to ensure that the program is stable.
: 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
Except for the source code explicitly
provided on the course website, each team must author the entire code of
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 http://www.mcgill.ca/integrity
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:
Software for a Cause 2010
and all related materials are licensed under a Creative Commons Attribution 3.0 Unported License