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

Studio-Based Learning
Architecture-studio-inspired teaching: coaching, peer learning, reflective practice, and project-led work in multi-disciplinary teams.
Scaffolding & Fading
Providing scaffolded support and progressively reducing it as students grow in independence.
Critical, Adaptive Practice
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.

Explore Further