I study how people can think critically with AI.

I'm a 3rd year PhD student in the Dynamic Graphics Project (DGP) Lab at the University of Toronto, advised by Prof. Michael Liut and Prof. Carolina Nobre.

AI can help someone reason better, or it can just do the reasoning for them. I run studies to figure out when each one happens, then build interfaces and workflows that help people keep thinking for themselves. That comes down to three moments: asking AI for help, reviewing what it gives back, and owning the result. I mostly study them in computing education and in research work like qualitative analysis and literature reviews. My work usually appears at HCI venues like CHI, IUI, and CHIWORK, and CS education venues like AIED, ITiCSE, and SIGCSE.

If any of this overlaps with what you’re thinking about, I’d love to chat. Say hi at harry[last_name]@cs.toronto.edu. Away from the screen I’m usually travelling, biking, or on a trail somewhere (click my photo).

News

  • Award: Oct 2026

    Our proposal, "If an Agent Can Write Your Code, What Is Left for You to Learn?", has received a Generative AI Module Design Award from the Cognizant-U of T Generative AI Training Program, Centre for Analytics and Artificial Intelligence Engineering (CARTE), Faculty of Applied Science and Engineering. As lead graduate student on the project, I'm designing a guest-lecture module on effective strategies of asking, reviewing, and owning AI-generated code, all derived from my own research! It will be taught in undergraduate courses in Winter 2027.

  • Paper: Sep 2026

    My first-authored paper, a longitudinal study of student and LLM code in introductory programming, has been accepted to the 26th Koli Calling International Conference on Computing Education Research, along with my Doctoral Consortium paper discussing what is left for students to learn when an AI agent can write their code. See you in Koli, Finland

  • Organizing: Apr 2026

    Our workshop proposal on AI Disclosure has been accepted for the 2026 ACM Conference on Fairness, Accountability, and Transparency (FAccT). Looking forward for the discussion in Montreal, Canada

  • Paper: Mar 2026

    My co-authored papers on CS Education and AI have been accepted to the 31st Annual ACM Conference on Innovation and Technology in Computer Science Education (ITiCSE).

  • Paper: Jan 2026

    My first-authored paper on Reflexis, a system that operationalizes positionality and provenance to support deep collaborative analysis, has been accepted for publication. Also an ongoing work that discuss AI disclosure and attribution in programming education has been accepted to the CHI 2026 Workshop on Understanding and Engaging Critical Resistance to AI in Education. see you in Barcelona!

  • Paper: Dec 2025

    My first-authored paper on LLM-enabled Systematic Literature Review Assistant (ARC) has been accepted for publication, see you in Cyprus!

  • Paper: Oct 2025

    Our work on LLM-enabled Hierarchical Academic Paper Reader has been accepted for publication.

  • Paper: Oct 2025

    My first-authored paper on Explainable Coding Agent has been accepted to the XLLM-Reason-Plan workshop at COLM 2025.

  • Paper: Jun 2025

    My first-authored paper on a visual tool for qualitative knowledge work and information sensemaking has been accepted for publication.

  • Milestone: Sep 2024

    Joined the Dynamic Graphics Project Lab under the supervision of Prof. Michael Liut and Prof. Carolina Nobre.

  • Work: Jun 2024

    Completed year-long full-stack software development internship.

  • Paper: Mar 2024

    Our work on AI-assisted programming education has been accepted for publication.

Selected Research

Asking AI for help

Ask an AI for help and it will usually just hand you the answer. These projects look at how that exchange could go differently: students who learn to ask for guidance, and assistants that give hints instead of solutions.

Improving Student-AI Interaction Through Pedagogical Prompting

Ask an AI for help on a CS1 assignment and you'll get a polished, correct solution in seconds. That's handy if you already know how to code. If you're still figuring out how a loop works (or learning anything, really), a perfect answer doesn't teach you much. With collaborators at CMU and the University of Michigan, we started treating prompting as a skill students can learn, part AI literacy and part metacognition. Students practice predicting what the model will do before they ask, then write prompts that get them guidance instead of finished code. We later tested this in an RCT in a real CS1 course.

Classroom Deployment of an AI Programming Assistant for Novices

What happens when 700 students in an intro programming course get an AI assistant for a whole semester? I helped deploy CodeAid, which was designed to help without handing out solutions, and students used it about 8,000 times. Between those logs, student surveys, and interviews with educators, we could see where the AI kept novices reasoning and where it let them skip the reasoning entirely.

Reviewing what AI did

Once AI has screened hundreds of papers for a review, someone still has to check its calls, and that's hard when you can't see how it got there. This project keeps each of the AI's decisions open to review.

A systematic review is meant to be the careful, reproducible way to read a field. Then I tried doing one on AI, and the field kept growing while we were still screening. Most of the work is toil: abstract after abstract, the same inclusion criteria applied over and over. That sounds like a perfect job for an LLM. But the whole point of a systematic review is that every decision can be traced and checked later. So which parts can a tool take over, and which parts should stay with the researcher?

Owning the result

Even with AI in the loop, the analysis or the assignment has to end up being yours. These projects keep the interpretation with people, and ask how they should credit the AI that helped.

Mixed-Initiative Systems for Qualitative Analysis

Qualitative analysis means sitting with your data: rereading transcripts, moving quotes around, arguing with collaborators about what someone really meant. The tools never fit that for me. Spreadsheets do too little, and professional tools take forever to learn and push you into workflows that don't feel like your own. AI can now code a whole dataset in minutes, but then whose analysis is it? What if AI helped around the interpretation, organizing material and surfacing what you missed, and left the meaning-making to you? ScholarMate tries this for one person making sense of their material, and Reflexis brings it to teams working through disagreements.

AI Disclosure and Attribution

Researchers cite the work they build on. It's just part of how we write. So when AI became an everyday part of learning, I kept wondering: could students acknowledge it the same way? I brought the idea to Jessica, and we started digging into it together. Part of why it's needed: the code alone can't tell you who used AI. Across years of intro programming submissions, student code drifted toward what LLMs write, so a match says little about any one student. But a disclosure is a strange thing to ask for. What does “I used ChatGPT” actually tell an instructor about how a student thought? Do students want to write one, do instructors want to read one, and if being honest has a cost, who ends up paying it?