undergraduate projects
Project course opportunities for uOttawa undergraduate students.
If you are interested in doing an undergraduate project course with me (e.g., SEG 3904 or CSI 4900), browse the projects or one of the long-term research ideas below, then email me. If none of them fit, you are welcome to propose your own idea.
Open Projects
I am actively looking for students for these projects.
AI Agents for Research Artifact Evaluation
Conferences ask authors to share artifacts (code, data, scripts) with their papers, and reviewers check whether those artifacts work and support the paper’s claims. Build an AI agent that does this: set up and run an artifact, check whether it matches what the paper reports, and assess how hard it is to execute.
What you'll do- Design an agent workflow that installs and runs artifacts from published papers
- Compare the produced results against the claims in the paper
- Evaluate the agent on a set of real artifacts from software engineering venues
Python Bindings for Refinery
Refinery is a JVM-based graph solver for generating well-formed models. Make it usable from Python, so it can be combined with the Python ML and LLM ecosystem.
What you'll do- Design a Pythonic API on top of the core Refinery functionality
- Implement the bindings and package them for installation with pip
- Write tests, documentation, and example notebooks
Visualizing Constrained LLM Generation
When an LLM generates a model under constraints, every token it produces changes the model being built. Build an interactive view that shows the model as it is created, the tokens the LLM generated, and how each token affects the model.
What you'll do- Build an interactive web view of the generation process, step by step
- Connect it to our constrained generation pipeline
- Use it to explore and explain where and why generation goes wrong
An MCP Server for Guided Software Design
Coding agents tend to jump straight to code. Build a Model Context Protocol (MCP) server that guides an agent through a specific software design process, from requirements to design decisions to implementation. Preferred if you have taken SEG 3102 (Software Design and Architecture).
What you'll do- Encode the steps and artifacts of a software design process as MCP tools and prompts
- Implement the server and connect it to an existing coding agent
- Compare designs produced with and without the guidance
Ongoing Research Directions
Long-term efforts that are always open to new contributors. We will scope a semester-sized piece together.
Sherpa
An open-source framework for building reliable LLM agents with state machines, developed in collaboration with Aggregate Intellect. We are actively looking for maintainers to develop and maintain new features.
Constrained LLM Generation
Making LLMs produce output that always follows a grammar or a set of constraints. Open topics include new applications and how to configure constraints for them.
Interactive Software Design with LLMs
Tools and workflows where developers and LLMs design software together, keeping the human in control of key design decisions.
How to Apply
Send me an email at boqi⚫chen@uottawa⚫ca with the subject line:
Please include:
- The project(s) you are interested in, and why
- Your unofficial transcript
- Relevant experience: courses, side projects, internships, or a GitHub link
- The term you plan to take the course
💡 Have your own idea? I’m happy to supervise student-proposed projects that relate to AI and software engineering. Describe the problem and what you would like to build or study in a few sentences, and we can shape it into a project together.