Project image Equitable CS education for non-native English speakers: Teaching computer science using bilingual techniques like translanguaging and code-switching to non-native English speakers, so that they are provided equitable access to CS/programming which is based in English
Project image Live coding: In this project, we study the effectiveness of live-coding, an active learning technique for teaching and learning programming. Live-coding is a pedagogical model in which an instructor writes code lively before the students and thinks aloud while doing so to make his/her thought processes visible. This pedagogy is based on an educational theory called Cognitive Apprenticeship which places emphasis on making the process of programming explicit to the students rather than focusing solely on the end product (i.e., a fully written program).
Project image Teaching a second programming language to people who can program in a different language: How to teach a programming language to someone who already knows programming? To answer this question, we designed, developed, and taught a modern C++ course at UW-Madison. In our novel approach, we taught the most useful ideas first (e.g., C++ standard library) and taught the low-level details (e.g., memory management using pointers, the rule of three/five/zero) only when they were necessary to solve some problem.