Projects

Check out my projects blow:

Adaptive Experiments to Improve A/B Testing
Adaptive Experiments to Improve A/B Testing

Image Credit: Cheng Soon Ong As a researcher in Computing Education and AI in Education, I’ve run dozens of experiments to evaluate the interventions I’ve built (read some of them here).

Sep 28, 2023

Code that Explains Itself
Code that Explains Itself

Debugging is a critical skill for programmers, and one that’s difficult to teach and support. Students also struggle to understand how example code works, or even their own code when it isn’t behaving.

Sep 28, 2023

ECONet: A Real-world Machine Learning Project
ECONet: A Real-world Machine Learning Project

In my introductory Machine Learning (ML) course for undergraduate and graduate students, students complete a course project, where they have to design an ML pipeline to solve a realistic problem from start to finish.

Sep 28, 2023

TraceNote: Learn Code Tracing by Playing Music

Code tracing is the ability to read code, understand how the program flows and variable values change, and predict program output. It is a critical skill that supports students’ ability to write code.

Sep 28, 2023

Bounce! A game-based curriculum for introductory programming
Bounce! A game-based curriculum for introductory programming

Students learn core programming concepts while making a game with, with scaffolding to support learning.

Aug 15, 2023

Extending Block-based Programming with Physics!

Snap! is a block-based programming language that lets students create expressive apps and simulations easily. This is especially powerful for non-Computer-Science majors, like those in my introductory course, who may want to apply programming to solve problems in their own domains.

Aug 15, 2023

In-IDE Programming Videos for True Active Learning Online

Instructional videos are an important part of online learning that can support asynchronous courses, distance education, and – in my case – a flipped classroom, where students learn at home and then do hands-on labs in class when I can support them.

Aug 15, 2023

Learning Program Plans with Jigsaw
Learning Program Plans with Jigsaw

An important step in developing programming expertise is learning programming patterns. These patterns represent reusable partial solutions to common programming challenges, such as the accumulator pattern for summing values (and other sequential variable updates), or the filter pattern for operating only on values that match a condition.

Aug 15, 2023

iSnap: Data-driven Hints for Block-based Programming
iSnap: Data-driven Hints for Block-based Programming

iSnap supports students automatically with hints, feedback and self-explanations.

Jan 1, 2021