Sunday, February 26, 2017

Coding, Integrated: Shape & Scratch



It won't come as a surprise to discover that there is a lot of talk these days about coding, and to hear the calls in panicked tones from some quarters, parents are often curious to know if or when we intend to drop everything and add this new subject (it's not really new, it was called Control and taught in IT lessons in labs in the 1980s) to the curriculum. This request is generally completely oblivious of the logistical nightmare that attempting to restructure the school day to find time for another subject would be. Understandably this answer doesn't necessarily satisfy parents especially if they have had difficulties getting a space for children to attend one of the Coding ECAs I facilitate, or more often by parents who are unable to get a place in the activity for their child.

I'm an advocate for coding, but not to prepare kids for a new 21st 'literacy' of programming, as I explain in this post, I think this is a myth; I'm not the only one. So I don't think, like TTS and the UK, that we should be trying to teach it as a discrete subject.

That said, I can see how it makes sense to enrich our curriculum where it makes sense using coding experiences, you can see an example of that from this week in Grade 4 here and here, we have lots of others. I am working with our Primary School Maths Coach to explore opportunities to do more of this within Maths, as that is the subject where the opportunities are most likely/authentic.

Coding Polygons in Grade 4






Coding Coordinates in Grade 5


Ultimately, I don't see coding as any more essential a tech skill than, say video editing, or working with spreadsheets which are also important tech skills that we try to integrate naturally into the curriculum. As with all of these, I'd like to see authentic opportunities to code every year, throughout the college from K-12, and hopefully one day we will!


Until then, we are working hard to provide many opportunities for coding (far more than for video editing or spreadsheets!) as part of the Activities programme, and there are also a host of opportunities being organised by the Ideas Hub, coming very soon. Melanie Tan (melanieuwc@uwcsea.edu.sg) has more details about opportunities to participate in coding activities for all ages if you're interested.

Saturday, February 25, 2017

Should all Children Learn to Code?

That is a good question—one I am commonly asked by both parents and teachers, but mainly parents.

The answer is no; not all. Should all children have the opportunity to experience coding, and possibly discover they have a gift for it? Yes.

Via Techcrunch.com "Please don't learn to code'. 

I'm not convinced that encouraging kids to become coders (actually computer programmers—coding is more of a slang term) is a great idea, I think they should learn to code, if they're keen, but only so they can understand it better, so they can be creative with it. You see you can employ coders, they are a dime a dozen, they're all over the web. It's the creative 'big picture' aspect that is lacking, ie what to code, not so much how.

That said... It's hard to know what you can do if you don't know how. Basically you don't need to be the best coder, you need to be good enough to really know what its potential is.

"Someday, the understanding of computational processes may be indispensable for people in all occupations. But it’s not yet clear when we’ll cross that bridge from nice-to-know to must-know." 
http://www.nytimes.com/2012/04/01/business/computer-science-for-non-majors-takes-many-forms

"But is it really crucial to be able to code? Many content producers use technology virtually every waking hour of their life, and they don't know a variable from an identifier, or an integer from a string. Personally, I'm conflicted: I have a technical background, but for most people I just don't see how being able to compile code is going to prove useful."
http://m.gizmodo.com/5897020/is-learning-to-code-more-popular-than-learning-a-foreign-language

"Coding is not a goal. It’s a tool for solving problems. [...] However, much of the “learn to code” frenzy seems to spring from the idea that you can achieve fame and riches by starting a tech company and you need to actually code something first. Programming is not a get-rich-quick scheme. Even if you do hit the jackpot, the CEOs of successful tech companies do not spend a lot of time coding, even if they started out behind a keyboard. There are simply too many other tasks involved in running a company. So if coding is what you really love to do, you probably wouldn't want to be a CEO in the first place.."  
http://www.fastcolabs.com/3020126/no-you-dont-need-to-learn-to-code

Please don't advocate learning to code just for the sake of learning how to code. Or worse, because of the fat paychecks. Instead, I humbly suggest that we spend our time learning how to …  research voraciously, and understand how the things around us work at a basic level. communicate effectively with other human beings. These are skills that extend far beyond mere coding and will help you in every aspect of your life.  
http://gizmodo.com/5910497/please-dont-learn-to-code


..."engineering and programming are important skills. But only in the right context, and only for the type of person willing to put in the necessary blood, sweat and tears to succeed. The same could be said of many other skills. I would no more urge everyone to learn to program than I would urge everyone to learn to plumb." 
https://techcrunch.com/2016/05/10/please-dont-learn-to-code/

Clearly there is no shortage of people that want to code, and those that have the predilection will. I mean, the point is it's not hard to act on it, to make it happen, and ... if you can't, then coding is probably not an option for you.

Compare that to say … learning the oboe, well that's not quite so easy to learn if you only have a computer and an internet connection. But there are millions of people out there who do, and are honing their abilities every day, and they don't expect to be paid as much for it as you might think.



A useful analogy to use here are car mechanics, or plumbers—cars and toilets are arguably essential aspects of our lives, in fact it's hard to imagine how we would ever cope without them (especially the latter). But, despite this, does anyone seriously expect car mechanics or the fundamentals of plumbing to be mandated for all students to learn? No. So how do we cope when we need help with a malfunctioning car or toilet? We call the professionals, that's what we do, and that's what we do when we need something to be coded.  That's okay, let those that have the unique competencies and interest in those fields go on to master them, after they have left school, just like all the other professions, there is no rush, no shortage of coders (or plumbers, or car mechanics) nor is their likely to be.

So - how do we learn this stuff?

All the people I know who are competent users of IT and ICTs (yes, there is a difference) are those who basically taught themselves (including myself). It's almost a rite of passage. My instinct tells me that the kind of kids who can code WILL code, and if they can't find ways to teach themselves using the plethora of resources online, then... they probably haven’t got what it takes to code. Despite the glowing 'FUN, FUN, FUN!' messages that proliferate from some quarters of the web, the truth is, if you want to code, really code, you will need to work hard, you will need to persevere, nothing that is worth having comes easy, and coding is no exception. It is as simple as that.

"Top companies expect you to know what a recent comp-sci graduate would know, which could include SQL vs. NoSQL databases, the time complexity of some algorithm, or how to implement binary search. ... opportunities are few and far between."

"While there are some excellent companies willing to hire driven and intelligent self-taught engineers, they lie in the minority. Many companies pass over candidates without a formal degree in computer science before reading on; the stigma of low experience is a hard one to break in any industry but especially in those involving technical abilities."

http://qz.com/193896/no-three-month-course-can-teach-you-how-to-code/

I have never been taught 'IT' but I had to teach myself HTML to design web pages, and ActionScript to create Flash animations—at its best, that is what things like coding 'computer science' and subjects like DT teaches kids - YOU can solve your own problems, and you can teach yourself how to do it. It's all about the WWWHWW of getting from A to B, even if it means going through D, H and X to get there. The first time.

That's another argument for coding, not so much as a skills for the workplace, but the process, the rationale it demands, here's a quote from my colleague Helen Leeming who teaches IT in MS and HS, from an email exchange we had on this subject: This point about developing critical/analytical thinking through coding is powerful - (my emphasis)

"It isn't the coding… it's the critical thinking… they don't need to code any more than they need to be able to do quadratic equations - for most people either would be redundant the minute they walk out of school. But they do need to have stretched their minds, to have made their thoughts work in a different way, which both of those will. Almost none of them need to code (or indeed use a lot of what we teach them in school - oxbow lakes for example), but the ability to problem solve is essential. It could be taught through other things, it simply isn't in many cases… And people rarely choose to learn critical thinking unless they are an 'IT geek' and they are the ones that probably can already do it."

I don't understand why people question that this needs to be taught as people won't be coders, while we still do teach algebra and the periodic table to kids that will not be mathematicians or chemists. Education is not about learning a set of knowledge or practical skills that you can use later, it is about teaching you to think, to think in many different ways, to play with ideas in many different ways and to have a toolbox of techniques to address puzzles or problems you meet later. Abstract, critical thinking is one of the tools…"
It should be remembered that one the best ways to get to grips with the kind of logistical thinking skills demanded by coding is by using spreadsheet functions, such as google spreadsheets, right there in the browser, and then move on to writing your own formulae, to solve basic mathematical problems, that right there is the basis of writing code. Starting with a formula as simple as =A1+B1 to things like IF functions:

=IF(A1<B1, "awesome",IF(B1<A1,"amazing"))


So, my advice to potential coders would be learn to walk before you run, or more precisely, learn to walk (scratch) run (stencyl) jump (alice) then you can really get creative 'dance' with the source code:



All of the the tools below are free, come with great support materials, tutorials, and communities to get you from A to B, even if you have to travel via N and X.

Coding for kids

Some of the iPad Apps we use to introduce kids to coding

Here's a great set of Apps you can use to introduce our child to coding, even from Kindergarten, this is my suggested sequence of progression, from games that teach the kind of logical thinking needed for coding, to Apps that allow free form creation:

  1. Daisy the Dinosaur
  2. Tynker
  3. Lightbot
  4. Move the Turtle
  5. Hopscotch
  6. Swift Playgrounds (Apple)
  7. Grasshopper (Google)

Our Process

  1. Start with iPads to learn the basics of control, computer programming thinking, Apps like Daisy the Dinosaur, Hopscotch, Move the Turtle. Apps like these use a drag and drop interface will intuitively grasp the basics of objects, sequencing, loops and events by solving app challenges. 
  2. Move to Code.org 
  3. Google CS & Scratch http://scratch.mit.edu/ 
  4. Progress to Stencyl http://www.stencyl.com/ for iOS App coding using a similar 'block' interface, or alternatively App Inventor.
One of the problems with Scratch, as powerful a tool as it is, is that it doesn't have much in the way of structure, so the problem is, left to their own devices, kids can easily just end up distracted by the myriad games there are to play, and learn absolutely nothing about coding... A great solution to this is to use Scratch in combination with Google CS, they have a whole curriculum ready to roll, pitched at all sorts of abilities, and all come with prepared Scratch Projects, and step by step video teaching. 

Coding vs Programming

Despite the hype that is common around this area, the fact is that no matter what you may have been told, the block interface that is at heart of most, if not all the apps that purport to be teaching coding, are not really. This article from Quartz clarifies this issue:
"The light and fluffy version of computer science—which is proliferating as a superficial response to the increased need for coders in the workplace—is a phenomenon I refer to as “pop computing.” ... This accessible attraction can be catchy, it may not lead to harder projects that deepen understanding.
... an important distinction must be drawn between learning “coding tutorials” and learning “computer science.” I think of it as playing with coding apps as compared to learning to design an app using code. Building an app takes time and requires multi-dimensional learning contexts, pathways and projects. One thing is for sure, it can’t be done in an hour or two, with a few simple drags, drops and clicks." 
American schools are teaching our kids how to code all wrong - Quartz

So to avoid any confusion, I refer to the control activities that rely on blocks as 'coding'—the blocks act as a code that represents the actual syntax you would normally use with a programming language. So let's call programming, programming; and while the block 'pop computing' 'coding' interface serves as a useful preliminary experience, the actual skill of programming is very different. When a student feels ready, here's a path they could take:
  1. Khan Academy has a great online course for introducing kids to programming (not coding), the introduction to JavaScript is a great place to begin.
  2. Apple have a fantastic app that teaches Swift coding, called Swift Playgrounds, and Google's equivalent Grasshopper, both are available as apps, or can be run in a browser. 
  3. For developing apps, you can download the Xcode App for free from the App store if they feel they are ready to actually use Xcode, there are many online tutorials that can help with this, such as this one.
  4. Try http://www.codecademy.com/ for learning a range of programming languages. 
  5. Then possibly Alice http://www.alice.org/ 
By then you should be ready for the source code, this site hackerbuddies http://hackerbuddy.com/ will help with this final stage... One-on-one mentoring for startup hackers.

… but even then, which language?

C
Python
JavaScript
PHP
C++
Java

or Xcode for coding iOS Apps

And there are many more ... http://langpop.com/

But I would imagine for most kids the biggest motivator would be to create an app, using xCode (a free App from the App store). Which you can port to from Stencyl, but you have to pay $150 to enable that feature, so you can learn for free, you only need to pay when/if you're ready to put into the market place. Clearly it is the desire to create 'Apps' that is driving the current resurgence in interest in coding. For more on this phenomenon, read this article.


We now also facilitate the UWCSEA coding community through our ECA programme, for MS and HS students. If your child is in Primary and impatient to get going, learning Scratch and Stencyl will ensure they are more than ready by Grade 6, and of course from Grade 9 students have the option of choosing to follow a course in Computing, all the way through to grade 12 if they so choose. Middle school includes a module of coding through Lego Mindstorms in DT and we offer IGCSE Computing and IGCSE IT, and IB Computer Science in High School.

Sunday, February 19, 2017

Video Games & Playgrounds


One of the most profound shifts in terms of childhood in a digital age, is the rise of online gaming. Once the preserve of teenage and tween geeks and nerds in darkened LAN rooms, now it is a common pastime for younger children, certainly many of our Junior School children regularly engage in these pursuits as a regular pastime. This is not a post about whether or not this kind of activity is one we should encourage, (I think we should) that is a subject I have written about elsewhere, and present a parent workshop about gaming every year. No, this is about providing some advice for the many parents who, for whatever reason, have kids who like to play online.

There is a growing collection of video games that fall into the category of multiplayer online game, from Clash of Clans to Club Penguin, to Minecraft, Roblox and Overwatch, and many more.

21st Century Playgrounds

As is often the case these days/this century, parents and teachers often find themselves faced with trying to relate to a child, whose normative childhood experience bears little resemblance to their own, but let me reassure you—while the medium has changed—the message and the meaning, and the opportunities and obstacles that surround group play have not.

The main place and space you are likely to encounter this is at home, as playing video games in class is generally not something kids will have time to do. There may be exceptions, eg possibly as a one off iTime project, but even then, the objective of creating something that they are accountable for in terms of achievement would need to be paramount. This is the stance we take with these kinds of gaming experiences, like Minecraft and Roblox. That said of course, there may be teachers who find this to be a useful strategy as a reward for hard work for example. If so they will take the necessary precautions, just as they would if sending kids to play on the playground.

Safe Play

When it comes to games for kids, Roblox is a great game, just like its progenitor Minecraft, however—as with all making, creating, playing, social experiences there is always the potential for inappropriate use, and experiences, whether the playground is virtual or actual. The solution, much as we would advocate for any 'multi-player' 'off screen' play—from playing tag or handball, to playing football, to swimming or having a sleepover, is to make sure there a​re​ clear parameters, and appropriate supervision, to ensure that we are minimising the likelihood of potentially harmful or unpleasant encounters.

Online maker spaces like Roblox and Minecraft are unique in terms of the sheer potential they offer in terms of unbridled creativity, and are also very familiar in terms of their potentials and pitfalls.

There are inherent risks with all sorts of forms of play, even childhood games that echo through the ages like 'Hide & Seek' are potentially dangerous, they're certainly not risk free. With all kinds of games the same safeguards we would have applied to playgrounds as children apply, ie be aware of the other people who are playing in this online arena or space, and the extent to which this space is effectively supervised, or moderated. If, as kids, we had been permitted to play unsupervised at nearby playground (I was, in London in the 70s, that seemed to be quite normal). We would have taken appropriate action if, for example, there were bullies in the playground, making life miserable for everyone. The same is true of these online spaces, which are very much similar to playgrounds, only on a screen, instead of in a park.

Safeguards

The developers behind games like Roblox and Minecraft are very aware of this, and design in safeguards for children, but this only works if the child has been honest about their age when creating the account, whether it's a Roblox account, or an Instagram account. Whenever a child creates an online account, like any other internet account, it's important that they set these up with the parent, or with the parents permission, otherwise they can 'accidentally' end up effectively creating an account for adults which could result in their being exposed to content that is inappropriate. Ideally a teacher or parent should be involved in the account setup and in ensuring that the child plays/uses the account responsibly—this is a skill that will serve them w​e​ll for the rest of their lives, in all sorts of online environments.

Roblox, for example, have a very clear commitment to safeguarding children; but it can be all too easy for children to create adult accounts, thereby effectively bypass any and all safeguards that would automatically be applied in the case of younger children. This usually happens if a child 'accidentally' enters the 'wrong' year of birth when registering their account, then the system assumes that are older than 13. In the event that this happens, my advice is for the parent to have a close look at the child's account settings, if Roblox or Minecraft knows that a user is under 13 there are a slew of safeguards that will be applied to the account to ensure the child's welfare, eg:

"For users age 12 and under, however, we take extra precaution to ensure their safety and privacy by automatically enforcing more restricted settings so they can only directly message other users that are accepted as friends on Roblox." 
"Players age 12 and younger have locked privacy settings to prevent contact from people they don't know. These players must first become friends with another user before certain activities are allowed, such as messaging, following into game, and playing in private servers."

Have Fun!

There are advocates in some quarters who encourage parents to join their child and play with them, to be honest, I think you'll find that most kids are less than enthusiastic about this idea.... Would you play tag, or have a sleepover with your kids and their friends? Probably not, so why would online play be any different?

Last but not least, the best thing you can do as a parent is be consistent; online and offline play are rich experiences that are enjoyable and highly beneficial provided some basic precautions are followed; for more on the potential benefits of gaming, see the following on video games as 'sandboxes'.