Teaching
I teach computing as a hands-on, studio-based practice, and I research how generative AI is reshaping the way students learn to build software. My teaching and my research feed each other: insights from working with student teams flow into published findings, and those findings shape how I run my modules.
Teaching Values
Architecture-studio-inspired teaching: coaching, peer learning, reflective practice, and project-led work in multi-disciplinary teams.
Providing scaffolded support and progressively reducing it as students grow in independence.
Graduates who can critically evaluate the tools reshaping their profession, not just use them.
“Knowing what questions to ask (or how to iterate on a question) is a skill.”
— Bull & Kharrufa, IEEE Software (2024)
Two Pillars of My Teaching
I teach software engineering as a project-based practice, integrating Human-Computer Interaction to ground students’ thinking about users and systems. Two pedagogical commitments shape how I approach it:
Studio-Based Learning
I am committed to Studio-Based Learning (SBL) — a hands-on, project- and problem-based teaching method inspired by architecture, design, and art studios. Studio teaching centres on coaching rather than lecturing, peer learning, reflective practice, and multi-disciplinary teamwork. It is particularly well-suited to software engineering, where collaboration, judgement, and adapting to real-world constraints matter at least as much as technical knowledge.
I researched and helped to successfully implement the studio approach throughout Software Engineering at Lancaster University, and I continue to engage with it both as an educator and a researcher. My work in this area was recognised with a Best Paper award at CSEE&T 2014.
Studio-Based Learning research
Teaching with Generative AI in Computing Education
Generative AI is changing what it means to learn to program. In an IEEE Software article with Ahmed Kharrufa, I argued that the right pedagogical response is integration with critical judgement, not avoidance. Treating GenAI as a forbidden tool misses the chance to teach the harder, more durable skill: how and when to use these tools well.
In a follow-up study with my colleagues, we found that GenAI in a 2nd-year software engineering team project plays three distinct roles for students: as an educator (explanations, worked examples, mentor), as a peer (brainstorming, reviewing code and documents, bridging the skills gap within teams), and as an assistant (boilerplate, tests, bug fixing). We proposed a design space (roles × support-ability patterns × transparency) to help educators and tool-builders maximise the learning benefits while mitigating the risks. These ideas directly shape how I run my software engineering team-project modules.
Generative AI in Computing Education research
How My Teaching and Research Connect
---
title: Teaching Foundations, Practice, and Outcomes
config:
flowchart:
curve: cardinal
useMaxWidth: true
htmlLabels: true
nodeSpacing: 25
rankSpacing: 50
---
flowchart LR
accTitle: Teaching foundations, practice, and outcomes
accDescr: Diagram showing how pedagogical foundations (Studio-Based Learning, Scaffolding and Fading, Reflective Practice) and research-informed lenses (Roles of AI, Support-Ability Patterns, Transparency) feed into teaching practice (coaching, project-led modules, peer reviews), which graduates critical, adaptive, future-ready problem solvers.
subgraph F["Pedagogical Foundations"]
direction TB
SBL[Studio-Based Learning] ~~~
SF[Scaffolding & Fading] ~~~
RP[Reflective Practice]
end
subgraph R["Informed by My Research"]
direction TB
PD[Pedagogical Design for AI Tools] ~~~
HF[Human Factors in Computing Education] ~~~
SBR[Studio-Based Learning research]
end
subgraph P["In Practice"]
direction TB
C[Coaching, not Lecturing] ~~~
PJ[Project-Led Modules] ~~~
PV[Peer Code & Design Reviews] ~~~
PA[Process-Focused Assessment] ~~~
ASP[Authentic Software Practices]
end
subgraph O["Graduates Who Are…"]
direction TB
TC[Tool-Critical Engineers] ~~~
MD[Multi-Disciplinary Collaborators] ~~~
REF[Reflective Practitioners] ~~~
FR[Future-Ready Problem Solvers]
end
F e1@--> P
R e2@--> P
P e3@--> O
classDef foundation fill:#f3e5f5,stroke:#7b1fa2,stroke-width:0.08em,color:#1a1a1a,font-size:1em,rx:0.65em,ry:0.65em;
classDef research fill:#fff3e0,stroke:#f57c00,stroke-width:0.08em,color:#1a1a1a,font-size:1em,rx:0.65em,ry:0.65em;
classDef practice fill:#e3f2fd,stroke:#1976d2,stroke-width:0.08em,color:#1a1a1a,font-size:1em,rx:0.65em,ry:0.65em;
classDef outcome fill:#e8f5e9,stroke:#388e3c,stroke-width:0.08em,color:#1a1a1a,font-size:1em,rx:0.65em,ry:0.65em;
classDef subgraphStyle fill:#fafafa,stroke:#bbb,stroke-width:0.125em,font-size:1.1em,font-weight:bold,rx:0.75em,ry:0.75em;
class SBL,SF,RP foundation;
class PD,HF,SBR research;
class C,PJ,PV,PA,ASP practice;
class TC,MD,REF,FR outcome;
class F,R,P,O subgraphStyle;
classDef animate stroke-dasharray: 9,5,stroke-dashoffset: 900,animation: dash 60s linear infinite;
class e1,e2,e3 animate;
Active in the wider computing education research community as a regular program committee member and peer reviewer, recognised with a Distinguished Reviewer Award at CSEE&T 2020.
Equality, Equity & Diversity
I take equality, equity, and diversity seriously in my teaching and supervision. I set out my position and the actions I am taking on a dedicated page, and I am happy to be contacted about it.