DEV Community

Parth Vats
Parth Vats

Posted on

1 1 1 1 2

Building an AI-Powered Language Learning App at UofT: My CSC491 Experience So Far

As a fifth-year Computer Science student at UofT, I've worked on plenty of projects, from simple command-line Python games in first year to complex full-stack web apps in my fourth. But none have been as comprehensive or challenging as CSC491, our Capstone Design Project. This course feels like the culmination of everything we’ve learned so far: pick a meaningful problem, design and build a viable solution, and (hopefully) come away with something impressive.

My team chose to develop Pera, an AI-driven language-learning platform aimed at improving users' pronunciation and conversational fluency. On paper, our idea to combine speech recognition with generative AI models seemed straightforward. However, we quickly realized the practical challenges as we moved into actual implementation.

Here are my key takeaways and learnings (so far) that I observed while building Pera with my team.

Defining the Scope Clearly

Really early on in the business development and research stage of our idea, we considered building an extensive ML pipeline, training our own speech-to-text models, customizing our own LLMs, and essentially managing the full AI stack ourselves. However, as we dove deeper into planning, the scope became pretty clear. Training robust, accurate models requires vast amounts of labelled data, significant computational resources, and considerable time, which we didn't have within the constraints of the course's timeline. (We are planning to go in the self-sustaining infrastructure direction once our startup gains a bit more traction and the logic matures in the next 6 months).

Recognizing these, we strategically pivoted and instead of building everything from scratch, we chose to leverage existing APIs such as Azure’s Pronunciation Assessment service and our partner, Cohere’s, large language models. This made sense from an implementation perspective as it allows us to validate our core functionalities quickly, avoiding unnecessary complexity and accelerating development.

Key takeaway: Clearly define project scope and constraints early. Leveraging existing technologies can drastically improve development speed and reduce complexity.

Effective Team Communication and Collaboration

Perhaps the most impactful learning from CSC491 so far has been the importance of consistent and transparent team communication. As a team, we regularly use platforms like Slack, Discord, and GitHub pull request reviews, coupled with weekly meetings to ensure alignment, discuss challenges openly, and collaboratively find solutions.

This consistent communication has allowed us to rapidly address integration challenges, refine our product, and support each other through technical hurdles. Working as a cohesive team has substantially accelerated our debugging process and improved the quality of our overall solution.

Key takeaway: Regular, transparent communication within the team accelerates development, improves problem-solving efficiency, and strengthens team dynamics

User Feedback and Iterative Development

Another major aspect we've started to recently embrace as a group is the value of iterative development driven by consistent user feedback, something I previously learned in CSC318. Even though we have not yet had a chance to fully incorporate this aspect because our product is still in the very early stages, it is still something we are planning on actively and continuously incorporating once the initial implementation of our core use cases is developed, to gauge how users perceive the features, and how we can make it more intuitive.

Key takeaway: Continuous integration of user feedback into development cycles will ensure your product remains relevant, engaging, and valuable to your target audience.

What’s Next

Working on the project has been a great learning experience, and working with other passionate people on a shared problem has been a really fun and engaging experience.

For future students enrolling in CSC491, my advice would be to select a project that genuinely excites you, clearly define and respect project scope and constraints, prioritize user experience from the outset, and invest heavily in effective team communication. CSC491 is arguably one of the most valuable learning experiences you'll encounter during your undergraduate study since it blends together the various key elements of CS that we've learned through the years.

Image of Quadratic

Python + AI + Spreadsheet

Chat with your data and get insights in seconds with the all-in-one spreadsheet that connects to your data, supports code natively, and has built-in AI.

Try Quadratic free

Top comments (0)

AWS Q Developer image

Your AI Code Assistant

Automate your code reviews. Catch bugs before your coworkers. Fix security issues in your code. Built to handle large projects, Amazon Q Developer works alongside you from idea to production code.

Get started free in your IDE

👋 Kindness is contagious

If this post resonated with you, feel free to hit ❤️ or leave a quick comment to share your thoughts!

Okay