Teaching computing through design, evidence, and deliberate practice.

My teaching connects conceptual understanding with implementation, debugging, explanation, and reflection so students learn how systems work, not only how to produce an answer.

Learning should make reasoning visible.

I structure learning around clear problems, progressive practice, feedback, and explanation. Students should be able to justify assumptions, test intermediate decisions, diagnose errors, and compare alternatives.

AI tools can support learning when students are required to audit, test, and improve generated work rather than outsource judgment. Clear criteria and multiple representations also help students with varied backgrounds engage with technical material.

Western University courses supported.

ES 1036

Programming Fundamentals for Engineers

Programming fundamentals, problem decomposition, and applied computational thinking.

SE 3309

Database Management Systems

Relational modeling, SQL, normalization, transactions, and database design. Lead TA experience.

SE 2251

Software Design for Systems Engineering

Object-oriented design, modularity, implementation, and software-development practice.

SE 3350

Software Engineering Design I

Requirements, architecture, team workflows, and iterative system design.

Research and technical coaching.

I support students in experiment design, reproducible implementation, interpretation of results, academic writing, and communicating uncertainty.

Discuss student collaboration →