Following the success of the Little Book of Algorithms - Over 20,000 downloads and hundreds sold worldwide, I'm pleased to announce version 2.0. The publishing model will stay the same, the digital PDF will be available free of charge (See bottom of post). For those who want to support me by buying a hassle-free printed physical paperback, you can do so on Amazon or directly here.
What's new in version 2.0?
Teaching, like software development and learning is about refinement. In this new version there are two key changes.
Firstly, challenges now directly follow each relevant skill. This reflects the structure of most mathematics textbooks and workbooks. It means there’s less time and effort spent flicking backwards and forwards.
Secondly, there are a greater number and range of challenges because you will become a better programmer and computer scientist by solving a greater number and range of problems.
While answers remain in the back of the book, I have also started creating walkthrough video solutions to some of the more complex challenges. These are available on Youtube here.
The Little Book of Algorithms 2.0 concisely presents 18 problems which computer science students will commonly encounter. These problems are solved efficiently using programs written using Python. However, reading these programs is not enough, so this new version of the book now comes with 48 challenges so that you can apply what you have learnt in various ways:
Writing your own programs
Solving Parson’s puzzles
This range of exercises will help you to become more fluent in Python and ensure that you are comfortable with any question format in a programming exam.
After finishing this book, you should feel more familiar with:
While loops and For loops
Concatenating different data types
Using procedures and functions
Working with 1D and 2D lists and arrays
File reading and writing
This book will show you how to write better Python programs and will expose you to the key skills that are required to do well in any secondary school programming assignment or exam.
I wish you the very best on your learning journey.
Free version: Here
Pre-printed paperbacks: Amazon
During the lockdown, I have received a few emails from
teachers about what we can do to keep abreast of curriculum changes and also
develop our subject knowledge, and pedagogical content knowledge. Here are my
General pedagogy, teaching and learning:
Dylan Wiliam’s latest videos offer some input and then a
discussion point which you can have with yourself, an online community or your
ResearchED have had some incredible speakers. Take your pick
from Daniel Willingham, Becky Allen, Sam Sims, Nick Rose, Daisy Christodoulou,
John Sweller, John Hattie, Dylan Wiliam, Pedro De Bruyckere and more: LINK
I'm a big fan of the Teach Like a Champion blog as it discusses techniques in written form and then shows a relevant video. The current posts reflect on remote teaching and the previous posts are based on the classroom and sports coaching: LINK
Tom Sherrington’s Kitchen pedagogy series. This series focusses on research-informed ideas: LINK
As mentioned in my last post, we are essentially
communicators and public speakers. One of my favourite videos for how to
engage and speak publicly:
GCSE Computer Science
There are new specification changes from Sept 2020. OCR have
launched their new GCSE Computer Science course J277 and Paul Long has
discussed the changes on this excellent post. A summary of the key differences
are on the last page: LINK
As the spec changes are quite minor, I still recommend
Computer Science Tutor’s tutorial series: LINK
Craig N Dave have also updated their video series for J277: LINK
Mr Weir has a great presentation style which I enjoy: LINK
Technocamps have a range of “activity packs” mainly aimed at
KS3 and KS4 and they are great for teachers too: LINK
Isaac Computer Science launched their full content this
week. There are lots of mini exercises and the explanations are clear and
concise. All the material is written by current or former A-Level Computer
Science teachers who I respect.
I have been very fortunate to have had the opportunity to
observe hundreds of lessons and work directly with mentoring and supporting
more than 30 Newly/Recently Qualified Teachers. I also base my reflection on
the incredible books that have been recommended to me as well as my own
experience teaching over 8000 lessons in 5 different schools over 14 years.
aim of this article is not a critique of any particular teacher training
programme – it could perhaps be considered as a compilation of the best
practice from the various programmes and teachers that I have had the pleasure
of observing, developing and working with. Coverage of the following would
ensure a solid foundation for any teacher. Some might even use this as a
knowledge audit to identify areas for development in themselves or in teachers
they are mentoring.
If we spend roughly 70% of our working day directly teaching
lessons, I would argue that the majority of this time is spent communicating.
We communicate ideas, subject content, our ethos and our expectations every
day. So perhaps sessions on the following would be useful:
Regular feedback on presentation-a weekly exercise could be
for developing teachers to communicate a complex idea, perhaps something from
their subject specialism or a specific learning theory. I really enjoy Wired’s
5 Levels series so perhaps it could be inspired by that. Trainees should
have the experience of trying to teach a concept with or without certain aids e.g.
without a whiteboard, with only a whiteboard, with only powerpoint, with only a
visualiser and to reflect on which content is best taught through which medium.
Handwriting practice (on a whiteboard)-this will be one of the
primary methods of communicating ideas for many teachers, learning how to write
legibly on a board is often neglected.
Other strategies from Doug Lemov’s excellent Teach Like A
Champion (TLAC) 2.0 book e.g. Threshold, RADAR, Breaking the plane, Strong
Voice, Circulate, Strong Start. I cannot emphasise enough the importance of
Lemov’s work and his book. I would argue that not a single day lesson goes by
without me using at least 5-10 of his techniques. Likewise, when I look to help
teachers improve, frequently I will identify a TLAC technique as the best
action point or lever for improvement.
As aforementioned, Lemov’s TLAC 2.0 book should be a core
text for any teacher training programme, when it comes to routines, Lemov’s
book and accompanying videos distill the most effective strategies used by great
teachers around the world. Whilst Lemov’s section on Systems and Routines
mentions only six techniques, I would argue that the whole chapters 1,3,5 and 7
cover another 20 routines which are essential for an efficient and effective
Beginning teachers often spend some time learning to design
resources, but they may often be left to their own devices to “explore what
works” and “try things out” based on their initial lesson observations of other
teachers. Based on the principles of direct instruction that we would use with
novice students, I would argue that beginning teachers also need to be taught
in the same way, with direct instruction and only gradual fading once expertise
has been developed. Here are a few things which every teacher should know how
Multiple Choice Questions
Do Nows which interleaves, reviews and provides a form of
low stakes testing and formative assessment
Worksheets or workbooks which follows the “I, We You” and
Shed Loads of Practice (SLOP) format – starting with teacher modelling,
followed by joint construction and leading to lots of independent practice
Sequence of lessons- which build on prior knowledge and
allow for revisiting of content
A spreadsheet marksheet/tracker – SUM formula, VLOOKUP,
A seating plan (preferably in a spreadsheet) and what data
to use. The data I always start with is prior attainment to ensure weaker
students have a strong partner near them. I would also then check this seating
plan with the Head of Year for potential behaviour issues and compatible
Functional wall displays
Workload and time management
This is something that all teachers will struggle with at
some point, but certainly in the early days when lesson planning may take hours
in itself. A few useful strategies:
Stephen Covey’s Time management matrix
Planning by the week (Not by the day)
Importance of Sleep
Use of technology e.g. Quizlet, Google/Microsoft Forms, Online
resource banks and communities (Facebook, Twitter and subject specific
communities), using email filters, classroom management software
Marking and feedback
Sampling and Whole Class Marking and Feedback
Immediate and precise feedback during circulation
How to mark summative assessments (Question by Question),
identifying misconceptions and actions to address these gaps
Science of learning and research-based instructional strategies
Instructional principles and pedagogy should be based on
research along with experience of the tutor. I will provide an extensive
reading list later. However, here are the key theories which every beginning
teacher should be aware of:
Direct instruction and gradual release
Cognitive Load Theory
Retrieval Practice and low stakes testing
Elaborative interrogation – asking how and why
Semantic Waves (Legitimation Code Theory)
In addition to the above general theories. I would also include
sessions on subject-specific pedagogy.
Classroom culture is such an important topic and although
most students are taught about high expectations, it would also be useful to
talk about explicit strategies for building a culture of success in the
classroom. A strong learning culture encourages students to learn from
mistakes, to participate and be proactive in their learning and students will
have a strong (collective) purpose for being in that classroom.
Oli Knight and David Benson discuss the importance of
thinking like an expert in a specified subject in their book “Creating
Outstanding Classrooms”. This concept is based on David Perkins’ “Playing the
Whole Game”. Students and teachers need to know how to think like a Mathematician,
Computer Scientist, Artist, Musician, Historian etc. What does it look like or
mean to be an expert in this field. This has to be the end goal for students
and we need to design our curriculum not only to match the specifications
(which will change regularly) but also to prepare students for the real world.
For some teachers, they may enter the profession directly from university,
without much industry experience. It may therefore be useful to have industry
talks and panels to map the talent pipeline and get insights from industry.
What are the most important and in-demand skills in the industry, how can we
teach “junior versions” of this.
All of the above would produce a solid foundation for any
teacher. After 14 years, I still think I need to work on certain areas above. It is an ambitious and utopian teacher training programme. The big picture is complex and I’ve tried in the past to codify it in a
diagram, shown below:
You will notice that I have not really focused on behaviour management in this post. This is partly because Lemov's book is a solid starting point and clear routines themselves lead to fewer behaviour issues to start with. I may decide to do a later post on behaviour inspired by the work of Bill Rogers and Michael Linsin.
Some may think that I am prescribing a particular way of
teaching for all. I do not believe in “Roboteachers” and a set way. These techniques are a
toolkit and the way we use these will vary as teachers develop their own
teaching style. Joel Klein once said, “You can mandate adequacy , but you
cannot mandate greatness: it has to be unleashed.” Eventually, teachers will
build on this foundation and discover their own teaching style.
These are the books that I would recommend for all teachers. They're the best books that I've read over the past 14 years:
24 hours have passed since my third CAS London conference,
so here is a write-up. This is my second time presenting at the CAS London
conference. You can find my slides from last year’s session on secondary
The organisation leading in to the 2020
event was incredible, Jane Waite and Jo Brodie clearly sacrificed a lot to
put together such a smooth and successful event. The more seamless the event,
the more well-organised it is. You never seem to notice when things don’t do
I was escorted to my room on arrival which was already set
up. I quickly loaded my slides, checked everything was working and went back
downstairs to catch up with friends and fellow teachers from the CAS network. I
spoke to one of my seniors from the Teach First programme, Peter Kemp who is
currently in charge of the ITT course at Kings’ College London. We chatted about
our open source projects Pete’s A-Level
WikiBooks and my Little Book of Algorithms
and Computer Science Colouring Book (sneak preview below).
I also got chatting to Rochelle Laurencin from ScreenSkills. ScreenSkills support
Peter Kemp’s 3DAmi animation school and it was
fascinating to hear of all the work they do, from their bursaries for courses
to their apprenticeships. I have a student who does not want to go to
university and wants to go into the film industry, so we exchanged details and
I picked up some flyers and posters to share when I returned to school.
The Keynote was by John Nixon. He’s an HMI (one of Her
Majesty's Inspectors) and Ofsted's National Lead for Computing and Online
Safety. I wasn’t expecting to take so many notes. However, with the new
inspection framework, I found myself scribbling away furiously and I realised
that the four pages I filled, was the most amount of notes compared to any of
the other sessions on the day. His keynote deserves its own separate blog post.
I figured that a lecture theatre operates very much like a
stack data structure, last in first out (LIFO), so I made sure I was at the end
of the second row and made a speedy exit to get to my session. My session was
about one dimension from Legitimation Code Theory – Semantics. I hoped to
introduce attendees to Semantic Waves and how they could apply some of the
associated principles immediately on their return to school on Monday. I
started out by looking at the big picture of classroom best practice and then
considered the role of Semantic Waves in our practice.
Perhaps Semantic Waves are a missing piece of the infinite
and addictive puzzle that we also call “teaching”.
A bold claim.
We looked at the theory and went through some
practical tasks, along with a sample lesson. All of these resources are
In choosing sessions for a conference, I have a few
parameters that go into my so called selection algorithm:
Have I attended the session before?
How good is the speaker? – What is their background? Do they
have a proven track record? How good were their previous sessions?
Can I make use of their workshop in the next week, day,
month or year?
Based on criteria 1, I therefore automatically de-selected
Sue Sentance’s and Peter Kemp’s sessions on PRIMM, Programming with Python and
Flask and 3DAmi. All excellent sessions which I chose based on criteria 2 and 3
at previous conferences. The three remaining sessions, I must admit I went by the
presenter’s reputation first. I chose:
I was not disappointed. I left trying to pick a favourite
session and at first I thought it was Hardip’s, but then I couldn’t put it
above either Paul’s or Katie’s. So why were these sessions chosen and why do
they all receive a resounding 5-star review from me?
Hardip is a rare gem in that he currently teaches both OCR
and AQA A-Level Computer Science. He taught himself how to write computer games on the Commodore 64
in the 80’s and his understanding and ability to break down and deliver complex
concepts will leave you in awe. His session used a programming language called
Forth. Hardip told us that Forth is a programming language, an IDE and a
philosophy too (woah, mind blow already). He reeled us in further by telling us
Forth was used to write programs for robotic arms on the International Space
Station and some of these programs are less than 4kb! The language is clearly robust
and it is entirely stack based which make it wonderful for teaching and
learning stacks. Despite not using Forth for 30 years, Hardip demonstrated
fluency whilst also pacing us gently through the exercises, which were all of
course mapped to AQA and OCR spec points. I chose this session based on
Hardip’s reputation and I was not disappointed. I left feeling as though I’d
just been given the cheat code to teaching stacks. How had I not realised the
sequencing and thought about using a stack-based language sooner? His iterative
approach, re-visiting how stacks are used was a key theme throughout the
conference. Thanks Hardip. You’re incredible. If you’re reading this wondering how
you can find out more about Hardip or whether he might be able to help your
school, he does outreach work as he is currently part time. So if you require
some training or 6-12 week development/teaching particularly at A-Level
standard, you can email Hardip at HardipmATgmailDOTcom.
Lunch was great as usual. I recalled that at my last
visit to Gladesmore Community School (GCS) I was impressed by the facilities
and I must say, my return left me thinking it really is a brilliant venue with great staff and students. Between Igli and his team at
GCS and Jane and Jo’s CAS London team, it sets a high standard for other
conferences. The conference’s 200 tickers were sold out and 80+ were on the waiting list. The success of this conference made me think back
to the CSTA conference – an international conference that I attended in
Baltimore in 2017. I wouldn’t be exaggerating if I said that I think we could
host something of similar scale in the UK – 1 week of Computing CPD in the
summer or Easter holidays. I’ve got so much faith in Jo, Jane and her team. I
don’t know if the CAS National Conference will make a return or not, but I can envision
an international conference within the next 5 years in the UK. We definitely
have the quality in terms of workshop /session facilitators. It was clear that
many of the sessions on Saturday could have lasted 90 mins or even 2 hours. A
format that the CSTA conference sometimes uses, allowing for 3 sessions in a
day over the week. It's something worth thinking about…
Back to the sessions. Session 3 was a somewhat unusual
choice for me. My session was entitled, "Going from abstract to concrete and back again with Semantic Waves" so why did I also attend
Paul Curzon’s session entitled "Semantic Waves"? In the run-up, Jane expressed slight frustration that I had chosen to
deliver a session with the same focus as Paul’s. However, having attended both,
I can assure her now that attendees would have got something different from
both sessions and it was totally worth it. I chose Paul’s session for several
reasons. I’ve been attending Paul’s training sessions since I first started
teaching in 2006; he’s been running sessions at Queen Mary University London
(QMUL) often with William Marsh and Jo Brodie – quite possibly they were doing this before the
existence of CAS. I always leave those sessions thinking Paul is a crazy genius
(in the nicest possible way) and that I could never deliver or teach like he
does. This is exactly the reason why I keep coming back. Paul recently won the
IEEE Computer Society 2020 Taylor L. Booth Education Award. The previous link
goes into a some detail about Paul’s contributions to computing education.
However, his attitude and work rate were exemplified by the fact that he delivered
four sessions on Saturday (including a lunchtime one!). I just about had enough head space to run one session and deliver a TeachMeet presentation. Paul clearly
operates on another level. He is a seasoned professional on the conference and
The most important takeaways from Paul’s LCT Semantic Waves
session was firstly that Semantic Waves can be used to evaluate lessons and
lesson planning. His clear division of disciplines into technical language and
abstract concepts was also powerful. Lastly, I left with the important
differentiation between a teacher planning Semantic Waves in their lesson
activities and students actually doing the repacking themselves and riding the
Yes, you may be teaching…but what are the students doing and
what are they thinking about?
This emphasis on the students doing the repacking, not just
the teacher was such a simple point, but it is an important lever in working
with Semantic Waves. We had different foci and emphasis in our sessions and I
left feeling even more informed. Of course, I also got to witness some signature
unplugged teaching activities from Paul too.
The fourth session was with Katie Vanderpere-Brown. Katie is
a regular contributor on the weekly #CASChat on Twitter (Every Tues at 8pm). I
signed up to Katie’s session based on our similar views on computing education,
our interest in cognitive science and our skepticism towards some online
learning platforms. We met briefly over lunch and when someone tells you that
they’ve come up with a way to print onto post-it notes, you realise that you’re
talking to someone who is serious about their teaching craft or someone who is
addicted to stationary or both. Katie is both.
There’s a few people who have debated with me about the
importance of passion and enthusiasm in teacher delivery style. A prolific
tweeter once proclaimed that it just wasn’t their style and enthusiasm and
passion were not important-you just need knowledge and good behaviour
management. I have to disagree! I think I can spot a good teacher within 30
seconds of watching them teach. This sounds arrogant, but I’m quite confident
in my “thin slicing” after developing and observing (probably over fifty) teachers over
the years. One of the things I subconsciously notice very quickly is whether or
not the teacher wants to be there-how passionate are they about the subject and
the lesson they are teaching? Would I want to be taught by this teacher? Within
ten seconds, Katie passed this test. Her relaxed and humble demeanor, enthusiasm and
informed delivery puts you at ease. After a minute, it felt like I was sitting
at home catching up with an old friend. Except, this was someone I’d never met
before. Katie went through three different ways of teaching the fetch-execute cycle
and I have no doubt that if you ask any of her students, they could tell you
the name and function of the registers and memory during the CPU’s fetch
execute cycle. The first activity was a card sort with printed post it notes, the
second an unplugged physical activity and then she consolidated by
demonstrating how we could use different LMC simulators. We were her guinea
pigs for some NCCE/Isaac Computer Science material and I think we all left
pretty impressed, particularly given that she was weaving metacognitive theory
in between her tasks.
The first task with post it notes, simple as it was, generated a lot of debate
about sequencing. It made us all think about what the pre-requisite knowledge was for teaching the fetch execute cycle. The three simulators that we saw: 101 Computing , Peter Higginson’s new RISC LMC
and Higginson’s AQA LMC
were all new to me. I'd grown so used to the original LMC, I had not really invested the time into exploring the new versions and I have to admit, the 101Computing one is my favourite.
physical unplugged task which demonstrated the use of cache memory would be
difficult for me to implement in my computer suite, I could see how it would
work if we had a different room layout. It is a lovely idea and clearly shows
how some instructions in cache clearly have a faster access time. The
misconception we need to be careful of here is the student's discussion of distance. Frequently students say that the cache is nearer than the RAM and this is why it is faster. Distance is somewhat insignificant in the fetch execute cycle as electrical signals move
so quickly over such short distances. This is something that a lot of
students misunderstand. The real focus of the activity should be on the access speed of different memory types and the overall execution time.
After the last session, I managed to catch up with a few old colleagues and friends
before delivering my TeachMeet presentation. My TeachMeet presentation was on
the importance of language, etymology and storytelling in computing education. My example was on the origins of cache memory and how the term "cache" originates from 18th century French Canadian fur trappers! This presentation was inspired by one of my former head teachers, the great Oli Knight. I hope those that attended will share this story far and wide.
What a day! My thanks go out to Jane, Jo and all the
volunteers for ensuring the conference was a success. Thanks to all those who
ran workshop sessions and it was good to catch up with some old friends. I hope
we can grow this conference into something much bigger with a wider
international reach. However, for now I still love the intimacy of our London CAS community conference. Until next time…
I’ve been reading Simon Sinek’s “The Infinite Game” during
my morning reading session with my sixth formers.
Occasionally, I’ll read
excerpts to them as it’s such an insightful book on long-lasting success. One particularly powerful chapter
is chapter 2, “Just cause”. Sinek argues that every company and every leader
that wishes to have sustained success needs a just cause - a vision for the future. Sinek states that a
just cause must fulfil five criteria:
For Something – affirmative and optimistic
Inclusive – open to all those who would like to
Service oriented – for the primary benefit of others
Resilient – able to endure political,
technological and cultural change
Idealistic – big, bold and ultimately achievable
In some countries, teachers have to write an educational
philosophy. I was asked to write one for a job application once and I have
attached it to the end of this post. However, the more I read Sinek's book, the more
motivated I felt to write my own just cause. Why do I do what I do, what is
it that I believe in and what is my ideal future. My just cause is as follows:
I believe in developing a world where more people know how
to use computers to make their lives easier, better and more productive. I aim
to teach computing to as many people as possible and I will do this by sharing
my resources, knowledge and skillset - primarily through my books, blog, digital
and physical resources and videos. Whilst I teach in a secondary school; I want
to also help teachers, adults and younger children discover the beauty, fun and
utility of computing.
For too many people, computing and computer science in
particular seem daunting. Many people timidly or proudly admit to “not being
good with computers”. I was once one of these people and I can confidently say
that this can change. Everyone can learn about computing, everyone should be
exposed to computing and given the opportunity to learn how to use computers to
improve our lives.
The process of learning should be straightforward,
accessible and involve achievable stepping stones. We should be able to learn
about computing regardless of age, gender, race or income. We should be able to
learn about computing without the fear of being labelled as a geek. Geeks are
great, we should love them. It should be everyone’s aim to be a bit more of a
computer geek and I’m here to help you achieve this.
From Nanotechnology to Synthetic Biology, from Wearable Computers to
Self-Driving Cars; Computing will continue to shape the future that we live in.
Computing teaches us how to solve problems by breaking them
down into manageable components. In developing our own original solutions,
Computing requires us to be both logical and creative. Computing enables us to
develop a skillset and mindset which will be useful in literally every
As a teacher, leader and student of Computing, I believe
that being a digital native and a mere user of technology is not enough.
Technology is changing at such a rapid pace that in order to thrive and succeed
in the Information age, we need to understand how computers work. One of my
primary aims is to transform users of technology into creators of technology by
giving all students the opportunity to think, create, persevere and grow.
To achieve this aim, we must strive to:
Create an environment in which all pupils enjoy
Computing and feel they can do well in Computing.
Create well rounded users and creators of
Computer technology with a focus on independent problem solving skills.
Engage pupils and expose them to a wide range of
Computing tools and skills which will empower them in whatever career path they
Too often, students come into our classrooms with a fixed
mindset; the belief that ability is innate and static (Dweck, 2006).
As a result some students have got into the habit of giving up easily or not
attempting difficult tasks due to a fear of failure. Inspired by the work of
Carol Dweck, I believe that the growth mindset is fundamental to teaching and
learning Computing. We need to help our students realise that they can achieve great
things if they persevere and are resilient when faced with challenges and
setbacks. There is a risk of students believing that as digital natives, they
have little to learn and that everything they want to do with a computer has
already been created or will be invented by someone else. There is also a fear that
Computer Science is difficult and too technical. However, by eliminating these
misconceptions, our students will be able to push themselves and learn to enjoy
the learning process despite the many challenges that they will encounter.
Computing lessons should not just be about ‘doing’; the
focus should always be on what the pupils are thinking about. Lessons should
aim to teach pupils the real-world relevance of Computing; this relevance comes
ultimately from a Fertile Question which feeds into every lesson question.
My teaching methodology revolves around meticulous planning,
modelling, formative and summative assessment, feedback and putting the
individual learner at the focus of all interactions. In order for a student to
understand the standard of what is required, it is important that the teacher
models how an expert in the subject should think and perform. This expert may
be the teacher themselves, or they may use their students as experts. Having
modelled the thought processes and explained the tasks, students should be
given an opportunity to demonstrate their skills either through joint
construction or independent tasks. It is at this point that formative
assessment and monitoring is most crucial. Unless the teachers can visualise
student’s thinking, identify misconceptions and mistakes and correct these, a
student is not going to make good progress over time. Through regular intervention
and feedback, these interactions with the group and the individual allow the
teacher to address common errors and help students improve their learning.