Recruiting
Is CMPT 415 for you?
CMPT 415 with me (Dr. Brian) is a great choice if:
- You want to develop professional quality tools which help people.
- You have a commitment to high quality code and delivering great features for the real-world users.
- You have solid technical, group-work, and communication skills.
- You are self-motivated.
- You strive to do well in all your courses.
You may be better off doing a different course if:
- You feel hesitant about quickly learning new frameworks or languages (though the first 3-weeks of the course is all about learning brand new things).
- You expect not to be able to commit to working 10h a week on the course.
- You want a research focused experience (in which case, doing a CMPT 415/416 with a different supervisor on research based project may be better).
There are no strict course prerequisites for the course. Generally, students should have a strong GPA or upper-division GPA in Computing Science courses (3.0 or higher). Plus, students should be experienced with CMPT courses (completed 3 or more CMPT 3rd / 4th year technical courses), or have strong industry experience. Relevant courses include ones on software engineering, testing/reliability, UI, Android, or web. CMPT 415 and CMPT 416 are identical courses, allowing a student to do two special projects throughout their studies.
The selection process is competitive. Preference is often given to students who have more experience or specific skills. For experience I often look for students who have: completed numerous upper division CMPT courses (especially CMPT 373, CMPT 473, and CMPT 362 when applicable), successful co-op terms, industry experience, or other high-quality coding experiences. Useful skills are listed for each project such as React, Django, TypeScript, or Android. In all cases, a strong GPA or CMPT related GPA speaks well of a student.
Course Structure
The team and I will find a time which works for everyone to meet (online via Discord; 100% remote, reasonable time in the Vancouver time-zone). Students are expected to do significant development work each week by consistently pushing the project ahead while maintaining the highest quality code. Marks are largely based on code/team contributions, but also on a couple written reports. All contributions must abide by the project's existing licenses (such as GPL), which means that by contributing code students agree to have their work used in accordance with the license.
Applying for Spring 2025
If you are interested in applying to work on these projects, please complete the application via this Canvas course.
Project: iCradle
Looking for 6 students for Spring 2025
This system may be used to support health care delivery for pregnant women in the Bidi Bidi refugee settlement in Uganda, and for medical patient referrals in Sierra Leone. Our Android app will be used by workers in the field to monitor the health of community members and refer them to health centres when necessary. In the health centres, our web app will be used by health care workers to access patient records, record treatments, and recommend follow-ups with discharged patients. The system is developed in partnership with doctors at Kings College London.
The system has a back-end (Python/Flask), a web front-end (React, Typescript), and two Android Apps (Kotlin). You will work closely with the customer (doctor in London, and health care team in Sierra Leone) to design, implement and test new features and correct defects. We hope the system will be put into active use and have a direct health benefit on many people. Students are supported in doing top quality work! The system was originally created by team Neptune in CMPT 373, Fall 2019.
Code is publicly mirrored to GitHub.com (CRADLE platform, CRADLE mobile app, and SMS relay app); though all our development will be on SFU's internal GitHub Enterprise server.
iCradle development needs
- Design and implement support for customized workflows which would support medical staff to follow a well defined process, or provide automated assistance at following a medical treatment decision tree.
- Prepare mobile app for approval by Android Play Store
- Continue the development of sending requests over either HTTPS or SMS messages.
- Mobile phone UI work to make it clear how the data is being sent, and display progress.
- Mobile phone UI to clearly show meaningful and actionable error messages to user.
- SMS relay (an Android app) work to better manage the state of communication with server and mobile devices.
- Continue improving the WebApp's UI for creating/editing dynamic form templates (like surveys).
- Testing the system (automated and manual) to ensure fit for purpose. Specifically to test new features and recent work which decoupled a patient referral from a patient reading.
- Standardize how the application handles patient drug histories.
- Analyze system security, threat analysis, penetration testing.
iCradle Necessary Skills
- Keen interest in working at a professional level to develop a program to help people
- ~3 students needed very strong Android experience (co-op experience with Android or CMPT 362)
- ~3 students needed for back-end Python work / front-end React work
- One of these students will be the product owner who will work closely with Dr. Brian and the end customer to discover the customer's needs and help design the product. Likely using some Figma (no experience required) to design UIs.
- Useful experience (no particular order): Kotlin, Python, Flask, REST API, TypeScript, React, Docker, CI/CD
Project: Hope Health Action - Community Based Rehabilitation (CBR)
Looking for 2 students, Spring 2025
This system support the delivery of community based rehabilitation (CBR) services in the Bidi Bidi refugee settlement in Uganda. The customer, Hope Health Action non-profit, has people working in Uganda to provide services such as wheelchairs, prosthetics, and physiotherapy to help refugees build a better life. The tool tracks the needs of clients, allows referrals to the service centre, and tracks what services have been delivered to each client. The purpose of the tool is to improve the quality of service delivered to each client.
The system has a back-end (Django, Python), web front-end (React, Typescript), and a mobile app (React-native, Typescript). The system was originally created by team Saturn in CMPT 373, Spring 2021.
The product is deployed and actively used by the customer.
CBR Development Needs
- Improve product robustness and security.
- Update dependencies (such as React Native).
- Improve system build robustness (such as React Native).
- Support bug fixes identified by customer.
- Automated system tests.
- Improve support for ease of use such as changing text boxes into check boxes.
CBR Necessary Skills
- Keen interest in working at a professional level to develop a program to help people
- Some experience with TypeScript or JavaScript required (a keen interest in learning TypeScript is also fine!)
- Useful experience: React Native (very desirable!), Automated verification, Django, Python, React, REST API, Docker, CI/CD
Previous Projects
- Community Based Rehabilitation (CBR) patient tracking system created for Hope Health Action for use in the Bidi Bidi refugee settlement in Uganda. Entered active use Fall 2022; upgraded Summer 2023. Code on GitHub.
- A team ladder and match sign-up web system developed in CMPT 373 for the Vancouver Racquets Club
- GLIMPS GitLab/GitHub analysis system to support marking iteration based projects.
- Baytree Centre (London) requested a custom system be developed to manage mentoring sessions.
- Project is pretty much complete! Baytree Screenshot
- Code available on GitHub
- Status (as of Spring 2023): Customer decided they did not have the on-staff experience to run the system and is holding off putting it into active use.
- System to monitor a rain-water capture setup for use in a remote setting, in partnership with Simbi Foundation
- Software and electronics for the Embedded Cosplay Team's Halo suit
- Hope Health Action - Haiti Hospital reporting tool.