From Blocks to Text-based Programming
University of Toronto - PhD Student
Visual programming environments such as Scratch are becoming the prominent way of introducing young students to CS and programming. However, little research and development has been done to support the final transition into text-based programming. To address this, we ran an exploratory study with 26 high school students and categorized the challenges associated with the initial transition, and their resolution methods. Our results help guide the design of future assistance mechanisms, intermediary tools, or curriculum development.
Furthermore, we iteratively developed CodeStruct, an intermediary text-based programming environment that includes design features such as automatically handling of syntax and punctuation (using a structured editor), providing real-time warnings, and including passive documentations in an explorable toolbox. We evaluated CodeStruct through a two-week long programming class with high school students and investigated how CodeStruct supported learners in transitioning from Scratch to Python. Our findings reveal that transitioning to CodeStruct reduced task completion time (1.98x) and help requests (4.63x) when compared to transitioning directly to Python.
From Blocks to Text-based Programming
CodeStruct: Design and Evaluation of an Intermediary Programming Environment for Novices to Transition from Scratch to Python
IDC'22 · ACM Conference on Interaction Design and Children

Scaffolding Progress: How Structured Editors Shape Novice Errors When Transitioning from Blocks to Text
SIGCSE'23 · ACM Technical Symposium on Computer Science Education

Embedded Programming Development Environment
University of California, Berkeley - Visiting Graduate Researcher
A key challenge in developing and debugging custom embedded systems is understanding their behavior, particularly at the boundary between hardware and software. Bifröst automatically instruments and captures the progress of the user's code, variable values, and the electrical and bus activity occurring at the interface between the processor and the circuit it operates in. This data is displayed in a linked visualization that allows navigation through time and program execution, enabling comparisons between variables in code and signals in circuits.
Embedded Programming Development Environment
Bifröst: Visualizing and Checking Behavior of Embedded Systems across Hardware and Software
UIST 2017 · ACM Symposium on User Interface Software Technology

Programming by Demonstration for Kids
Microsoft Research - Graduate Intern (VIBE group)
GestureBlocks incorporates a demonstrate-edit-review Machine Learning pipeline for authoring sensor-based gestures into Microsoft MakeCode and allows novices to program behaviors using both data-driven and conventional paradigms.
Programming by Demonstration for Kids
GestureBlocks: A Gesture Recognition Toolkit for Children
ICER 2017 · Workshop on Learning about Machine Learning

Interactive Wearables using Tangible Programming

Interactive Wearables using Tangible Programming
University of Maryland - MSc Student
Wearable construction kits have shown promise in attracting underrepresented groups to STEM, and empowering users to create personally meaningful computational designs. These kits, however, require programming, circuits, and manual craft skills. Therefore, to lower the barriers of entry and help empowering young children create interactive wearables, I led a two-year iterative design process, including participatory design sessions with children design probe sessions with STEM educators, and iteratively building and pilot testing prototypes with children.
Informed by these experiences, we built MakerWear: a modular and wearable construction kit with a focus on enabling children to leverage the richness of wearability-their changing environments, their body movements, and social interactions. Our novel approach enabled children to program complex trigger-action behaviors using tangible modules. Our evaluations of MakerWear at multi-session workshops, show that children (ages 5-10) were able to successfully create a wide variety of wearable designs, and actively apply computational thinking.
MakerWear: A Tangible Approach to Interactive Wearable Creation for Children
CHI 2017 · ACM Conference on Human Factors in Computing Systems
Best Paper Award
ReWear: Early Explorations of a Modular Wearable Construction Kit for Young Children
CHI 2016 (Late-Breaking Work) · ACM Conference on Human Factors in Computing Systems
Best LBW Paper Award
MakerShoe: Towards a Wearable E-Textile Construction Kit to Support Creativity, Playful Making, and Self-Expression
IDC 2015 (Demo) · ACM Conference on Interaction Design and Children

MakerWear: A Tangible Construction Kit for Young Children to Create Interactive Wearables
UMD 2017 · MSc Thesis · University of Maryland, College Park

Exploring Sample Code Usage by Programmers
Sharif University of Technology - Undergraduate Student
When programmers face new frameworks they usually rely on sample codes to learn about the API and accomplish their tasks. This work investigates and analyzes the activities performed by programmers when such sample codes are being used for task completion.
Exploring Sample Code Usage by Programmers
Activities performed by programmers while using framework examples as a guide
SAC 2014 · ACM Symposium of Applied Computing


Carl Ma
University of Toronto

Justin Chow
University of Toronto

Viktar Chyhir
University of Toronto

Jason McPeak
University of Maryland

Alexander Jiao
University of Maryland

Katie Wang
University of Maryland