I recently made the trip down to Christchurch (which incidentally was my first time on the South Island after living in New Zealand for 4+ years) for a Computer Science for Primary School course put on by some amazing educators from the University of Canterbury.
A major focus of the course was using Scratch to code. We talked about learning both coding and about using coding to teach other subjects. The things I learned in two days absolutely have blown my mind with respect to coding in the classroom, as well as the possible uses of Scratch.
We started off the two-day event by discussing (and completing) several unplugged activities to teach computational thinking (because that's what coding is about, NOT the computers). We learned about binary and how to represent numbers with only ones and zeroes. We did a massive activity which pretty much led us to writing codes with musical notes. We also discussed ways in which computers verify data (through ideas such as parity - see the Error Correction activity in the below link) and how data can be transferred through the Internet securely (hint: it travels through the web three times, instead of once). A lot of these activities can be found on
http://csunplugged.org/.
Then came the chance to actually get programming with Scratch. Up until now, I've always looked at Scratch as a way to 1) make games and 2) tell stories. Though I have had some coding experience (FORTRAN in my first year of University, some JavaScript course on Khan Academy and lots of HTML coding), I never put 1 and 1 together. Well, I finally figured out what the 2 is. The following are some programs I made for activities we did this week as well as some programs that I might use in the near future (i.e. next week when I go back to class). Some of these came from direct problems - i.e. can you make a program that takes such and such info and tells you this and that result. Some of the challenges involved using only a small number of blocks. The programs are down in the order I made them, so you can see the evolution of what I've learned (keep in mind, this was over two days!).
Debugging is also an important skill that we discussed. The idea here is that no code will be perfect when first written, so we need to be able to go through our code in various ways to check that it does what we want it to do. There are many different ways to check. When using variables you can show them or you can have them said at certain parts of the way. All cases should be tested for to see if all cases work (boundary cases are specifically important). We got to do a quiz on this and I ended up winning some parity magnets for the efforts of my team.
These ideas will likely be the basis of the upcoming digital technologies curriculum in New Zealand, so this is a great way to get started. Computer Science doesn't need to be an add-on to our current curriculum, it can fit in nicely with everything we are already doing.
A side note: This was apparently the first Google-sponsored CS4PS in the world! It's definitely a great idea and should be repeated over and over for as many teachers as possible.