Teaching

University courses

NC State University

Introduction to Programming (CSC 113)

Co-Instructor · 250+ students

Co-taught this introductory MATLAB course with Dr. Lina Battestilli. Delivered selected lectures, designed active-learning activities, co-led weekly meetings for 16–18 undergraduate TAs, and co-wrote guidance on appropriate GenAI use.

Preparing the Professoriate Fellow (2025–2026), including a Fall 2025 course audit; Mentored Teaching Fellow (Spring 2026).

Discrete Mathematics (CSC 226)

Teaching Assistant · 22 students

Delivered three lectures and supported students through grading and office hours.

Automated Learning and Data Analysis (CSC 422/522)

Teaching Assistant · Approximately 100 students

Designed coding and written assessments, graded coursework, and held office hours.

Data Structures and Algorithms (CSC 316)

Teaching Assistant

Supported students through office hours and graded assignments and exams.

K–12 teachers & outreach

ExLAIM

Program Lead · Six-week co-design program

Led nine K–12 teachers and seven undergraduate developers in building classroom AI tools, using proposal discussions, progress presentations, and peer testing to support their collaboration.

How to Integrate LLMs into K–12 Classrooms

Co-Instructor and Mentor

Co-designed and co-led three iterations of a one-week professional development program on responsible classroom use of ChatGPT. The workshop materials are openly available for other instructors to adapt.

Art, Coding, Action!

Teacher and Curriculum Consultant · 20+ high school students

Led a one-week block-based programming camp in which students created games and art in Snap!, with worked examples built into the activities.

Teaching approach

Evaluation-first learning

I prioritize giving students practice judging solutions, not only producing them, since they can now generate solutions on demand. In CSC 113, I designed a Prompt–Observe–Explain activity that starts away from code: pairs prompted AI to make a short piece of music, wrote predictions before hearing it, and recorded what was present, absent, and surprising in Top Hat, which kept quieter students in the conversation.

I then walked students through mapping each step onto coding with AI: state requirements, predict the result, run it, revise, and explain why it worked or failed. This way, they practiced judging AI output with the same steps they later applied to their own programs.

Classroom instructions for the Prompt–Observe–Explain activity: prompt and generate, predict, then observe and explain.
From evaluating AI-generated music to evaluating code.

Collaborative reasoning

I prioritize having students reason together before they reason in front of the class. In my first lecture as co-instructor of a 250+ student course, I asked students to share their reasoning and met silence. In the second, I had them talk in pairs first, and the room opened up: trying an answer with a peer made students more willing to share it with the class. I rely on pair talk because students learn more by explaining and building on each other’s reasoning than by listening (the ICAP framework), and it takes little class time even at this scale.

Modeling, scaffolding, and articulation

Worked examples helped me more than anything else when I was learning to program, and I teach with them for the same reason: they let learners see an expert’s choices and checks, step by step. I lean on them most in first courses, where beginners benefit most. In a one-week camp I led for 20+ high school students, we built worked examples into every activity, and more than 80% of daily feedback responses said the examples and activities helped students grasp the material.

I also give beginners support that does part of the work for them, so they can focus on the rest. I saw this in my own research with middle schoolers: those who got Parsons problems, the blocks of a correct program in scrambled order, reached better results in less time and ran their code more often. The scaffold took away the search for blocks and left them more time to test their ideas.

GenAI can now produce the code, so a working program no longer tells me whether a student understands it. That is why I ask students to explain their own work. In CSC 113, group projects included individual walkthrough videos in which each student explained the code, and they showed me what each student understood, not just what the group produced. Cognitive apprenticeship calls these three practices modeling, scaffolding, and articulation, which make an expert’s thinking visible to students, and theirs visible to me.