CEL development

Back to Project Overviews

Background

In January 2021, I started working from home for the Center for Extended Learning (CEL), an organization that creates courses for the University of Waterloo. I was hired as a Junior Application Developer, and I worked in the Systems team, which maintains and develops internal web tools that handle data like course enrollment, student and staff permissions, etc. I was expecting to do mostly general bug fixes and small feature requests that term, but was able to work on several very interesting projects. If you wish to see demos for MyCEL and CEL Pathways, please view my co-op testimonial video, in which I go through my experiences at CEL, and show off some projects that I worked on.

CEL Pathways

This is a website developed using Flask and NetworkX that uses a link prediction algorithm to recommend courses to students based on their past co-op experiences. This is the main project that I worked on, and I was the only one working on this project, so I was given full control of the work pacing and the task items for each week. The work that I did included:

To use the website, a user logs in to have their data preloaded into the form, or they can enter their data manually. The program then uses the data to run a link prediction algorithm that essentially finds courses that their coworkers have taken, and it rates each suggestions from 1-5 stars based on how confident it is in its prediction. The user can then use the link at the bottom of the page to search for the recommended courses. Below is the form page and an example of some prediction results:

Input form for CEL Pathways Prediction results from CEL Pathways

At the end of the term, I presented the project to the high level management and the rest of my team, and also gave recommendations for the next steps that future co-ops will be taking. They were pleased with my progress and were impressed with the design and flow of the website. The long term plan for the project is to trial this with perhaps one Waterloo department (ex: Engineering), and see what issues arise or what improvements can be made. After that, access will be expanded to all Waterloo students. Finally, the website would be sold as a service to other universities - several departments in other universities have already shown interest in this technology.

MyCEL

This is a website developed using PHP with Symphony that allows CEL staff to manage permissions for UW students and staff. In this project, I updated the employee roles to match the current organization structure at CEL, which involved updating the ORM, the database, and several places in the site that displayed or managed roles. For this project, we used Sprint Agile Methodologies, where Jira was used to create tickets for bug fixes or feature requests, and then 5-10 tickets would be assigned to the team for the two week sprint. Additionally, we recorded what had gone well, and what had hindered progress at the end of each sprint in Confluence in order to better identify bottlenecks and improve them for next time.

Course Development Tracking System (CDTS)

This is a tool that will be used to speed up the course request and development process for CEL. For this project I helped to define requirements and determine the flow by setting up multiple meetings with the main future users of the application. I was to begin development on this project, but unfortunately, CEL had more pressing work and the start of the project was delayed to beyond the end of my work term.

CEL Systems Team-Building Event

The co-ops from the term previous to when I worked wished that they could have gotten to know the other co-ops better, which was difficult because everyone was working from home. So, our boss asked us to plan and run a team-building event, to give our team a chance to interact outside of work bounds. I came up with the idea of doing a desk reveal for our team, so I was made the lead of the project. Here is how the desk reveal worked: Each team member took a photo of their working space (or of several objects that have meaning to them), and sent it in to be compiled into a slideshow. On the day of the event, the slideshow was shared, and when someone's photo came up, they told a story or explain the meaning behind a few items on their desk. The event was a fantastic success - we had a lot of discussion and laughter, and it took us a little over an hour to get through all the photos (~15). I go into a bit more detail about this in my co-op testimonial video. If you reading this article are working on a remote team and are in a position to set up something like this, I highly recommend it!

Conclusion

While working in the CEL Systems team, I learned a lot of technical skills including enterprise development, network graphs, and web servers, but I also learned many non-technical skills. A lot of my work at CEL was done in teams, and tracked via tickets in Jira, which taught me how to plan work with multiple people and code cleanly and understandably for anyone who might come back to revise something in the future. As well, one of CEL's big things is documentation (we used a confluence wiki). As we have many co-ops coming and going three times per year, it is important to document what we have done, and how we have done it, so that new employees can painlessly pick up where others left off, and there is no information lost in communication. This means that I did a lot of writing this term, helping me to improve my impersonal and objective writing skills.

Working here was a fantastic experience, and although I was given an offer to return, I am searching for jobs more closely related to mechanical engineering now. I learned a ton at CEL, and felt like my opinions were valued. They were fantastic mentors, and hopefully as I continue on, I can be the same for others.

View Co-op Testimonial

Back to top
Back to Project Overviews