My Teaching Just Got Agile and I Love It!

For the last week I’ve been running a bit of an experiment in my classroom. Not in a scientific way (I think human subjects are generally frowned upon anyway), but in a take a risk in the classroom type way.

So, year 12 have been coding now for 5 weeks. The majority of them have never coded before and have been on one of the steepest learning curves they’ve ever known. It’s amazing to watch (and on occasions heartbreaking when you remember that awful feeling of ‘what was I thinking signing up for this?’), but they’ve moved on so far.

Part of the course is not just to teach them to code, but also introduce them to standard development models. The standard model that is used in academia is the Waterfall Method. This lends itself to an academic project so well as each stage is visited in a clearly defined block. For students, this also brings the benefits of being able to write the style of documentation that is required by the exam board. There are a number of reasons why it is wholly forgiveable for schools and colleges to teach this method as an introduction to the SDLC (I stand by this having instilled this in my year 13s who are creating a massive project under huge time restrictions!).

However, year 12s need to understand a variety of different methods and have a need to practice what they have learnt so far – mainly because at the end of this year they have a practical exam where they are expected to be able to produce working and tested code to a set algorithm within 2 hours, under pressure. So why not try Agile rather than just read about it in the book?

Monday:  Sprint Development Meeting

I introduced the concept of Agile to both classes and asked them to self-organise themselves into groups of six or seven people. Within the teams, they would need to allocate a Scrum Master. I would be acting as the Product Owner and as such would have no influence over their decision of team or Scrum Master (in fact, I would be watching from a distance and evaluating how they organised themselves & silently telling myself not to interfere!).

As a Product Owner, I gave the teams the following goals (for a week… this was aiming high!)

  • Create a game similar to the 1980s Simon Game
  • The game should show a random pattern of 4 colours
  • The colours should show on the screen for 0.5 seconds
  • The screen should clear between colours
  • The game starts with a pattern length of 1 & increases by 1 colour each round
  • The user should be able to enter in the pattern they saw using the keys R,G,Y & B
  • The game should repeat only if the user input is correct

After this, I gave them some stretch goals (because if I was going to be a client, I wanted the world on a stick):

  • The game could output to the user how long it took them to respond
  • The game could allocate a score based upon time
  • The game could write the high score to a text or CSV file (5 weeks… they’ve been programming for 5 weeks.)
  • The game gets faster after each round
  • The code is made efficient with procedures

The world on a stick. And they had a week.

Every day for the past week, each team has met either in a classroom or via Skype (or Xbox Live!) for a 15 minute Scrum Meeting where they worked out how their team was doing and what they needed to do to achieve their goals. This wasn’t organised by me, but by the teams themselves. I was suitably impressed.

During the course of the week, I was asked for help by a number of the teams, either from individuals or from groups. In the most part, this was to help them move above their current understanding and to help them implement something that they had found online (one example of this was to help them create two parallel dynamic arrays – impressive stuff for a class who I haven’t actually taught arrays to yet!).

Monday (7 days later): Sprint Review Meeting

So today was our first Sprint Review Meeting. Each of the four teams did a live demo of their code so far and I was blown away, The effort they had put into this was astounding – they OWNED their code. (one team even linked theirs to a Makey Makey to give it extra playability!).

After each of the Sprint Review Meetings, we had a reflective session where every member of the team used an A4 piece of lined paper for a five minute silent write. In this, they could vent their feelings about how they worked as a team member, what went well, what they would improve and anything else that they felt that they needed to say in confidence. I then took these in with the promise that I wouldn’t share them with anyone (not even the internet – don’t ask!). What was most interesting was that those who felt that they could have improved had the clearest picture about how their team functioned as a whole.

So Agile for students has had a few unexpected benefits so far: The group dynamic has improved in both classrooms with students actively wanting to help others and share their knowledge in most cases (and where this didn’t happen, students have identified how to move forward), and more unexpectedly, almost every student without exception has worked autonomously to progress their knowledge without me guiding their understanding. They have shown Grit, they have shown resilience (of course they have, coding never goes right the first time!). I am prouder than a parent at a Nativity play right now.

So that was Sprint #1 – It may be a fluke. Even so, I can’t wait to see the product of Sprint #2.

Could this be the start of something new? Agile Dev meets Teaching : Agile Teaching?

Advertisements

The only way I shall acknowledge Christmas before December

So, I have three topics to cover with three different year groups.

Year 9s – intro to python programming
Year 12s – finite state machines
Year 13s – Mealy & Moore machines

And a set of raspberry pis. Enter overexcited teacher.

So as a gentle introduction, welcome to the Christmas Computing Display board idea…

Print out a reindeer picture on card and get out a raspberry pi and the GCSE electronics kit (from Maplins.  Very cool).
image

Connect a 200 resistor to the shorter wire on a red LED.
image

Then make two wires and twist them onto the end of each side of the LED . I could use jumper wires, bit have you seen how much they cost??!

image

To save the pins on the raspberry pis, I’m using a GPIO lead which turns the male pins into female ones wjivh ypu can push the wires into.

These go into pin 25 for the resistor side, and pin 7 for the other.
image

Connect up the pi and set up a python program to set the led to high then low each second (the code comrs from http://www.ocr.org.uk).

image

Next, open a terminal session and type in

sudo python rudolph.py

Get stupidly overexcited when it actually works!
image

Push LED through a small hole in the card for Rudolph’s nose and tape the wire to the back of the card.

image

So, the plan is to duplicate the process with a number of year 9s to create a flashing wall display for the end of term.

Use wall display with year 12s to demonstrate FSMs and give year 13s free range to create their own versions which allow input to create mealy machines.

Today was a good day 🙂

What happens When I’m Staring Intently At My Laptop And Apparently Ignoring You.

Dear Husband,

I know you like to do that thing where we both speak words and they form this thing called a conversation. It’s just that I’m coding, and unlike you who appears to be able to Skype with clients, drink coffee and create almighty web apps that make people go ‘oooo!’. I am more typical of the programmer kin and need to focus to the point where bombs could explode (or parents can be steam cleaning the room) around me and all I see is a search for a semi-colon.

In lieu of the conversations that I think you were trying to have this morning, let me show you what I’ve been up to.

This is my student website. In I showed the initial design for the site, which admittedly took me a bit longer wrangling with divs than I had expected.

Today, we have a fully functioning sign up & login (yes, I know I need to sort out the alignment, but functionality before beauty).

website login

After that, I started to build the competition pages. Remember that idea you had about setting them a mystery quiz? Well, I’ve built it along with the first few challenges.
First, each page recognises whether you’re a guest, a student or an admin.

Guests – well, they get a message telling them that they only have access to the resources bit.

Students – The page looks at the database and works out which of the challenges they have successfully completed, showing them the next in the series. It also works out how many incorrect answers they have submitted.

challenge

Admin – This is planned to be a dashboard for administration of the competition and to get automatic results (the winner will be decided based on the speed that they go from the first to last challenge and how many incorrect answers they submit. This makes it fairer for those joining in late as I record the datestamp for each answer that is submitted.). But, for now, it allows me to enter new challenges into the competition and view the challenges alongside the answers. (the answers here are blocked out…. you never know who’s reading!)

admin

Next? Well I still need to build a homework dashboard & the interface for the kids, and then a results & feedback dashboard for the kids to look at their progress. Some content on the resources might be quite nice too!

Not just yet though. Let’s have a conversation first 🙂