Tommy Hills

Tommy Hills Profile

My name is Tommy and I am a passionate STEM communicator, performer and educator based in Milton Keynes. Currently, I am a dedicated MSc by Research student at the University of Kent, a Teacher of Computing through the Teach First Training Programme, and performer, bringing my love of absurdism and presentations to the stage.

My love of film, stand-up comedy and popular performance, combined with my work with artificial intelligence culminates in fun and engaging projects, designed to show the full extent of creativity and its connections with technology. The mission has always been to bring the excitement and creativity I've experienced to as many people interested in AI, Mathematics and Computer Science as possible.

About

Comedy & Performance

Anchorage Spoken Word
Anchorage Spoken-Word Poetry Night

I have carved a distinctive niche in the comedy circuit by blending technology with the performing arts. My style focuses on character comedy and the "PowerPoint Comedian" aesthetic.

Stand Up on the Stour
Stand-Up on the Stour - 1 Year Anniversary

My performances often combine the many aspects of my life, by challenging audiences to reconsider the relationship between human creativity and artificial intelligence. Whether through spoken-word poetry at events or live stand-up, my goal is always to educate through entertainment.

STEM Communication

Beyond the stage, I am a passionate educator and STEM communicator. Having achieved my PGCE and Qualified Teacher Status (QTS) in 2025, I am dedicated to making Computer Science and Mathematics accessible and exciting for secondary, sixth-form, higher education students and the general public.

My mission is to bridge the gap between abstract computing concepts and real-world application, while also exploring the creative potential of AI in education. Through workshops, talks, and interactive sessions, I aim to inspire the next generation of thinkers and innovators.

BarCamp Experiment Comedy Singularity Talk Pint of Science

Academic Research

Currently, I am an MSc by Research student at the University of Kent. My research lies at the intersection of Computational Creativity and Humour, specifically investigating the capabilities of Large Language Models (LLMs) such as Claude 3, Google Gemini, and GPT-4 to generate stand-up comedy material. I explore whether iterative prompt-chaining and computational theory can capture the nuances of writing structured stand-up comedy material.

MScRes Thesis: Exploring AI and Comedy

"Stand-Up and Deliver: Modelling stand-up comedy to assess the self-improvement abilities of large language models"

My thesis explores the theoretical and practical frameworks for computational humour. I investigate how iterative prompt-chaining can be leveraged to develop original stand-up comedy material, bridging the gap between human comedic theory and AI generation.

Teacher Training w/ Teach First

PGCE Research: Effective Computing Teaching

My M1 PGCE essay, "What makes an effective teacher of Computing?", explores syntax misconceptions in Python and the pedagogical power of modelling and pair programming.

Ambassador Project

This data-tracking and modelling project focused on optimising feedback loops and diagnostic assessment, ensuring that my Ambassador Project aligns with ECT Standards and whole-school strategic priorities.

Media & Press

My work in AI research has provided the opportunity to consult on public engagement forums. I have contributed insights regarding the future of generative AI to:

I am available for media consultations, guest lectures, and event speaking engagements that explore the intersection of AI, humor, and digital education.

PGCE M1 Essay

"What makes an effective teacher of Computing?"

1. Introduction

For learners in Key Stage 3, many of them are encountering high-level programming languages (such as Python) for the first time. It is important that your disciplinary knowledge is built on strong foundations, to then begin exploring higher-level concepts, such as abstraction, algorithms, and data modeling, as you move into Key Stage 4 and beyond. The challenge faced is that programming is particularly prone to misconceptions, due to the new skills required of logical reasoning, syntactical accuracy, and abstract thinking. These misconceptions can often go unnoticed during KS3 and pose challenges for teaching programming at higher levels of education. These misconceptions range from one pupil to another. It could be ‘confusing assignment and equality’ (= or ==), ‘misunderstanding the use of colons and indentation’, or ‘struggling to follow the logical process of how to solve a problem’. These misconceptions are not simply gaps in knowledge but alternative models that pupils build when grappling with new content.

Effective teaching of computing must establish this disciplinary knowledge, but also anticipate and address these misconceptions in order to lead to a deep conceptual understanding. The National Centre for Computing Education emphasises the importance of structuring learning around key concepts and being aware of these common misconceptions to enhance pupil understanding. The misconception that I have chosen to tackle is around syntax errors in Python programming. After teaching a unit of Python programming earlier in the year, I observed the difficulties that KS3 pupils had when following the syntactical rules of a high-level programming languages like Python. I saw how I could plan these lessons around reinforcing these rules and addressing misconceptions to guide pupils towards a better understanding.

Focusing on syntax misconceptions supports my own professional development as a computing teacher, by challenging me to develop greater pedagogical subject knowledge (Schulman, 1986) by selecting pedagogical strategies that can make the abstract concepts more accessible to pupils. This aligns strongly with the Department of Educations Teachers’ Standards, especially ‘through the planning of well structured lessons tailored to the common learner needs (for Education, 2021). I value accessibility within Computing and believe that all pupils, regardless of prior exposure, should be able to create programs and solve problems confidently. This focus will make me more reflective about the assumptions that I hold, such as the idea that repeated coding practice alone is sufficient for pupils to understand syntax rules. These insights will shape the way I design lessons, and write activities, to create a safe classroom environment where misunderstandings are raised and discussed openly. In doing so, I am developing a more responsive and pupil-centred approach to teaching computing, and developing into a more effective teacher.

Our curriculum already uses some techniques, such as starter and retrieval quizzes (‘Do Now’) to reinforce this syntactical knowledge, which supports long-term retention and provides low stakes opportunities to correct misunderstandings. However, applying more pedagogical approaches through this study with pupils in KS3 will put them in stronger and more confident position going into their GCSE qualification, providing more time to focusing on developing skills rather than reteaching core programming concepts.

2. Literature Review

Programming errors pose significant challenges for beginner programmers. Syntax errors, mistakes in code structure, prevent programs from running, causing frustration among learners (Senecca, 2025). Python is the predominant language in programming education at KS3 and KS4 (King’s, 2024) and this essay examines the misconceptions surrounding syntax rules in Python and explores pedagogical techniques to address these misconceptions.

The prevalence of syntax errors among beginner programmers can be attributed to a combination of cognitive overload and the abstract nature of programming syntax, contrasting with natural language constructs (Sweller, 1988). Cognitive load theory suggests that learners have limited working memory capacity. When faced with complex programming tasks, learners may become overloaded, making them more prone to overlooking syntactical details, like correct punctuation or the precise order of operations. This overload can manifest as syntax errors, These errors are not always because the learner doesn’t understand the rules, but because their cognitive resources are stretched thin. This highlights the need for pedagogical techniques to tackle these misconceptions.

2.1 Syntax Errors

Understanding and correcting syntax errors is a major hurdle for novice programmers, especially at the KS3 level where learners are often encountering text-based languages for the first time. Research shows that syntax errors are among the most frequent and frustrating issues that beginner programmers face (Robins et al., 2003). These errors can include incorrect indentation, missing colons, or inconsistent use of capitalisation. Errors like this can hinder a learner’s sense of progress and cause them to disengage, if the errors are not addressed effectively through instruction and support.

One of the reasons that syntax errors are so persistent is because beginner programmers lack a mental model of how a programming language is structured. This parallels the way that pupils struggle picking up English and spelling when they first start in Primary school. Du Boulay, 1986 argues that novice learners must develop both “notational machines” (a conceptual model of how the code executes) and syntactical fluency in order to write functional programs. Without this foundational understanding, learners often resort to guesswork, building their own model about how it work, which can lead to embedded misconceptions. Sentance and Csizmadia, 2016 extend this idea, arguing that introducing syntax in visually scaffolded contexts can help reduce barriers. This could be using block-based environments such as Scratch that abstracts away some of the syntax concerns for beginner programmers.

Grover and Basu (Grover and Basu, 2017) advocate for the use of pedagogical strategies such as live modelling and pair programming to support syntax development. Modelling allows teachers to explicitly show not only the “what” by the “why” behind correct syntax, whilst pair programming encourages learners to verbalise and reflect on their understanding with their peers. These pedagogical approaches are especially effective when combined with real-time teacher feedback, as they help pupils internalise syntax patterns and learn from their mistakes collaboratively. I have looked at these two commonly used pedagogical techniques, Paired Programming and Modelling. These techniques are evidenced by well-known institutions (“Engaging learners through pair programming - Teach Computing”, 2025) (“Modelling the programming process 4 through live coding - Teach Computing”, 2025).

2.2 Paired Programming

Paired programming offers a structured approach to collaborative learning, aiming to mitigate the cognitive overload often experienced by novice programmers who encounter complex syntax. By assigning distinct roles, the “driver” who writes the code and the “navigator” who reviews and guides, the task is broken down. This division of the task allows the learners to focus on one task, reducing the mental effort required to simultaneously manage syntax, logic, and problem solving. This “collective working memory effect” (NCCE, 2021) can be particularly beneficial when tackling syntax errors, as the navigator can provide immediate feedback and catch errors.

Constructivist learning theory, as proposed by Vygotsky (Vygotsky, 1978), suggests that learners actively construct understanding through social interaction. Paired programming aligns with this by providing structured opportunities for dialogue, feedback, and collaborative problem solving. It supports Vygotsky’s Zone of Proximal Development (ZPD), where learners develop skills through guidance and support from peers.

McDowell et al., 2002 reported a 15% increase in post-test performance in undergraduate computer science students using paired programming. Similarly, Williams and Kessler, 2000 found that code produced in pairs had fewer logical and syntactical errors and was completed more quickly. Although these studies focus primarily on higher education, recent research by Sentance et al., 2019 within UK secondary schools has shown that pupils engaged in pair programming showed improved engagement and understanding of programming constructs, particularly with younger learners aged 11–14.

There are a number of challenges that are faced by an educator in executing an effective paired programming activity (Techiebytess, 2024). Poor communication between partners can eliminate the benefits of the ‘collective working memory effect’. Miscommunications can increase the number of code faults and syntactical mistakes, rather than reducing them. The other complication is navigating the skill disparity that exists within a class. Lower attainment pupils may over-rely on higher attaining pupils. Some pupils may feel “overshadowed or left behind” which is why pupils should be paired up in a considered way.

Additionally, some students may thrive in more independent learning environments. Reflective learners, for example, might prefer to work through coding problems at their own pace and engage in self-directed debugging, rather than collaborating in real-time. It is important to consider the individual needs of each class and how they learn best.

Moreover, many studies on paired programming rely on self-reported data, such as perceived confidence and frustration levels. These subjective metrics can be influenced by social desirability bias, where students present positive feedback to please teachers or researchers. More objective data, such as the number and type of syntax errors in submitted code, time taken to complete tasks, or improvements over time, can provide a clearer picture of its effectiveness (Umapathy and Ritzhaupt, 2017).

In summary, paired programming, when implemented thoughtfully, offers significant promise in helping KS3 pupils develop syntactical accuracy and confidence. However, its success depends on 5 carefully designed activities, strategic pairing, and a classroom culture that supports both collaboration and individual reflection. These considerations will become important when I try to implement it myself in my own classroom.

2.3 Modelling

It is important to consider the role of the teacher in supporting novice programmers. Modelling is an increasingly recognised pedagogical strategy in computing education, particularly when support practical tasks with pupils at Key Stage 3. By making expert thinking visible, modelling helps pupils understand both the structure and reasoning behind the code they are writing, addressing the challenge of learning new syntax and syntax languages.

When implemented effectively, modelling can be a teacher led approach that involves demonstrating coding practices and includes the identification and correction of syntax errors in real time. A teacher may employ a number of techniques to emulate syntax errors, such as intentionally making mistakes to prompt pupils with. This is a supported technique across the literature. In this paper, academics at the University of Sussex, identify the importance of using modelling (via worked examples) as a technique to teach programming (Soraya et al., 2010). Teachers modelling code in real time can expose pupils to authentic debugging practices and encourage a growth mindset around error correction. This is especially relevant when discussing KS3 pupils, who are encountering Python and the syntax of text-based programming for the first time. Studies show that they will benefit from the explicit instruction and interrogation aspects of modelling programming.

This community thread discusses the application of modelling syntax errors “in particular, show them what happens when you make a syntax error” (Various., n.d.). While the online community thread offers anecdotal insights into the use of modelling syntax errors, it lacks the rigour of peer-reviewed research. The advice is based on individual experiences and may not be applicable to all learners or contexts.

Modelling also helps to overcome the “syntax barrier” described by Robins et al., 2003, whereby learners became fixated on avoiding errors rather than understanding the underlying concepts. When teachers model how to respond to errors, it can shift pupil’s perspective of mistakes and lead to a positive classroom culture where errors can be discussed openly.

Modelling support the cognitive apprenticeship theory, in which learners acquire new skills through guided experience (Collins et al., 1988). In Computing, this involves the teacher acting as an expert programmer, demonstrating problem-solving processes and gradually releasing responsibility to learners. For KS3 pupils, this structured support can be particularly helpful when introducing unfamiliar syntax, such as indentation, use of colons, or variable naming conventions.

Overall, the literature supports modelling as a high-impact strategy for programming instruction. It helps understand code, builds confidence, and enables learners to internalise good habits, providing a foundation for more independent and error-resilient programming in future stages of learning.

2.4 Summary

A review of the literature highlights that beginner programmers frequently struggle with syntax errors, particularly issues like incorrect indentation, case sensitivity, and punctuation. These errors can significantly hinder learners’ progress and confidence. Research also emphasises the importance of explicitly modelling programming processes, which helps to demystify code structure and reduce misconceptions. Modelling supports cognitive load reduction by making abstract concepts concrete and giving learners the chance to observe and understand expert thinking . In parallel, paired programming is shown to encourage collaboration and engagement, reducing cognitive load through the “collective working memory effect” and improving accuracy through peer support (McDowell et al., 2002). While each strategy presents implementation challenges, such as communication issues or learner preferences for independent work, the consensus across the literature supports their use to enhance novice programmers’ fluency and confidence. These insights directly informed the pedagogical choices in my intervention, shaping the design of a KS3 unit intended to address syntax misconceptions in a practical and engaging way.

3. Application of Research to Teaching

In addressing syntax misconceptions, I have drawn upon my two research informed strategies of modelling and paired programming to enhance pupil understanding and engagement. The unit of work was structured around Python Turtle, providing a visually engaging and purposeful context for programming. Creating geometric shapes (such as rectangles, diamonds and circles) offered a clear and predictable program flow.

Creating a rectangle
Draw a line down
Turn left
Draw a line across
Turn left
Draw a line up
Turn left
Draw a line across


Pupils could follow the steps in the program by drawing the shape themselves on paper, reducing the level of abstraction needed for the activities. This helped to make the abstract syntax of Python more concrete, reducing the Cognitive load and supporting the development of procedural understanding, a key concept for beginner programmers (Sweller et al., 2011). To deliver this unit, I used Trinket.io, a browser-based coding platform that includes both a text-based Python mode and a block-based mode. This choice as significant, as it enabled me to bridge pupils’ prior experiences with block-based programming tools (such as Scratch) with the new challenges of writing in a text-based language. This aligns with research by Grover and Basu, 2017, who argue that transitioning from block-based to text-based programming requires scaffolded support and a meaningful progression model. Many of the core concepts (such as loops, and variables) could be demonstrated and experienced in the block-based environment. When pupils feel confident with these concepts, the lesson would switch to a text-based environment and the focus can shift to the syntax misconceptions.

Modelling would play a crucial role throughout the unit within the teaching episodes. I employed the principles of cognitive apprenticeship (Collins et al., 1988) by verbalising the reasoning behind each line of code, allowing pupils to see how programmers approach debugging and syntax correction in real time. Intention mistakes can be employed to pose questions to pupils for real-time formative assessment and checking the current status of the misconceptions.

In the independent activities, Pair Programming would be applied to support collaborative learning during the activities held in the text-based environment of Trinket. Pupils would be paired up using a pre-defined seating plan based on their confidence level. One pupil would act at the “driver” and one pupil would act as the “navigator” and they would write and review code together. Supported by the research, this method helps to build confidence in programming amongst pupils, and encourages pupils to identify syntax mistakes themselves leading to that deeper understanding.

The Lessons

A six-lesson unit was designed to progressively build the pupil’s understanding of programming concepts, whilst addressing misconceptions and reducing the cognitive load demands typically associated with syntax learning. The lesson sequence was informed by the Cognitive Load Theory (McDowell et al., 2006) and the principles of scaffolded learning. There would be periods of self-reflection throughout the six lessons, which would act as formative assessment to form the pairings during the paired programming activities. If successful, this unit would lead to pupils feeling confident and fluent in their block-based and text-based programming.

The first lesson reintroduced pupils to block-based programming, providing a low-threshold entry point for starting the topic. It built on pupils prior experience with Scratch in Year 7 and primary school. This lesson focused on the concept of ‘sequencing’ showing pupils how to order instructions to build simple shapes, such as rectangles, diamonds, and triangles. In lesson two, more key programming concepts were introduced inside of the block-based environment, such as ‘iteration’ and ‘variables’. These lessons embedded these concepts and encouraged computational thinking, but in a familiar programming environment and with tasks that they could visualise clearly.

Modelling was used throughout showing pupils how to create a simple shape (rectangle) by dragging and dropping blocks together in the right order. Cold calling was introduced alongside the demonstrations, to identify any new or prior misconceptions before moving on. In lesson three, the same programming challenges were re-contextualised using a text-based programming environment, using Python Turtle. The shift was carefully planned with deconstructed comparisons showing the action, the block-based version and the text-based version. This helped to bridge the gap between the tasks set in the block-based environment to the new text-based language. Keeping the tasks similar helped pupils to focus on re-applying the skills in a different concept, rather than feeling overwhelmed and unsure. Grover and Basu, (2017) emphasise the importance of this type or transitional scaffolding to ease the jump from block to text-based programming.

Through the teaching episodes centred around modelling the new language, syntax errors could be shown and discussed through class discussion. This first lesson focused on the common mistakes such as capitalisation, incorrect indentation and misuse of brackets. During the independent activity, I could circulate and spot these errors when they occurred and challenge pupils to explain what the mistake was and how they would fix it, on a 1 to 1 basis.

Lesson four and five were dedicated to pair programming, encouraging pupils to support each other in using correct syntax. The apply tasks were more complex in nature, asking pupils to now combine shapes together to create a larger design. These activities gave pupils the ability to verbalise their thinking and collaboratively resolve errors. Through this verbalisation, I could also easily identify errors and misconceptions based on what the pupils were saying. Drawing from research on collaborative learning (Vygotsky, 1978; McDowell et al., 2006), this approach provided both cognitive and emotional support, and the informal feedback from their partner, increased their confidence and accuracy in syntax by the end of the lesson.

Lesson six brought everything together into a fun activity that I could go around and assess. Pupils applied their skills independently to design a number of national flags using Python Turtle. I used modelling to show them how to create an easier flag and then encouraged them to try more complicated flags. This open-ended task allowed me to see all the skills covered, such as ‘sequencing’, and ‘iteration’ and the success of the design wound indicate that there were no syntax errors in their code.

4. Methodology

To evaluate the effectiveness of my project in addressing syntax misconceptions in Python at KS3, I adopted a practitioner inquiry approach, supported by structured self-reflection and formative assessment data. Being a reflective teacher, gives us the opportunity to improve practice through self-awareness, respond to our pupils needs and bridge the gap between theory and practice. My project is supported by literature, and clearly through out but the reflection gives me a chance to reflect on the successes and identify improvements that need to be made. I sought a reflective framework that supports continuous learning and improvement within the classroom, rather than one reliant on formal assessment, such as marked pupil work.

The reflective model chosen for this inquiry is Gibbs’ Reflective Cycle (1988), which offers a structured yet flexible approach to post-lesson reflection. Gibbs’ reflective model is particularly well-suited as it encourages cyclical thinking through six key stages: Description, Feelings, Evaluation, Analysis, Conclusion and Action Plan. This framework promotes deep engagement with my teaching practice, encouraging critical reflection on both emotional and pedagogical dimensions of a lesson. The emotional side is especially important for my reflections, as I complete lessons with a resounding emotional response about how successful I feel the lesson was or how well the pupils responded to the material.

One of the key strengths of Gibbs’ model is that it supports reflective practice even without formal graded work, as it focuses on the teachers’ lived experience, pupil responses and observed learning behaviours (Finlay, 2008). This made it particularly appropriate within the context of my lessons, where I had access to to formative assessment data rather than a summative, marked portfolio of evidence.

Following each lesson in the unit, I engaged in a structured reflection using Gibbs’ six stages. I documented what occurred during the lesson (Description), how I felt it went (Feelings), and my initial judgements about its success (Evaluation). I looked at why certain misconceptions persisted or were resolved, using evidence from classroom dialogue, coding outputs, and the types of syntax errors pupils made (Analysis). This led me to identify key learning points and decide on next steps for future lessons (Action Plan). This iterative process mirrors Sch¨on, 1983 concept of the “reflective practitioner”, where teaching in continually refined in response to the in-classroom experience.

I did collect some qualitative and quantitive data from several sources to support my reflections.

  • R-A-G Self-Assessment data from pupils was gathered at the mid-point (before starting the text-based programming) and the end of the unit. Pupils assessed their confidence against key learning points from the topic. This allowed me to track changes in pupil’s confidence over the course of the unit.
  • Attainment grades using the schools levelling system. This offered a summative assessment of the pupils proficiency in the topic, but was based on a marking band rather than a score. For example, 0 would be “Does not apply themselves in the lesson, and have shown no development of skills” whereas 5 would “Applies themselves to all tasks to completion and in most cases goes beyond what is expected”.
  • Lesson observations and feedback from mentors and visiting staff provides an external insight into the classroom climate, engagement and effectiveness. These qualitative comments support my own reflections over the course of this unit.


  • Together this data will provide a number of different perspectives about the effectiveness of this project. These approaches align with the action research ethos, where the teacher is both practitioner and researcher, engaging in reflection for their own professional development (McNiff and Whitehead, 2006). It also supports the development of reflective capacity, an essential characteristic of effective computing teachers.

    5. Critical Evaluation

    5.1 Results

    This section presents key findings that were gathered through reflective journaling using Gibbs’ Reflective Cycle (1988), pupil self-assessment (RAG ratings), attainment grades, and feedback from lesson observations. The Data was collected across a six-lesson unit designed to address misconceptions in Python Syntax using strategies, such as pair programming and modelling. One of the most notable trends in the data was the increase in pupil confidence and attainment after working in pairs on Python programming tasks. This mirrors the work of McDowell et al., 2006 who found that pair programming not only improves program correctness but also enhances pupil retention and self-efficacy. In my own classroom, this was reflected in the R-A-G data: at the midpoint of the unit only 29% of pupils self-assessed as “green” for ‘I can use iteration to make my programs simpler’; by the end of the unit, this had increased to 59% and the remaining 18% assessed themselves as “Amber”. (The remaining percentage was pupils who were absent on the final lesson).

    The use of modelling as a teaching strategy proved highly effective in clarifying complex syntax rules, as can be seen throughout my reflections. Research by Collins et al., 1988 on cognitive apprenticeship emphasises the importance of modelling expert thinking. In my own practice, I modelled writing and debugging code with live narration, drawing attention to common mistakes such as forgetting colons after control statements or misalignment of indentation. This approach resonates with Rosenshine’s (2012) principles of instruction, particularly “presenting new material in small steps” and “providing models”.

    Observation feedback supported the success of these lessons and pedagogical approaches. One observer noted: “The use of pair programming was an effective way to help students understand the concept being taught”. This supports the ore strategy of this project, showing that pair programming enabled pupils to engage in collaborative dialogue and troubleshoot syntax errors together.

    The observations highlighted the effective classroom management that went alongside the pedagogical approaches, with one observer saying “. . . actively circulated the room to check students’ progress and understanding, which is great. This shows the conscious effort I made to circulate a gather observable data to reflect upon after the lesson, as well as provide 1 to 1 support and monitor progress.

    Observation feedback indicated that pupils were more engaged during pair programming tasks, with one observer noting that “collaboration helped reduce syntax errors, especially for pupils who lacked confidence.” This aligns with the literature on the benefits of collaborative learning in computing. My own reflections supported this observation. In Lesson 4, I wrote that “these ‘active discussion’ aspects helped pupils connect with error messages and find faults within their own code,” highlighting the metacognitive benefits of having a partner to think aloud with.

    By Lesson 5, I had refined the structure of pair programming, implementing timed role switches and modelling of the driver/navigator roles, which I noted helped “ensure that pupils got started in their roles immediately.” This improved classroom management and ensured a more equal distribution of cognitive effort, helping to eliminate the “passivity” I had seen among weaker navigators in Lesson 4. These iterative improvements show how reflective practice helped me respond to barriers in real time.

    Similarly, my reflections revealed that by Lesson 3, I had adapted my modelling approach to scaffold syntax more clearly, based on observed pupil difficulties. I had initially felt “slightly anxious about introducing text-based syntax” but later noted how “pupils responded positively” and that modelling helped them “bridge the transition from blocks to code.” I recognised that “syntax issues did occur (e.g., incorrect indentation or forgotten colons), but pupils were increasingly able to debug these,” echoing the findings of Becker et al. (2016), who stressed the importance of teaching learners to make sense of error messages.

    By Lesson 6, this scaffolding had paid off. I observed that pupils “asked far fewer questions related to syntax” and that “debugging was mostly independent.” Pupils demonstrated improved fluency in the Python programming language, specifically in ‘sequencing’ and ‘iteration’, avoiding misconceptions like improper use of indentation and capitalisation errors.

    5.2 Discussion

    My findings support Grover and Basu, 2017, who found that structured transitions from block-based to ext-based programming reduce learner anxiety and improve code accuracy. However, Grover and Basu, 2017 observed significant performance dips when moving between blocks and text which wasn’t observed in my own observations. The use of Trinket.io’s block & text features appeared to smooth the transition. Pupil comments throughout the lessons indicated that they used the toggle-feature to switch from seeing Python text to Python blocks, if they got stuck. This helped them understand the logic of the program and then apply that to their own work. This suggests that carefully chosen tools can actually have a mitigating impact on some of the conceptual barriers identified in the broader literature.

    The success of pair programming in reducing syntax errors echoes the work of McDowell et al., 2006, who showed improved performance and confidence among novice programmers. Pupils were similarly observed to engage more critically with their code when working collaboratively. Rather than relying solely on teacher intervention, pairs supported one another in identifying and correcting syntax errors, often talking through the logic of the code aloud. This aligns with Vygotsky’s theory of social constructivism, whereby knowledge is co-constructed through dialogue and interaction (Vygotsky, 1978). The driver-navigator roles in pair programming encourage these social aspect of developing programming skills, and peer feedback helps to reinforce correct syntax. Similar to the observations of Sentance and Csizmadia, 2016, pupils in my study benefited from visual contexts (e.g. Python Turtle), which made abstract syntax rules more concrete. They argued that visualisation and context-rich tasks support students in understanding how individual lines of code relate to the program flow and structure. In my lessons, this was particularly evident using modelling to demonstrate drawing rectangles, other shapes or the flag task in the final lesson. This approach also helped to reduce cognitive load associated with interpreting programming syntax without context.

    I observed that case sensitivity errors these diminished rapidly once modelling and the pair programming pedagogues were introduced. In early lessons, I observed pupils writing ‘IF‘ rather than ‘if‘ or leaving a space before the brackets. However, by the end of the fourth lesson, these mistakes had reduced significantly. This improvement may be attributed to the consistent repetition of modelling examples, and the collaborative feedback aspect of pair programming. Some pupils in the class used these error messages as effective prompts to improve their code, particularly when paired up with a partner to discuss it with. As described in my reflective journal, this is due to the effectiveness of the modelling teaching episodes in lessons 1 - 3, that identified syntax mistakes and showed pupils how the errors occur and how to debug them.

    5.3 Implications

    These results suggest that future KS3 programming curriculum content should be carefully structured to include regular opportunities for both pair work and live teaching modelling. These strategies appear to be effective when introducing higher-level programming concepts, such as loops, or when pupils are confronted with new syntactical rules that differ from their prior experience in block-based languages. By embedding collaboration at key transition points in the learning cycle, practitioners can reduce cognitive overload and the likelihood of syntax errors, as learners are supported both by their peers and by teacher-led examples.

    Alongside this study, it has shown the effectiveness of using tools like Trinket.io to bridge the block-based content from KS2 into the text-based content of KS3. Trinket’s ability to integrate both block and text modes provides an ideal scaffolding tool for bridging the gap in learner understanding. For pupils unfamiliar with Python syntax, being able to preview the underlying code while manipulating blocks gives them a contextualised understanding of commands, formatting, and structure. This aligns with the research around dual coding theory (Paivio, 1991), which suggests that combining visual and textual representations can improve understanding and retention. The decision to use Trinket was also rooted in a desire to reduce barriers to entry for less confident learners, ensuring all pupils could begin writing meaningful code from the outset of the unit.

    Through the consistent application of Gibb’s Reflective Cycle (1988), I became a more responsive teacher, addressing misconceptions as they emerged, particularly by anticipating potential mistakes identified by others in the literature. This structured process enabled me to reflect systematically on each lesson, examining not only what went well, but also what could be improved, particularly in relation to persistent misconceptions. In doing so, I became more proactive in identifying potential misconceptions, such as indentation errors or misunderstanding the use of colons, before they occurred in the classroom. Drawing on insights from classroom observers and pupil R-A-G assessments, I was able to refine my explanations and adjust lesson pacing, which helped to better support pupils who were struggling. These reflections also encouraged me to test different styles of teaching, including more real-time coding examples and strategic use of questioning to assess understanding mid-lesson.

    My understanding of the connection between conceptual understanding and syntactical knowledge in programming has deepened significantly throughout this project. I now better appreciate how a pupil’s grasp of high-level constructs like iteration or sequencing is often undermined by their uncertainty over basic syntax. This reinforces the perspective articulated by Schulman, 1986, who argues that effective teaching relies not only on knowing the subject matter, but also on understanding how best to convey it to learners. By integrating modelling, I was able to tailor my instruction to anticipate areas of confusion. This process has enhanced my pedagogical content knowledge (PCK), giving me a more nuanced understanding of how computing concepts should be sequenced, modelled, and assessed.

    5.4 Evaluation

    This project was successful in improving both pupil confidence and attainment in Python syntax. Data suggests that modelling and pair programming worked together to tackle common misconceptions and build confidence.

    Limitations This study was completed over a short time-scale (six lessons) and with one class. Broader conclusions about the success of these pedagogical approaches would require implementation across multiple classes, school contexts and over a longer timeframe. The self-assessment data collected by the pupils’ R-A-G ratings, while useful, may contain bias due to over (or underestimation) by pupils.

    Future Work Other strategies could be implemented alongside these to help further tackle syntactical mistakes. Using starter activities to focus on errors and how to solve them could reinforce pupils about how to approach an error in their syntax. The choice of IDE can also greatly help to tackle syntax by having auto-completion, syntax highlighting and syntax feedback. Some academics have suggested the implementation of auto-marking tools and code tracing exercises to further diagnose misconceptions that could be implemented on a future unit.

    Conclusions

    This reflective study has deepened my understanding of how to effectively teach programming to Key Stage 3 pupils transforming me into a more effective teacher of computing. I’ve done this by addressing common misconceptions around syntax rules. Through a structured six-lesson sequence grounded in research supported pedagogical approaches, I explored how modelling and paired programming can work together to support both conceptual and procedural knowledge. Beginning with block-based environments allowed pupils to follow modelled instructions and develop computational thinking skills without being hindered by the overall rules of syntax, aligning with cognitive load theory and a dual coding approach. As pupils transitioned to text-based programming, the live modelling and pair programming activities taught pupils how to write and debug code. My reflections from lesson 3 highlighted how “modelling helped bridge the transition from blocks to code” and this pedagogical approach created confidence in pupils for the longer activities at the end of the unit.

    The use of pair programming developed the pupil’s syntactical knowledge through deliberate practice, scaffolding and peer dialogue, I observed that “collaboration helped reduce syntax errors” and that pupils engaged in more purposeful discussions, while working together. This aligns with theory around the collective working memory effect and supports the constructivist approaches to learning, which stress the importance of interaction and co-construction of knowledge. By lesson 5, my implementation was more structured around role-switching to ensure balanced participation from all pupils.

    Throughout this unit, I applied Gibbs’ Reflective Cycle to refine my practice in real time. For example, after noticing in lesson 2 that verbalising programming concepts led to faster understanding, I created more opportunities for discussion in subsequent lessons. Similarly, after identifying unequal participation in lesson 4, I revised my pair programming routines in lesson 5 to ensure more equal engagement. These reflective adjustments, show how I transforming into a reflective and responsive teaching of computing, significantly improving the quality of learning and outcomes for my pupils.

    Sources

    • Collins, A., Brown, J. S., & Newman, S. E. (1988). Cognitive apprenticeship. Thinking: The Journal of Philosophy for Children, 8, 2–10. https://doi.org/10.5840/thinking19888129
    • Du Boulay, B. (1986). Some difficulties of learning to program. Journal of Educational Computing Research, 2, 57–73. https://doi.org/10.2190/3lfx-9rrf-67t8-uvk9
    • Engaging learners through pair programming - Teach Computing. (2025). https://teachcomputing. org/blog/engaging-learners-through-pari-programming
    • Finlay, L. (2008, January). Reflecting on ’reflective practice’. Open Research Online. https://oro. open.ac.uk/68945/1/Finlay-%282008%29-Reflecting-on-reflective-practice-PBPL-paper- 52.pdf
    • for Education, D. (2021). Teachers’ standards. GOV.UK. https://assets.publishing.service.gov.uk/ media/5a750668ed915d3c7d529cad/Teachers standard information.pdf
    • Grover, S., & Basu, S. (2017). Measuring student learning in introductory block-based programming. Proceedings of the 2017 ACM SIGCSE Technical Symposium on Computer Science Education. https://doi.org/10.1145/3017680.3017723
    • King’s. (2024). Programming education in England’s secondary schools. https://www.kcl.ac.uk/ programming-education-in-englands-secondary-schools
    • McDowell, C., Werner, L., Bullock, H., & Fernald, J. (2002). The effects of pair-programming on performance in an introductory programming course. Proceedings of the 33rd SIGCSE technical symposium on Computer science education - SIGCSE ’02. https://doi.org/10.1145/563340.563353
    • McDowell, C., Werner, L., Bullock, H. E., & Fernald, J. (2006). Pair programming improves student retention, confidence, and program quality. Communications of the ACM, 49, 90–95. https: //doi.org/10.1145/1145287.1145293
    • McNiff, J., & Whitehead, J. (2006). All you need to know about action research. Sage Publications. Modelling the programming process through live coding
    • Paivio, A. (1991). Dual coding theory: Retrospect and current status. Canadian Journal of Psychology / Revue canadienne de psychologie, 45 (3), 255–287. https://doi.org/10.1037/h0084295
    • Robins, A., Rountree, J., & Rountree, N. (2003). Learning and teaching programming: A review and discussion. Computer Science Education, 13, 137–172. https://doi.org/10.1076/csed.13.2. 137.14200
    • Sch¨on, D. A. (1983). The reflective practitioner. Routledge.
    • Schulman, L. S. (1986). Those who understand : Knowledge growth in teac
    • hing. Ceras, School of Education, Stanford University.
    • Senecca. (2025). Syntax errors - computer science. https://senecalearning.com/en-GB/revision- notes / ks3 / computer - science / national - curriculum / 2 - 1 - 19 - syntax - errors (accessed: 23.02.2025).
    • Sentance, S., & Csizmadia, A. (2016). Computing in the curriculum: Challenges and strategies from a teacher’s perspective. Education and Information Technologies, 22, 469–495. https: //doi.org/10.1007/s10639-016-9482-0
    • Sentance, S., Waite, J., & Kallia, M. (2019). Teaching computer programming with primm: A sociocultural perspective. Computer Science Education, 29, 136–176. https://doi.org/10.1080/08993408.2019.1608781
    • Soraya, S., Rahman, A., & Du Boulay, B. (2010). Learning programming via worked-examples. Retrieved May 4, 2025, from https://users.sussex.ac.uk/∼bend/papers/ppig2010siti.pdf
    • Sweller, J. (1988). Cognitive load during problem solving: Effects on learning. Cognitive Science, 12 (2), 257–285. https://doi.org/https://doi.org/10.1207/s15516709cog1202\ 4
    • Sweller, J., Ayres, P., & Kalyuga, S. (2011). Cognitive load theory. Springer New York. https : //doi.org/10.1007/978-1-4419-8126-4
    • Techiebytess. (2024, March). Overcoming Challenges In Pair Programming: A Comprehensive Guide raquo; Techiebytess.com. https://techiebytess.com/challenges-in-pair-programming
    • Umapathy, K., & Ritzhaupt, A. D. (2017). A meta-analysis of pair-programming in computer programming courses. ACM Transactions on Computing Education, 17, 1–13. https://doi.org/10.1145/2996201
    • Various. (n.d.). How to teach beginning students how to find and fix syntax errors? https://cseducators.stackexchange.com/questions/3485/how-to-teach-beginning-students- how-to-find-and-fix-syntax-errors
    • Vygotsky, L. (1978). Mind in society. Psychological Medicine, 11. https://doi.org/10.1017/s0033291700041507
    • Williams, L. A., & Kessler, R. R. (2000). All i really need to know about pair programming i learned in kindergarten.

Teach First Ambassador Project

"A Journey in Data Modelling"

This Ambassador Project focused on transforming departmental data practices to improve pupil outcomes while simultaneously reducing teacher workload. By implementing diagnostic assessment and automated feedback systems across Key Stages 3 and 4, the project successfully streamlined administrative processes, returning valuable planning time to educators, and provided teachers with precise, data-driven insights to help students bridge specific learning gaps.

Events

STEM Communication

I've carved out a unique niche in the world of STEM communication. Through my previous work at the University of Kent and the STEM Ambassadors scheme, I've aimed to make scientific concepts engaging, inspiring and entertaining for a variety of audiences.

In my catalogue of talks, expect to find a selection of lectures, talks, stand-up comedy shows and live events.

Event 2
The Ridiculous Quirks of a Mathematically Imagined World
Mathematics is like poetry filled with ridiculous quirks and wild stories. Prepare to be bewildered or perhaps even learn something.
Event 2
Can AI Stand-Up?
AI-generated content is taking over the creative world. But can large-language models replace stand-up comedians? Watch Tommy explore the process of generating stand-up comedy with AI.
Event 2
2035 and the Future of AI
Everyone says that AI is going to destroy our future, but is that truly the case? Let me guide you through the current state of what AI can do and present a more hopeful future.
Event 1
Let's Change How We Make Presentations
Making PowerPoint Presentations manually is so 2020. Let's explore how we can use AI to make our presentations for us. My code for combining LLM, Stable Diffusion and Reveal.js will change the way you work.
Event 1
Stand-Up and Deliver
An in-depth look into stand-up comedy theory, measuring humour and creativity in computational systems and how to use iterative prompt-chaining to develop stand-up comedy material.