A duet

I have two musical goals in life.

  1. Play a piano duet with Sir Elton John
  2. Learn how to play the piano

Probably neither of these will ever happen.  I may even have them in the wrong order.

But that’s OK.  Google has me covered with a new “experiment” called A.I. Duet.

I’m fascinated with the intelligence that can be built into a computer and the results that we see and read about daily.  I think that we all know that we’re on the edge of great things as terrific programmers take on and understand concepts and create something new.  In particular, it’s impressive when it’s something new that the computer has created for us.

That’s the premise behind the A.I. Duet.  Watch this video; it may be the best two minutes of learning you do today.

I found the discussion of machine learning and neural networks fascinating.

Even more fascinating is playing with this experiment and watching it respond to my touch.

In the classroom, what a wonderful hands-on example to begin discussion.

  • How does it do this?
  • How does it respond to different tempos or combination of notes?
  • Does it do a better job with someone who knows how to play versus the “kitten on the keys?
  • Does your interaction with the experiment make it smarter or dumber?  How?
  • Can more than one player make it work harder or get better results?

I’m no better now playing the keyboard than when I first started playing around.

But, I do now have a partner to play duelling pianos with.

Whatever happened to …

… the Hypo Programming Language?

Have you ever had to learn a programming language well enough to teach it in a few weeks?  Memories and inspiration for this post came from last week when I talked about optical marked cards.

I did!

It was for my first teaching job.  Teaching Grade 11 and Grade 12 Computer Science was going to be a piece of cake.  (or so I thought)  The language of instruction was to be Fortran and COBOL.  Both of these languages had been a part of my university program so I knew the language.

But, it was the Grade 10 course that had me concerned.  Actually, this concern extended to Grade 9.  In the Business Department, the Grade 9 course was a collection of units in Accounting, Marketing, and Data Processing.  In the Data Processing unit, and in the Grade 10 course, we were to use the Hypo programming language.


I’d never heard of that before but how difficult could it be?  It was a pre-cursor to Fortran after all.

Well, it turned out that Hypo stood for “Hypothetical Computer”.  It was a language that got you to dig into the things that higher level languages just assumed that you knew or plain didn’t care about.  Things like how a computer does arithmetic.  Things like data going into a storage location of your choice.  Then, you’d load the contents from memory and push them onto a stack.  Once in the stack, you could do simple operations like adding, subtracting, etc.  Once you had performed the operation, you’d send it to be printed.  Instructions were simple; the computer could only do things one step at a time and you had to provide each and every step.

Instructions were coded by the programmer.  Each instructions had a two digit opcode (operation code) and a three digit operand (usually making reference to a memory location).  Speaking of memory locations, there were 1000 of them in this hypothetical machine ranging from 000 – 999.  I could bore you with the details but, if you’re interested, check out this document.  My entire course summarized in eight pages!

We did have a textbook.  It was authored by John Walsh from Western University and others and called “Informatics:  Introduction to Data Processing”.  So, at the conclusion of my successful interview, I asked to take a copy of the textbook home with me.  And, I read it from cover to cover over that summer and was ready to go for the first of September.  I felt I knew the programming language in its entirety without ever writing or debugging a line of code!  For the most part, I was writing the programs and assignments along with the students that fall and we all learned the language together.  Co-learning before co-learning was a thing.

I quickly became conversant with instructions like:



Like all of the courses at the time, it was expensive.  It was done on cards and five characters per card sure wasn’t an efficient use!

I had lots of students take that course and then followed up with “real” programming languages in subsequent grades.  The Hypo language itself eventually became a memory —- and then it became a project.  I would have students write their own interpreter in the real language we were using at the time.  We’d use arrays and stacks and talk about simple operations and brought them altogether for the purpose of the project.  I could kick myself for not hanging on to one or two of these excellent submissions.  They’d be fun to play around with today.

Hypo did indeed become a memory after a while.  Courses evolved with newer technologies and the opportunities they provided.  Eventually, we licensed Turing and used it as an introductory language.  Today, many students will use Scratch or Alice or Hopscotch or the like for their first language.  Many others use Python as an introductory language and some actually build complete programs right through Grade 12 around it.  It’s a nice choice.  It’s an interesting change from the good ol’ days.  Unlike Hypo which really required you to think about the computer hardware (albeit a hypothetical one), there are things like variables and higher level instructions that make learning about the hardware itself pretty much unnecessary.  The newer languages open up more opportunities; Hypo pretty much left you dealing with mathematics problems.  But, you could come up with interesting problems all the same.  I’d look for current ideas like this one – Library book returned 75 years late, with no fine.  I’d turn that story into a problem and the great emergent programmers of the time would dig into that with great enthusiasm.  What would the fine actually be today if it was collected?

These were the tools available at the time.  The choice was made by the school and not the teacher.  Probably, as Alfred Thompson says in a recent post “You’re Teaching the Wrong Programming Language“.  It’s an interesting observation if you’re focusing on languages.  But, if you are focused instead on the concepts from learning to code, I don’t think there is a “wrong” programming languages.  Education isn’t or shouldn’t be a training institution; it’s a learning place and particularly in computer programming, students will go through a number of languages in their career.

Your turn.

  • Were you ever a Hypo programmer?
  • What was your first programming language?  How did it impact the way you use computers today?
  • Did you ever program in an assembler language?  Do you still feel the love?
  • If today’s students start to learn to code in a block language, do they miss something by not understanding the hardware of the computer they’re programming on?
  • At what stage do you wean students off block coding and move to programming?
  • For computer science teachers, how do you address the concepts of memory limitations and subsequent things like programs crashing because of out of memory messages?
  • For those of you who might be programmers or who studied programming, how many languages have you actually used?  Do you have a favourite?

Please share your thoughts via comment below.

Do you have an idea or thought that would be appropriate for my “Whatever happened to … ” series of blog posts.  They can all, by the way, be revisited here.

Please visit this Padlet and add your ideas.  I’d love for it to be an inspiration for a post!

This Week in Ontario Edublogs

Happy Friday and Happy Last Friday if it applies.  Welcome to my weekly roundup of stories from Ontario Edubloggers that I was privileged to have read this past while.  Please enjoy.


If you’re in education, you’ve had plenty of exposure to group work or, as Rusul Alrubail describes in her title “Collaborative Spaces”.

There’s a wonderful lesson here as Rusul extrapolates a personal experience into advice for every educator and/or potential worker in this space.

We’ve had groups a plenty as students and used it as a class organizer as a teacher.  We know that there will always be those who don’t pull their own weight; we know that there are some students that we can’t place with other students; we know that we need to be constantly monitoring the groups to ensure that everyone is working; we know that the great equalizer at the end of it will be the “group participation mark”.

But what happens when that space takes place online?  In this post, you’ll see Rusul’s insights where some of it is a refresher but some of it is new news.  Have you really considered what collaboration looks like when you take it online?  How do you handle it when someone doesn’t hold up their end of the bargain and you’re left holding the bag?


She provides a really insightful list of things to attend to in order to have success.  I’d hope that people would consider sharing this with students at a Faculty of Education.  There’s so much common sense wisdom in the post.

I’m also reminded as I read her post that equity doesn’t always mean equality.

Learning Design by Making Games

Unless you’ve been hiding somewhere, you know that the Hour of Code has been so big in schools the past while.  Sadly, for many, it’s on the par with watching a Christmas video.  Classes put in their hour, it’s checked off, and now it’s time to move on.

Jim Cash has been rightfully vocal about doing better than that.

In this post, Jim uses inspiration from Yasmin Kafai to suggest that it needs to be taken to the next level.  He gives an example of one class…

In the new year, they will be challenged with a complex task that closely mirrors that of Kafai’s study: designing an interactive game using Scratch to make the learning of fractions easy and fun for younger students.

This is crucial for success and making the time spent coding worthwhile.

If you “did” an Hour of Code, what’s your next step?

You Got This! Coding and the Empathetic Teacher

OK, one more post about coding and maybe this will be the one to inspire you to greater efforts.  This time, from Steven Floyd.

For me, the biggest takeaway from this is a reminder that none of us were born with the innate ability to teach.  We had to learn how to do it.  In today’s classroom with today’s challenges and today’s students, we are constantly learning and relearning how to teach.  That’s why schools have professional activity and professional development days.

So, why should teaching coding be any different.  Sure, there are “experts” who go around telling you how “easy” it is.  Don’t you just hate them?

The reality is that all computer science teachers are constantly on the learn.  Not much of what we learned at university is directly applicable in today’s K-12 classroom.  There are so many interests and opportunities to apply the concepts to the curriculum.  Or, perhaps you land at a school where they teach a completely different coding language.  Ask any computer science teacher and they’ll tell you that they are up at all hours learning and trying to find that technique that will make it appropriate for every student in the classroom.  One thing remains consistent across all grades; we’re interested in solving problems.


So, if you believe that we are all lifelong learners, why not include some meaningful coding as part of your learning?  And, why not learn along with students rather than taking on the traditional role of imparter of everything worth learning?

How Reflecting On My Last #OneWord Goal Led To My New One

Aviva Dunsiger bought into the #OneWord meme last year and this post is an opportunity for her to reflect on her choice of “hearing”.

It’s nice to see that she’s comfortable enough to let us know that not everything was hunky dory with her choice.  Sure, there were successes but there were also some challenges.  There’s nothing wrong with that.  In fact, I think that if there weren’t those challenges, she wouldn’t have been pushing herself enough.


As I finished reading her post, I almost convinced myself that her one work for 2017 was going to be “amaze”.  But, a slower read reveals that it’s actually “perspective”.

What do you think?  A good choice?

The Progression of Multiplication

With apologies to David Rueben, Kyle Pearce’s post could easily have been “Everything you wanted to know about multiplication but were afraid to ask”.

It’s a long post but Kyle really takes on multiplication in a serious way.  It’s a great reminder that, despite what some people think, there isn’t just one way to learn mathematics.


While I understand all the concepts addressed in the post, colour me a user of the “Standard” Algorithm.  How old does that make me feel?  At least he didn’t call it the “Classic” Algorithm.

So, if you want to get a history of everything multiplication from K-10, it’s a nice read.  I’d have no problem assigning it as reading for a student at a Faculty of Education.  There’s great stuff in here as well.


And, hooray!  Despite what we read from the naysayers, there still is room in the curriculum for “paper and pencil”.  If only those people would read the complete message; we want all students to be successful in mathematics.

What Inspires Me

I think that everyone should take a moment and do a reflection like Matthew Morris does in this post.  What is it about “you” that makes “you” “you” in the classroom?

The answer is, I believe, a desire to reach every student at whatever level is necessary.

The best teachers always do this – sacrifice and work the angles, shuffle the blocks, and basically do whatever it takes.

These positive jabs slowly got this student to put more effort into his work. I then brought an old duotang of mine into school. He looked through it and looked at me as if he was saying to himself, “This guy did this in school but he is still kinda cool?”

I’m sure that I never made the status of “kinda cool” but I did try.

An Energy User’s Scavenger Hunt

I’m not sure who the author of the STAO blog is but this is an interesting concept.

After all, we are all energy users, right?

Read the post and then click through to a lesson plan.  It’s in .docx format so you can edit/adjust to suit your class.

A scavenger hunt can be used by teachers to direct student learning at any grade level. In this case, a set of carefully worded questions will introduce students to a new topic, ‘Energy Users’.

Thanks to all these wonderful bloggers for sharing their thoughts and ideas.  Please click through and enjoy the original posts.  You’ll be glad you did.  Oh, and drop them a comment before heading off to the big list for more great inspiration.

This Week in Ontario Edublogs

As I wandered around the Ontario Edublogger community recently, some of the stories stood out for me.  I’m happy to share them here.

Teaching Visual Art and Computational Thinking

Michelle Cordy ties these two concepts together in a post that

includes a 5 minute video, a lesson plan and examples of student that show integration of visual art curriculum and Computational Thinking in my grade 3 classroom.

Given the source for inspiration of the concepts, it’s not surprising that she makes reference to Keynote, iMovie, and Swift Playgrounds but the concepts are certainly transferable to your own reality if you don’t have access or a desire to use these products.

The post is rather long but includes all kinds of good stuff, including links to the Ontario Curriculum, classroom concepts, homework, all tied together in a nicely designed lesson plan.  Even if you don’t use her actual lesson, I think that it’s a terrific exemplar as to how to design a lesson using technology.


Rusul Alrubail shares a post outlining a workshop that she shared with students at The Hun School of Princeton students in New Jersey.

I love this quote that she includes to draw us in to read the entire post.  Maybe all bloggers and sharers should adopt this philosophy.

The workshop focused on storytelling and she includes these nuggets

  • Share your own story
  • Define words
  • Regroup & Share
  • Reflection Time
  • Share & Takeaways

In the post, she elaborates on these concepts, along with suggested timelines, for the workshop.

I think this is a good reference for teachers in so many ways.  Perhaps you’re leading a workshop yourself or you’d just like to address the concepts in your classroom.

Bookmark this one.  I probably say that to most of her stuff.

Occasional Teacher Trainings

Could there be a more challenging part of the teaching profession than that of the Occasional Teacher?  The cover someone else’s class, teach someone else’s students, and then move on.  The lucky ones may get a chance to cover for a long term leave.  Generally, though, it’s a day to day profession.  It’s one that I never had to take on myself; I was fortunate enough to get my own classroom and students right out of the Faculty of Education.

At Edcamp Ottawa, they took on this topic and Amy Bowker uses this blog post to give us the details.

We are sending around the below form to ask you what you want to learn about. We are hoping to put together a bunch of sessions that will help OT’s learn relevant information to help them in their future classrooms and with their future students. We are only collecting your email so we can email you when we figure out when these sessions will be.

Hopefully, the results will be placed online.  I’m sure that many Occasional Teachers would benefit.

Grrrr.  There’s nothing worse than the batteries in your keyboard going dead in the middle of a post.

Five Minutes later – OK, I’m back with fresh power.

Spatial Reasoning and Student Success

Deborah McCallum offers another nice post tying content from the Ontario Ministry of Education supporting her notion of Spatial Reasoning.

Those of us who love Mathematics have known for a long time the power of this sort of reasoning.  It helps to understand the sometimes pretty abstract concepts.

So, I read on nodding about her references to mathematics.  She’s nailed it.

But, I didn’t see her conclusion coming and it makes a great deal of sense.

To me, I think this behooves us to ensure we have access to makerspaces – regardless of where they are located in our schools – to promote visual spatial reasoning skills.

The Octopus of Events

If you’ve never worked centrally for a school district, you may not necessarily understand the message in Eva Thompson’s post.  But I sure did.  It brought back memories of the challenges of trying to work equitably with all schools.  I used to use the analogy of trying to keep a whole collection of corks under water.  I know that’s not original but I think that it’s the reality when you have so many different schools, locations, schedules, and quite frankly, culture.

I know that, for administrators, they like to think that every school is the same.  But, if your job is to visit each and every school, you know that they all have their unique identities.  I would suggest that that makes for the best situation; one size definitely doesn’t fit all.

I was also there when two school district amalgamated into one.  There were definite cultural differences there.

But you forage on – once you understand and work at it, it does get better.  I had to smile at her summary though.

I’m trying to find the best common denominator with 12 secondary schools in two counties. The school day/bells are close, but have some overlaps. They have different school events in terms of  sports, assemblies, trips, visitors. Travel time from one zone to another can be up to an hour in length. This makes it challenging to find a day and time that works for most. I won’t even attempt to write “all” because you truly can’t please everyone!  Add in promotion, posts, permission forms, money collection, confirmation calls, invoices, cheques, budgets, and if I throw in more than one department to work together, then all those octopus arms are moving around at once!

Turn the “Hour of Code” into the “Year of Learning”

As you read this, Computer Science Education Week 2016 is on its last days.  I hope that everyone has had a chance to do something.  More than that, I hope that people are asking themselves ‘What Next?”.

It would not be a success if the statement was “I’m glad that’s over”.

Jim Cash is helping the cause by curating a collection of Scratch activities that he’s calling Mathland Challenges.

This is definitely worth the bookmark and activity for students.  Don’t let the Hour of Code concept die over the weekend.

The Teaching Hub: Post 15, Week 14

The Teaching Hub at Fleming College is always full of great content and ideas to keep the curious up to date on the happenings there.  This issue continues with that.  There’s some really interesting things.  Some of the things are hidden behind a login so that can be frustrating.  I really wanted to check out the “pretty laid-back College Department of the Week competition”.

But, of academic interest was reference to the Open Textbook Project.

I suspect that many might be interested in this sort of approach.  They’ve broken their analysis down into 18 key points.  They’re well worth reading and understanding for their project – maybe your own project – just for any resource that you may elect to acquire.

There’s lots of great thinking, ideas, and resources here.  Please take a few moments to click through and discover just what is happening.  You won’t be disappointed.

Then, check out the big list of Ontario Edubloggers.  There’s always some great thinking happening.

Hour of Code 2016

The Hour of Code was started a few years ago to provide an opportunity for more students (and teachers) to get exposure to coding and programming.  It’s been an overwhelming success and here we are at the brink of Hour of Code 2016 held in conjunction with Computer Science Education Week, December 5-11.

The initiative has seen some pretty substantial levels of success…

  • there are more languages and robots to code with today than ever before
  • teachers who might never have ventured into this area are giving it a shot
  • in Ontario, there are many TLLP projects with their roots in the Hour of Code
  • it’s not a strange thing to see a Computer Science club at schools where inquiring students go beyond the hour
  • coding has come a long way from the days of learning commands and evolved to block programming
  • and I’m sure that you can add your observations to the list

The mother ship, if you will, is the Hour of Code website and the links to rationale and many activities.

There is lots of discussion about the “why” to the Hour of Code.  One that you hear constantly is that there are 200,000 technical jobs unfilled in Canada.  If you need that as inspiration, go for it.  Somehow, I think that the Grade 2 student doing a bit of Scratch isn’t quite ready for it yet.  As I was out this morning, I saw a big tube television left at the side of the road.  You know the ones that dimmed the lights in your house when you turned it on?  I have no doubt in my mind that the owner thought this might well be the last television that they’d ever buy.  Technology is such a fickle partner.

But it’s the deliverables that were important.  A huge screen let them see ever detail.  The audio was stereo.  Awesome.  The analogue signal pulled in by antenna was probably the best they’d ever seen.  Try to find something with the same specs on sale in a store today!

Ditto for learning code.  If you just focus on the code, you’ll miss the point.

Check the deliverables.


  • student can learn some new commands
  • student can make an object move on the screen on command
  • student might even get the computer to make a sound or play a song


  • students work collaboratively to solve problems
  • students explain their thinking and explain/debate the logic with other
  • students take a big problem, break it into its component parts, and solve it
  • students ask “what happens if I do this?”
  • students demand “what next?”

Every subject area would die for these opportunities.

Hopefully, everyone will be involved in the Hour of Code in their classrooms at whatever level works.

Please don’t consider it 60 minutes to check off to say that “we did it”.  Please do consider that this is the launchpad for something pretty amazing.  It’s there that you make a difference and set students off to benefit from all that coding offers.

Once again, I’ve cobbled together a collection of resources that I’m happy to share.

Hour of Code 2016

Good luck.

Sort of a post

One of the topics that I always found a challenge to teach was that of sorting.  I struggled with learning the concept myself as a student and I always found it difficult to make it tangible and visible for students.  

I did all the chalk and talk things that I could think of.  But the best way that I could demo it off-computer was with a deck of cards numbered 1-10.

I put 10 chairs in a row, side by each, and then one off to the side.  I had 10 students sit in the chairs in random order with their numbered cards and had them demonstrate sorting based upon the number they were holding. 

The goal was to develop an algorithm where the 10 people holding the cards were to move and put themselves in order from 1-10 or 10-1.

The rules were:

  • only one person could stand at a time
  • there were two things that could be discussed 
  • am I bigger (smaller) than you?
  • go sit in the chair over there
  • come back and sit here
  • are we in order?

Our starting point was always the Bubble Sort.  Technically, that was all that I needed to address the expectations from the curriculum.

A3.4 create a sort algorithm (e.g., bubble, insertion, selection) to sort data in an array;

From the Ontario Curriculum Grades 10 to 12 – Computer Studies.

But, you can’t stop with just one.  I also used to talk about a Selection Sort and we would talk about the difference in algorithms and ended up comparing each for efficiency.  A final kick at the sorting cat was the Quick Sort.  There is an increasing level of sophistication in the coding involved.

That led to a good discussion about why you might want to choose one over the other.  It also was a good rationale for building a personal library of algorithms.  Sorting is used so frequently, why should you start from scratch every time you need a sort?  Bringing in something that you know works and modifying it for the purpose of the program makes so much sense.

Recently, Alfred Thompson shared his thoughts in a post “How Fast Can You Sort a Deck of Cards?”  Working with a deck of cards is certainly more aggressive than my cards 1-10.  You have to deal with the concept of Jokers, are Aces high or low?, do you also sort by colour?, do you also sort by suit?  It’s a scenario that can lead to a great deal of discussion.  I like it.

Embedded in Alfred’s post is a link to a resource demonstrating various Sorting Algorithms.

This is fabulous.  If you want to see how a Bubble Sort works, just select a cell and watch it do its thing.  I think the best demonstration is the Reversed data set.  There, every piece of data is out of order so you get the full effect.

But that’s just the academics of it.

In the top left corner, there’s a button to “Play All”.  This is addictive as you watch all of the sorts with the various data set permutations do their thing.  This truly is the beauty of computer science.  Beyond this, it answers the question of why there are different sorting algorithms.  You’ll notice on first run that they don’t all finish at the same time.  Some algorithms are definitely better than others.  Code demonstrating each sort is available under the chart.

Learning how to write code to sort can be a challenge.  But, it’s something that you have to do at some point if you’re going to be a programmer.  

I just found this resource a wonderful way to demonstrate different algorithms and a visual rationale for each.

It’s a definite keeper.  Thanks, Alfred for turning me to this resource.

The Collatz conjecture

One of the recent reads took me down the mathematics path.  This is always a bit of fun.  The story was:

6 deceptively simple maths problems that no one can solve

I remember the Collatz conjecture from years ago.

Basically, it says to take any number.  If the number is even, divide it by two and continue with the result.  If the number is odd, then triple it, add one, and continue with the result.  The conjecture says that, if you repeat it enough times, you’ll eventually get the number 1.

During dog walks yesterday, I found myself mentally doing the problem.  When I didn’t lose track, the sequence of numbers always did end up at 1.

When I got home, I thought; this is silly to do all this mental math.  I should write a program.

Here it is in Small Basic.  I’ve tried to make it readable and over-commented to explain the steps.  I think it should be readable enough.


And, of course, I ran it to make sure that it worked.  I played a lot of “kitten on the keyboard” to test it out and sure enough, the answer is always eventually 1.

For simplicity, here are 6 and 7.



Another observation include that, in addition to the answer being 1, any number I tried over 6 ended in the sequence 10 5 16 8 4 2 1.  Of course, I didn’t try every number.  However, I did modify the original program to loop the original number tested instead of just working with a single input.

After writing the program, I like the programming concepts that it includes.

  • Asking the user for input
  • Looping until an exit condition is met
  • A little mathematics
  • A little branching
  • Displaying the answer
  • Enhancing the original by providing another form of input
  • A program doesn’t have to be huge and time consuming to have a lot of concepts
  • It’s actually a bit of fun trying to understand the mathematics while doing the coding

There will be a place for something like this in one of your courses or clubs.  The puzzle is intriguing because you can run it on a calculator or do it in your mind, in addition to writing a program.  It’s nothing so obscure that you can’t get your head around it.

A hugely mathematical explanation of the conjecture can be found here.  It doesn’t necessarily make it tougher to understand but it’s a nice confirmation that we don’t have the answers to everything.