Categories
Uncategorized

It is Done.

Word tells me I have written 68,517 words, which is about the same as Treasure Island or Brave new World, about two Animal Farms or half a Catch-22. It’s about the length I was going for so I’m happy.

I spent this long holiday weekend proof-reading it myself, sorting out image credits (or making my own images where I could not find a licenseable image!) and fixing all the references and links.

I have also stashed all the links on the pages of this website, so if you want a sneak preview of what I discuss in the book you can follow all the links!

More to follow, but right now I have to get this off to the publisher.

Amazon link here, for pre-order

Categories
Uncategorized

Achievement unlocked. Book listed.

Two milestones happily collided today. I finished the first draft of #HTTCS, 61,000 words of computery goodness. And I got an email from my publisher, John Catt Educational to say that the book is listed for pre-order.

I’m excited and a little bit nervous. Not least because I’m a few thousand words over my planned count, and some of it needs a tidy up. So I’ll be editing frantically and asking friends to proof read before sending the edited manuscript to the publisher.

Pre-order on Amazon here. Kindle format will be added soon. Thanks to everyone who has helped with this labour of love!

How to Teach Computer Science: Parable, practice and pedagogy: Amazon.co.uk: Alan J. Harrison: 9781913622572: Books

Categories
computing physical teaching and learning

Escape the Room – updated 2023

Update 28 November 2023

If you’re looking for an activity for Christmas and have around £100 to spend, you can create a Computer-Science-themed “Escape the Room” challenge (actually more of an “Open the Box”) which you can use again and again. This year I’ve been through the resources and updated the links to the hardware you need to buy and the prices, and it’s striking how much more expensive everything is since I first created this resource. Back in 2018 it all cost £74, now the same items come to about £135! Feel free to adapt as necessary e.g. swap out the directional padlock for a standard numeric one (and change the related clue) to save about £20.

All the files are here on my Onedrive including a PowerPoint which contains full teacher instructions, the student instructions and the printable clues and reference posters. You will also find the Morse code wav file and an editable “bitmap” spreadsheet for creating different bitmap clues (if you want to run this again).

Original post follows from 2019.

Big thanks go to Claire Wicher (@GirlGeekUpNorth) for her resource which gave me a starting point, and I’ve kept in a lot of her content. Claire’s lesson was intended to fit into a standard 50-60 minute lesson, with preamble and review, hence it was too short for my purposes. This one should take 1-2 hours depending on ability and how much help you give them.

#escape

The slides are largely self-explanatory. If you open the Powerpoint you will find instructions and an inventory of parts. The objective is to open a chest by solving puzzles which reveal combinations for the six locks. There’s a twist at the end though, just for laughs and that extra feeling of achievement.

I hope you enjoy this free resource, and if you want to thank me you know what to do…

If you are grateful for my blog, please buy my books here or buy me a coffee at ko-fi.com/mraharrisoncs, thanks!
Categories
Uncategorized

SQL Practical for A-level CS

Teaching the Databases topic to an A-level class, I have made these tasks and suggested solutions in REPL.it.

  1. First teach the basics of SQL e.g. using Craig n Dave’s video here: OCR A-level SQL
  2. Check for understanding of the basics e.g. by asking a few basic SQL query questions, using a quick quiz like this: W3Schools SQL Quiz or better still, use the premium resources from Craig n Dave that are intended to follow the above video lesson.
  3. Share the skeleton code here repl.it/@mraharrison/sqlite1 with the students. Explain the code. (Needs you to be familiar with it, so read through it and try it out first!).
  4. Optionally walk through the first one or two problems and code the solution live with them.
  5. Assign as homework, or continue as a lesson, whatever you are more comfortable with.
  6. Use the suggested solutions here when stuck, or share this with the students after they have attempted the problems. repl.it/@mraharrison/sqlite1-solutions-1

Feedback welcome on Twitter or in the comments. Thanks.

Categories
Uncategorized

A Computer built in Conway’s Game of Life

Abstraction ad absurdum

I like nothing more than the idea of Abstraction. It’s not just one of the core concepts of Computer Science, it’s probably the most important one. Pioneers like Dijkstra scorned high-level languages because they had megabrains that could simultaneously understand multiple levels of abstraction in complex programs coded in low-level code.

But this is next-level abstraction. I’ve been fascinated by Conway’s Game of Life since reading about it in the 80s, and have coded it many times on machines like the BBC Micro and Color Genie (yes, it was me, I bought one). But it never occurred to me that the GOL could act as a programmable system, using glider guns and glider reflectors to simulate digital processing.

Here is the blog post with embedded video. A Von-Neumann machine encoded on top of Cellular Automata is a thing of beauty.

A Computer In The Game Of Life | Hackaday

Categories
Uncategorized

Great Java exercise for Hour of Code

Last Friday my Y12s and I attended an excellent Masterclass from the Manchester Met. Some degree course information was followed by a Masterclass where we explored Java and Processing and made a “pong” game.

This inspired me to explore some more after the event so the next two lessons we used the Java/Processing tutorial here Processing Hour of Code | Home

After whizzing through the tutorial we tried our hand at using the online editor to make a few things. You could do this too, with a high-performing GCSE or an A-level class, for the “Hour of Code” this week, or just because you can.

I used these lessons to do several things, pedagogically:

  • Introduce a new high-level language (Java) other than Python.
  • Introduce the concept of event loops for interactive programs (e.g. games)
  • Reinforce the concept of modular programming
  • Practice devising expressions – one of the most creative parts of programming for me.

I suggested we make a game with an “AI” element, a computer controlled character. We used the online editor at the page above, and I made the beginnings of the game and shared it here Skeleton Code

void setup() {
size(500, 400);
background(10, 80, 100);
charX = 250
charY = 200
}

void draw() {
background(10, 80, 100);
// add code here to make character move
drawChar()
drawPlayer()
}

void drawChar() {
fill(255,0,0);
ellipse(charX, charY, 30,30);
}

void drawPlayer() {
fill(0,0,255);
ellipse(mouseX,mouseY,40,40);
}

I invited the students to add code where indicated to make the character “blob” move towards the player “blob” which follows the mouse. Several attempts were made involving Selection, for example along the lines of…

if (mouseX < charX) {
    charX -= 20
    } else {
    charX += 20
}

but one student successfully made this work with just mathematics. Like I said, devising an expression to solve problems like this is fun and also makes the program more efficient. Here is what he came up with:

  accel = 30
  stepX = (mouseX - charX) / accel
  charX += stepX

This shows that all we have to do is calculate the difference between the X co-ordinates then somehow break that down into steps. The beauty of the above code is we can alter the accel variable to change the difficulty.

Then we needed to add some “collision detection”. This is where I resorted to the whiteboard and drew this image, and asked what mathematical theorem we were about to code..

Within a few seconds I got the answer I needed: “Pythagoras”. We can detect whether the two circles have touched, by calculating the diagonal distance between them and comparing with the sum of their radiuses. Hence this code:

  h = sqrt(x ** 2 + y ** 2);
     if (h < 35) {
       hitScreen()
      }

Now we have our computer “enemy” movement and our collision detection, we have a playable game. Here it is in full, copy and paste into the “Hello Processing” editor here to edit, or click here to play.

Did I achieve my pedagogical goals? Comment below or on Twitter please Mr Harrison, Head of Computing #loveteaching (@MrAHarrisonCS) / Twitter 🙂

void setup() {
   size(500, 400);
   background(10, 80, 100);
   charX = 250
   charY = 200
   accel = 50
 }
  
 void draw() {
   background(10, 80, 100);
   moveChar();
   checkHit();
   drawChar()
   drawPlayer()
  
 }
 void moveChar() {
     stepX = (mouseX - charX) / accel
     stepY = (mouseY - charY) / accel
     charX += stepX
     charY += stepY
 }
  
 void checkHit() {
     x = mouseX - charX;
     y = mouseY - charY;
     h = sqrt(x ** 2 + y ** 2);
     if (h < 35) {
       hitScreen()
      }
 }
 void hitScreen() {
      background(255, 128, 128);
      }
  
 void drawChar() {
   fill(255,0,0);
   ellipse(charX, charY, 30,30);
   }
   
 void drawPlayer() {
   fill(0,0,255);
   ellipse(mouseX,mouseY,40,40);
   }
Categories
Uncategorized

Book Update – Publisher Acquired!

The Book Formerly Known As CS Hinterland (TBFKACH) has a publisher. Big thanks to John Catt Educational for taking a chance on me. I have agreed a deadline of end of April for the copy, so it can be out by June.

The new working title is “How to Teach Computer Science”. This is because the conversations I have had with experts in academia and education have convinced me there is a place for a book that not only explores the Hinterland of our subject (helping teachers increase the “Science Capital” of their students – more on that later) but exposes some of the highly-effective teaching practices coming out of the latest research in our subject.

From the book introduction

Computer Science is a young subject, taught in schools only since the early 80s and – after a hiatus in which “ICT” took over in UK schools – re-established as a core subject only in 2014, as part of the National Curriculum subject of “Computing”. Computer Science graduate teachers are scarce and many schools employ non-specialists to teach our hugely important subject. Pedagogy specific to Computing is therefore under-developed and – by many teachers – largely overlooked. Computing teacher forums and social media groups are awash with requests for “lessons on <x>” and “schemes of work for <y>”, much rarer are the conversations such as “Should we do <x> before <y>?”, “Is this a good analogy for teaching <x>?”, “What misconceptions to students develop when learning <y>?”.

So right now, as well as writing illuminating tales from the hinterland, I am magpie-ing pedagogical techniques. A rough and ready list of concepts that I am considering for inclusion are these:

Underlying Cog Sci concepts

  • Cognitive load theory
  • Memory as residue of thought
  • Metacognition
  • Cognitive dissonance (avoiding)
  • Ebbinghaus Forgetting curve

Underlying Teaching and learning concepts

  • Science Capital
  • Blooms / SOLO
  • Constructivism
  • Culture of Error
  • Motivation
  • Rosenshine’s principles
  • Explicit teaching
  • Deliberate practice
  • Whole class feedback
  • Retrieval practice

Curriculum concepts

  • Concept maps
  • Fertile questions
  • Threshold concepts
  • Mastery learning
  • Inclusion and belonging

Teaching techniques – general

  • Dual coding
  • Semantic waves
  • Subgoal labelling (chunking)
  • Worked example
  • Retrieval practice
  • Hinge questions
  • Peer instruction
  • Misconception awareness
  • Unplugged activities
  • Collaboration
  • Physical Computing

Teaching techniques – programming

  • PRIMM (use-modify-make etc)
  • Parson’s problems
  • Pair programming
  • Teacher live coding
  • Notional machine
  • Schulte’s block model
  • Code tracing (TRACS)
  • Scaffolding (e.g. skeleton code)
  • Sabotaged code
  • Low floor, wide walls, high ceiling activities

This list may grow or shrink over time as I continue to research and discuss the issues. Your input is welcome, have I missed something?

Feedback welcome here or on Twitter, as always

Categories
behaviour Uncategorized

Becoming an Evidence-based Educator.

Did I really tweet that?

We all regret the odd tweet from time to time. But this one still makes me cringe deeply:

Tweet screenshot that says "Many skills are valuable, essay writing is transferable from Pokemon to Perseus."

I was a fresh-faced NQT, just two weeks into my new job, 3 months after graduating my PGCE with distinction and pretty pleased with myself. I tweeted this in support of an English lesson activity that was getting some criticism; the original tweet can be seen here, where you can see activities such as “Write a persuasive letter to your teacher asking them to let you play [Pokemon Go] in your lessons!”

I was unaware at the time of the lack of evidence for transferable skills such as essay writing. I hadn’t read Willingham yet, or Christodoulou (but I would soon) so I didn’t know that the research showed that domain-specific knowledge is required to think critically or write fluently about a domain, and that therefore “create a character description of a Pokemon” is pretty much pointless if your goal is to enable students to better analyse the motivations of Lady Macbeth.

Around this time I probably tweeted quite a lot of what I recently described as “naive proggy nonsense”. This blog post is my attempt to explain why I no longer believe that stuff. I hope my journal helps others understand their own views on classroom practice, particularly if you have ever questioned “progressive” methods and asked yourself, “is there a better way?”

A dark 18 months

My NQT school was an oversubscribed state secondary with a glowing Ofsted report and good results so I had high hopes for a long career there. It was tough, as an NQT I had no base but taught in four different classrooms, which was a challenge. I struggled with behaviour, trying to use the C1, C2, C3 system effectively, I wrote names on the board and when a student had exhausted their chances I gave them a detention. In some classes this meant a lot of work for me, and the same students ended up in detention regularly with little consequence. I remember one or two “Restorative” conversations which equally seemed to change nothing.

Books had to be marked with WWW, EBI and a challenge every two weeks, which had me lugging books home most nights. Little co-planning was done with most teachers making their own resources, and I remember buying resources off TES out of my own pocket because the department had nothing suitable and I was too exhausted to create anything myself.

I was acutely aware that I was largely going through the motions of teaching without actually being very effective. GCSE results at the end of my first year were poor, behaviour was getting worse in my problem classes, and I asked for help. My school leadership arranged for extra coaching and I went home every night feeling like I was failing.

My behaviour coaching advice included “get their attention”, “make your lessons relatable” and “limit teacher talk”. I vaguely remember internalising the sentiment “your lessons are not worth behaving for”, although I can’t pinpoint where I first heard that said. My lesson observations remained graded at “RI” because I could never quite hit all twenty targets in a single lesson. My head teacher gave me only another 12-month contract at the end of my NQT year “until I can get behaviour under control”.

As for the content I was teaching them, we whizzed along at a breakneck pace following the schedule set by the HoD, and I had no autonomy in this. I knew my students were not getting it, but I could not stop and re-cover anything, we had to power on leaving many bewildered and dispirited. At KS3 we taught in units, 6 per year, and no unit was ever revisited, or re-tested, so they arrived in KS4 with little prior knowledge.

This all felt wrong at the time, but what did I know as an NQT/RQT? The C1, C2, C3 system was working for others, so why didn’t it work for me? Other teachers are getting decent results so why not me? [I would later conclude that students behaved better for senior teachers, or those who had been in the school longer, something that was confirmed to me in those words by my teaching coach. It is this “they behave for me” situation that gives SLT the illusion that a C1-C2-C3 or similar “many-chances” behaviour system works, but it’s actually the senior teachers’ innate status and respect that is working, not the system].

Back on top with Evidence-based Education

Two and a half years ago (18 months after the “Pokemon” tweet and towards the end of my second year at my first school) a few things happened. Through Twitter I found the blogs of Ben Newmark, Tom Sherrington and Joe Kirby and found them compelling. I discovered that Joe Kirby was a teacher at Michaela Community School, about which I had heard much (and initially been horrified, and dismissed on ideological grounds), but now I decided to find out more, buying the Battle Hymn book and watching their videos. My own school experience had gone very sour. I was drowning in workload, getting terrible results and having daily behaviour battles. Something had to change.

I applied for other jobs, and started “re-educating” myself. Successfully moving schools to one which employs “Binary Behaviour” (sometimes called, unhelpfully, “zero tolerance” or “no excuses” behaviour standards, but “binary” is a better term), I read “Why don’t students like school?” by Daniel Willingham, and “7 Myths About Education” by Daisy Christodoulou. I got Doug Lemov’s “TLAC” out of the cupboard: I had tried many of these techniques but had little success previously, amazingly they started to work in the new school. I read blogs by Tom Sherrington, Tom Bennett, Adam Boxer, Andrew Old and Mark Enser. I read about Rosenshine and discovered the “Ebbinghaus forgetting curve” and how to straighten it out. I found that learning styles were nonsense, and the “Cone of Learning” is better described as the Pyramid of Myth.

Ben Newmark’s blog was the start of it all, this post on behaviour begins with a scenario what could have been any day in my NQT school. Through this and other blogs I had discovered a new world, far away from the world of “all, most, some” and “C1, C2, C3, 15 mins, 30 mins, RJ meeting”. My new school not only insisted on high behaviour standards, but they embraced research-informed teaching practices.

In the new school, having read lots of evidence-based teaching advice and attended quality CPD, I was able to improve my teaching practice dramatically. I dropped whizz-bang starters and replaced them with retrieval practice. I started telling the students what they needed to know, instead of getting them to “discover” it for themselves (by hiding it around the room – yes, I did that). I insisted on silent working, used no-hands-up and no-opt-out, I made sure my students spent most of the lesson thinking. Because memory is the residue of thought, my students were thinking hard. I switched to in-lesson feedback and whole-class feedback and no longer took books home.

And so it continues. I am very happy here and well respected. I feel I am teaching effectively, I have my evenings back and my results are excellent. There are no “show lesson” observations, just 10 minute drop-ins followed up by supportive conversations.

And I no longer tweet about transferable skills, making teaching “relatable” or dealing with “low-level disruption” (there’s no such thing). Because I no longer have to deal with these things, I can teach like I imagined teaching to be, sharing my knowledge and understanding with others who know they are there to learn.

There is another way.

Edited 3-12-20 to change the title from “When a prog went trad”. I felt the original title wasn’t a fair reflection of the content, and feel that some readers might be put off by the reference to the trad/prog division in UK education discourse.

Categories
Uncategorized

Year 7 Intro Booklet

Secondary Computing teachers are all painfully aware of the “Comptuer skills deficit” that affects many children arriving in year 7, due to the lack of experience with a desktop computer.

This is a work in progress but it’s my booklet of skills that I am composing for a new set of lessons (about 3 hours in total) for year 7.

Please fee free to copy and improve, just acknowledge me if you share onwards (CC BY-SA 2.0). I will update this over the coming weeks.

Categories
Uncategorized

#CSHinterland Book Update

I’ve been lucky enough to get some time to write the book this summer. Thanks in part to the fact that I’ve pretty much planned the curriculum over the last two years, and I know that there is a whole set of new resources available from the NCCE and as we speak they are being recorded as narrated lessons for the Oak National Academy, I don’t feel under pressure to plan extensively for September.

So here I am in France, having driven straight here, we stayed in our car as much as possible, taking a picnic for the journey and drove all the way in one day, just stopping for fuel and coffee from a machine.

I have the best view of any office, and in a break from the book I daubed the attached picture of my view. Trust me, the real view is even better than this:

In author world, I have written about 3.5 chapters of a planned 13, if you want a word count I am up to 15,000 and I have to say I’m really excited and pretty proud of the way it is shaping up.

As discussed in the previous post, the target audience is teachers of Computer Science, the subject matter is centred around the typical GCSE specification, and each chapter follows a similar pattern. I cover some of the hinterland of the subject: stories that link the topic to world events, to other topics in our subject and to other subjects in the curriculum, illuminating our beautiful subject and bringing it to life. Then I discuss some of the current research in Computer Science Education and how it informs CS-specific Pedagogical Content Knowledge: that secret garden of teaching know-how, PCK of which teachers of other subjects have a vast store they can draw upon, but is still immature and sparsely known by many Computer Science teachers, because our subject is so young and we must rely so heavily on non-specialists. Those teaching techniques that work and make us effective CS teachers, from post-it packet switching to pair programming. Finally each chapter covers some common misconceptions, so we can head them off before they take hold.

It should be an enjoyable read and although aimed at UK’s Computer Science GCSE teachers, it should be very useful to CS educators at all levels, but also accessible to students at KS4 (US 9th & 10th grade) up to undergraduates on a computing-related degree course.

Here is a sample from the chapter on Programming PCK.

When Peter Samson wrote his music player program for the TX-0 in 1959 (see Languages chapter), his “mind had merged into the environment of the computer”. With the advent of high-level languages, however, the capabilities of the computer have been extended far beyond basic arithmetic and logic, to include abstract data structures and complex algorithms to process them. It is no longer possible to hold in one’s head the entire computer. But to interpret, correct and write programs in a given language we must have a good understanding of the capabilities of that language, running on the machine in front of us. We say that learners must construct in their heads a notional machine.

A notional machine is the set of capabilities that a programming environment affords to the programmer. Understanding a notional machine enables a programmer to answer questions such as: What can this programming system do for me? What are the things it can’t or won’t do? […] What changes in the system does each of my instructions bring about as my program runs? How do I reason about what my program does?” – Sorva 2018

Without a notional machine in the mind of the learner, they don’t have a viable model of program execution. They can’t reliably predict what the computer will do with their code. This leads to misconceptions.

table of misconceptions

I’m really enjoying authorship, and there has been lots of interest from colleagues who want a copy of the book, from other educational content creators wishing to collaborate, and offers of proofreading, so thank you all.

All I need now is a name. The working title is CS Hinterland, but covering the PCK means it needs a new one, perhaps one of these? Feedback welcome here via comments on WordPress or on Twitter @mraharrisoncs, thank you. Publication is likely to be December, but who knows, it’s my first book so anything could happen!