LearnCoding is a UBC-hosted, interactive, online learning platform that allows you to complete programming exercises, trace code execution, and earn digital badges upon successfully completing lessons. The platform issues its own digital badges directly, and no third-party badge account is needed by anyone. The platform provides an engaging educational experience for learning programming concepts across multiple languages.
We use several external and self-hosted services to enhance your learning experience. Python Tutor (pythontutor.com) is used for code visualization, receiving only your code with no personal data transmitted. We also use self-hosted services including Judge0 for code execution and Matomo for usage analytics, both of which are hosted entirely on UBC servers and do not transmit data externally. Digital badges are issued and hosted entirely by LearnCoding itself: no external badge platform is involved, and no account with any third-party service is ever required to earn, hold, or share a badge.
To create an account, LearnCoding requires your name, email address, and an encrypted password. LearnCoding does not collect a username.
If your institution identifies students this way, you may also be asked for a self-reported student ID, either during registration or later from your profile; providing it is optional and only offered where a course you're taking actually needs it. Separately, from your profile, you can connect your Canvas identity for courses graded through Canvas. Both a self-reported student ID and a Canvas connection are stored as one-way cryptographic hashes: once saved, they cannot be read back to their original value, only compared against a value provided again later.
You can update your profile information, including your email, name, and password, at any time through your account settings.
The platform also collects data related to your learning activities, including quiz scores and assessment results, lesson completion status and progress tracking, and anonymized activity logs such as the number of times you access webpages and time spent on lessons. Additionally, any programming code you submit for evaluation purposes will be temporarily processed through our systems.
The collection of your personal information by UBC is authorized by section 26(c) of the British Columbia Freedom of Information and Protection of Privacy Act (FIPPA).
Your information is used solely for educational purposes and improving the learning experience. This includes providing feedback on your programming exercises, tracking your progress through lessons and modules, and enabling instructors to assess and export grades for UBC students only. The platform also uses your data to award and verify digital badges upon lesson completion, helping you showcase your programming achievements.
For UBC students, your encrypted student ID and grades may be shared with your instructor for academic assessment purposes only. When using the code visualization feature, only your programming code is sent to Python Tutor for display purposes, with no personal data being shared. Your personal information is never sold or shared with third parties for commercial purposes.
Your information may also be shared as permitted by FIPPA.
Because a badge is meant to be shown to other people, it works a little differently from the rest of your account, and it's worth spelling out exactly how:
How your identity is protected inside a badge. A badge needs some way to tie it back to you if someone ever needs to confirm you're the person it was issued to. Rather than storing your email address in the badge itself, LearnCoding stores a salted cryptographic hash of your email: a one-way scramble that cannot be reversed back into your address, and where a fresh, random salt is used for every single badge, so even two badges from the same account produce different-looking hashes.
Being honest about what that does and does not protect: this scheme is very effective at stopping someone from harvesting a big list of email addresses out of a batch of badges, since the hashes give them nothing to work with in bulk. It does not, however, stop someone who already knows (or guesses) your specific email address from confirming that one particular badge belongs to that address: they can hash the address themselves and compare it to what's stored. In short, this protects against mass collection, not against a targeted, one-on-one confirmation by someone who already has your address. No other personal information is stored in the badge document itself.
All data is securely stored on UBC servers located in Canada. Student IDs are encrypted using one-way hashing before storage, ensuring they cannot be reverse-engineered. The signing key that secures every issued badge is likewise encrypted at rest and handled with extra care, entirely separate from routine backups. The platform uses HTTPS encryption for all data transmission between your device and our servers. Regular security backups are maintained by UBC IT services to ensure data integrity and availability.
Data will be retained and destroyed in accordance with UBC policy TL7100: Teaching and Learning – Online Course Management, which governs the lifecycle of educational data at the university.
UBC students can disconnect their student ID from their account if desired, and you may request deletion of your account by contacting us directly, however, records must be retained in accordance with the UBC Retention Schedules.
For questions regarding the use of LearnCoding, the personal information collected, its handling, or how to access and correct your data, please contact learn.coding@ubc.ca.
Last updated: 08/15/2026