The new curriculum and web science

There have been many arguments over the new computing curriculum. The more I look at it, the more concerned I am that it appears narrowly focused on programming, whereas computing can involve so much more.

One case in point is the course I’m currently studying at FutureLearn, the Open University’s contribution to the MOOCs (massively open online courses) currently sweeping the web. This particular course, sponsored by Southampton University, is called Web Science: how the web is changing the world. It looks at the effects the world wide web is having on society, and how we have influenced the web.

The topics it covers are ones that are important to understand, and that I spent time in the classroom trying to get across – that technology is new, but pervasive, and affects our lives in more ways than we can imagine. In fact, the same topic is covered in a book I’m currently reading in order to review: Digitized: The Science of Computers and how it shapes our World.

If children are truly to understand the importance of coding, and to be able to express themselves effectively using digital media, then they also need to understand the deeper concepts of computing, for example how it can help us to build a better world, and to better understand our own minds.

I’ve been quiet lately on here lately, as I left my teaching post in July. After a break away from classroom technology and learning for a bit, I’m getting restless and I’m starting to look for ways that I can help schools make the move forward from office-based computer skills to real computer skills. If anyone has any suggestions – or anyone in the Canterbury, UK area (or online) would like practical help – then please do get in touch. I will be resuming my quest to produce teaching materials in January, but not being in a classroom regularly makes it harder to keep up with the practical side of things.

Incidentally, there’s another MOOC coming up that ICT teachers really should be seeking out: Teaching Computing part 1 (part 2 to follow) from the University of East Anglia, which aims to prepare teachers to teach the new computing curriculum in both primary and secondary sectors. The course lasts for 4 weeks and is expected to take up around 4 hours per week, but of course anyone seeking to teach computing should be prepared to devote time to it – my biggest fear is that computing will go the way of ICT, with too many non-specialists stumbling through and not giving the subject the rigour that it deserves.

 

Hopscotch – programming on iPad

Hopscotch's interface with code blocks on the left and coding area on the right

Hopscotch looks similar to Scratch in many ways

I’m always on the look-out for interesting ways to introduce children to programming, and recently I came across Hopscotch, a free iPad app.

At first glance, Hopscotch looks very much like Scratch, but it is much simpler, while making full use of the interface possibilities of an iPad.

Blocks available to use are limited to

  • motion: move, rotate, set heading, change x by, change y by, set speed
  • lines: leave a trail… end, set line color, set line width, clear
  • controls: repeat… end, wait
  • looks: scale by, set opacity, change costume
  • operators: random

Each script starts with an event trigger:

  • When play button pressed
  • when I shake the iPad
  • When I tap the stage
  • when I tilt the ipad down/left/right/up
  • when I tap the object
  • when I hear a loud noise
  • when [this object] collides with……
The program can produce simple graphics

The program can produce simple graphics

One sample program that came with the app produces this output, by using several sprites to each draw a section of the image:

Part of the code for the Sydney Opera House program

Part of the code for the Sydney Opera House program

My first reaction was that not having the full functionality of Scratch is a real disadvantage – there is no possibility of embedded maths, for example, because the only operator offered is one that generates a random number.

However, on reflection, this could also be a strength, as limiting the code that can be used forces attention on those that can be used, so the coder can really explore the possibilities without getting too bogged down in complicated code blocks.

It’s my impression that the app is constantly under review and development, as since I first investigated it the collision function was added, so it’s very possible that within a few months Hopscotch turns out to be a fully developed, child-friendly graphical app design tool.

top of the code area showing sprites on different tabs and a graph showing the x and y position of the sprite

Tabs show different sprites in the program, while a simple diagram helps with placement on screen

In the meantime, it does offer basic functionality that enables creators to create interactive animations and activities involving basic logic. Its Event -> Action format would also serve as a good introduction to Gamemaker or other similar products, and of course the drag and drop graphics make it very easy for even young children.

I suspect that older children would find this rather limiting after a while, but I would certainly recommend it at key stage 2 for exploring possibilities in programming, and even as a cross-curricular maths tool, exploring distances and angles, for example giving a drawing to copy and seeing if children can describe the sequence needed to draw it.  Results could of course be recorded by screenshot and drawings to copy can be as simple or complex as needed, leading to natural differentiation by task.

There is a limited selection of cartoon-like graphics that can be added to projects, plus a text object. This limits what can be done rather, but again I suspect that this could well be developed in the near future, including hopefully the ability to import your own graphics.

There is a limited selection of objects available, plus a text object

There is a limited selection of objects available, plus a text object

In summary, a basic tool that provides a good introduction to programming for younger children and has strong possibilities, but which at the moment is likely to be rapidly outgrown by anyone who has already experienced Scratch, as the interactivity offered by the iPad is negated by the limited instruction set.

If you have a class set of iPads, then this is would be useful. If you haven’t, then you’re not missing very much.

 

Gamestar Mechanic and the new computing curriculum

learn to design video games with gamestar mechanicOne resource I was pleased to come across was Gamestar Mechanic. This is a purely web-based resource that teaches elements of game design. It’s aimed at 4-9th graders (I make that 9-14 year olds) and offers them a chance to move from playing games through fixing games to making and sharing their own. Of the many resources I’ve used with key stage 3, it’s the one I see consistently used voluntarily by the students outside of formal lessons. As we’re partway through our year 7 computing unit, which so far has looked at Scratch, I thought I’d take a closer look at GSM and see exactly what offers in terms of learning and how it fits in with the new computer-orientated curriculum.

One feature that makes GSM easy to use in class is that the registration system does not require an email address. It does, however, have a system to recover passwords that depends on students being able to remember a username and sequence of favourite colour, subject and animal, which isn’t ideal (it can change from attempt to attempt, let alone lesson to lesson!) so this time round I intend to make students make a note of their user name and passwords somewhere secure. They can use any nickname as their user name as long as it’s not already taken, but often it’s easier to tell them to use their school log-on names and passwords rather than spend hours trying to think of something suitable.

Once registered, the student is presented with a quest to work through. There is one quest available free, while others are available for those with premium membership ($19.95 for premium membership, and it may well be that students are interested enough to get their parents to pay for it, but free membership is plenty for school use).

There are two other areas of the site that will also interest users: in the workshop they can create their own games, while in Game Alley they can publish their games and try out those made by others, but more of those later.

episode 1 screen

Episode 1 screen

There are teaching materials provided by the website to serve as an introduction to the site, in the form of five lessons. Lesson 1 works through episodes 1 and 2 of the quest and then provides an opportunity to reflect on learning so far. The resources provided for lesson 1 are a set of cards that can be printed and used for matching – one set provides images of various concepts, while the other set provides names and explanations of those concepts, which are grouped into mechanics, space and components. For example, under the space group you will find bounded and unbounded space, under components you will find health meter and avatar, and under mechanics you will find collecting mechanic and exploring mechanic. This will give the students a whole collection of key terms and concepts to build the rest of the unit on, but I wonder just how many they will be able to take in and remember. The suggestion is that in small groups they work to pair up concepts and images and then everyone goes through the answers. I’m considering giving them worksheets with the concepts on and the cards with the names on, so they can fill in their worksheets and keep them for reference.

Lesson 2 introduces the core design elements, which are defined as space, components, rules, mechanics and goals. Episodes 3 and 4 of the quest provide a chance to investigate ways of changing each of these and showing the effect on the games. The resource provided for this lesson is a graphic to serve as a reminder of the core design elements.

Lesson 3 looks at balance, investigating how the different core design elements balance a game to achieve the right level of difficulty. This focuses on episode 5 and then gives students the first opportunity to build their own game. This ability is there right from the beginning, by the way, via the workshop, but each challenge the player completes in the episodes unlocks another feature they may use, either a different sprite, different background or something similar, so the further through the quest they get the more they have to use in their own games.

gamestar mechanic game creation screen

Games design screen

Lesson 4 gets the students to design their own game, and offers challenge cards for different themed games should you wish to use them.

Lesson 5 encourages students to play-test each other’s games and give feedback via the sheet provided. This guides them into answering questions like “What were the core mechanics of the game?” “how well was this game balanced?” and “how could this game be improved?”.

So far so good, but what got me really thinking was when I started looking at the new computing curriculum and how Gamestar Mechanic might be considered to fit into it, because that was when I struggled to find anything in there that would link easily to games design. While games design is only a small part of what computing offers, at the age of these students it’s their most immediate attraction and links in most closely with what they already enjoy doing, so whether it fits into the computing curriculum or not,  I feel it has a lot to offer.

One aspect of the computing curriculum is to use two or more programming languages. Does this provide a programming language? Well no not really, but it does provide objects that have attributes. By changing those attributes the student interacts with elements of the game and causes changes. While this does not count as a programming language, I would certainly argue that it is an important step towards moving into object oriented programming in systems such as Greenfoot, by providing a way to play with parameters and settings in a very controlled and accessible way.

Object oriented programming gets no mention in the computing curriculum, which is a shame. I’m starting to get the impression that it was written without the needs of children in mind; I can’t imagine too many children being excited at learning sorting algorithms, but give them a chance to learn games programming and they’ll be much more engaged (I know that object oriented programming and games design are not the same, but the latter provides a very good way into the former). What they learn via games design can then be applied more widely as they develop their skills.

game alley screen

Game Alley – published games

What about the creative element of the computing curriculum? Undertake creative projects that involve selecting, using and combining multiple applications … to achieve challenging goals… well it’s selecting, using and combining multiple elements and experimenting to see how they work together in order to achieve a playable game, does that count? It’s not really multiple applications, although it is multiple elements, which can include sound. What students can’t do with this, as far as I can see, is design their own elements. I’ll be taking a look at Gamemaker very soon, which is a natural successor to Gamestar Mechanic and does offer this facility.

Create, reuse, revise and repurpose digital information and content with attention to design, intellectual property and audience – well it’s doing some of that, not intellectual property maybe, but attention to design and audience, and combining the elements in a suitable way, particularly if you use the challenge cards to set a specific purpose or setting for the game.

Maybe Key Stage 2 would fit it better? After all, if the students haven’t been through computing at key stage 2 there’ll be some need for overlap for a year or few. Here we have solve problems by decomposing them into smaller parts, use sequence, selection and repetition in programs; work with variables and various forms of input and output, use logical reasoning… I would argue that it covers all those, although maybe not in the way those who created the curriculum were expecting them to be covered.

What it does do is provide a common language and set of concepts for games design that can then be developed further in many directions, so that students can move on to programming their own objects while already aware of concepts like level design, object interaction, responding to events and parameters.

Key stage 4? Here we fare much better.  It should provide a chance to develop their capability, creativity and knowledge in computer science, digital media and information technology and to develop and apply their analytic, problem-solving, design and computational thinking skills, all of which I would say it does. Considering the restrictions on it, however, I would suggest that GSM would need to be used as a springboard to Gamemaker, Greenfoot or Scratch, all of which are much more versatile and provide more opportunity to incorporate a wide variety of imported assets. It does, however, have the advantage of allowing students to focus on the game design elements and how they interact without worrying too much about how they create them, so they are not trying to learn everything at the same time.

So strangely, this seems to fit in far better with the older key stage than with the younger ones (although, of course, the key stage 4 curriculum was deliberately left very vague in order to fit in with the many ICT and computing qualification courses already available).

profile page showing badges earned

Each games designer earns badges as they learn

Looking at the old ICT levels, Gamestar Mechanic seems to fit in much better: strand 1 covers planning, developing and evaluating systems, using feedback to develop work, strand 2 covers creating sequences of instructions and changing variables and explaining the impact, and strand 3 covers presenting information in a range of forms for specific purposes and audiences.

In summary, while GSM doesn’t completely seem to fit the new computing curriculum, it does seem to have a lot to offer as an introduction to game making, and as part of a larger unit or with explicit teaching on various aspects such as changing parameters and looking at audience and purpose, it does have a place in either late key stage 2 or early key stage 3 learning. More importantly, I would argue, it engages students and keeps them coming back for more, and shows them the satisfaction of creating their own games for others to play and comment on. Any frustration they eventually feel at the limitations of games created through this method can then be directed into Scratch etc, where they have much more control but need to create the behaviours themselves.

game review screen - players encouraged to fill in detailed responses

Game review screen

And that reminds me of another aspect that appears to be missing from the new computing curriculum: there is no mention of collaboration in there, of working together as a team to achieve a common goal and of supporting each other in their learning. This was present in the old system (use ICT to communicate and collaborate) and would appear to be a vital digital literacy skill, considering the extent to which young people use ICT to share ideas in the real world. In Gamestar Mechanic they have a chance to do this by writing reviews for games.

Still, until the new computing curriculum is confirmed and we have more concrete information about what it entails and how to deliver it I’m happy that my students will indeed experience the games design fun of gamestar mechanic.

 

 

An amazing summer

It’s nearly time to go back to school, so my time spent blogging/playing with computers is likely to drop rather, but I just wanted to look back on what turned out to be an amazing summer, completely different from the previous few.

It started with me realising that while many years ago I looked up to those older than me, and more recently that has crept to admiring the work of my own generation, suddenly I’m finding that those younger than me are doing wonderful things – somehow it feels like life has passed me by and moved on, and it’s the next generation now pushing things forward.

I’ve learnt about things like hackspaces, where people gather to share ideas and make things, and I’ve learnt about coderdojos, where people, including kids, come together to develop their programming skills.  I’ve learnt about hackdays, where people come together just to get some concentrated coding done and to learn and share.  I’ve learnt that if something doesn’t exist you don’t just complain, you go out and build it, and make it look good into the bargain, and the end product can matter less than the learning from the process.  I’ve learnt to solder, and started to learn basic electronics.  I’ve learned that people do indeed use HTML to create clean-coded web pages, and that reading other people’s code can be fun as well as a learning experience.  I’ve played around with several different programming tools, and learnt some of the advantages and disadvantages of them.  I’ve revisited a lot of my learning and discovered that I haven’t forgotten as much as I thought, and that I can do more than I always imagine.  I’ve improved my multimedia skills as well as programming skills, because communicating is just as important as programming when it comes to a complete project.

I’ve learnt that it’s an amazing, exciting world out there for someone who wants to learn, because there are so many ways to find things out – not just books, as there was in my youth, but websites with written content, images to look at and even demo videos to watch.  There are colleges and universities out there offering learning for free, and plenty of people to share the learning with.  Many people who are out there working on various projects are able to do it not because they studied officially for years, but because they went out and got the learning they needed, in whatever way they could.

Kicked into action by this, I started to do things for myself, instead of just sitting wishing, and so I’ve done a lot of coding, both on projects from books and on my own projects.  I’ve written games and apps, and developed my understanding of how and why games work, and how computers can control so many things around us and why it’s so important to know exactly what you want and to be able to explain it clearly.

I’m ending the summer a lot more confident about what I can do and what pitfalls to look out for, and with a conviction that the time is coming when more and more people are learning to make and do things for themselves, and that for those in that position there are many opportunities to succeed.

I just wish there were more opportunities locally to meet up with like-minded people, because however much fun it is to meet people in cyberspace, it’s got to be even more fun to get together in person, with the fun and games that can ensue from that.

Google app engine

I’m trying some proper grown-up programming today!  I’m working through the udacity CS253 Web Application Engineering course, to try to write real live web applications in python that are hosted through google.  I’m finding the course probably a little tougher than I should because I haven’t yet completed the CS101 Introduction to programming course, which teaches Python, so while I know the theory of programming I don’t necessarily know the Python-specific version of things.

birthday validator web application

birthday validator app

However, I’ve managed to complete unit 1, which was a recap of HTML forms, and then homework 1, which was to get a real live application up and running.  During unit 2, this application was developed into the project in the link, to provide a simple form, then check the values entered in the form and either ask the user to check and resubmit or confirm that the date entered is valid (not full validation: it only checks the month is valid, the date is between 1 and 31 and the year is within certain dates).

Now my task for homework 2 is to write an application similar to the Udacity version of a ROT 13 encoder.

This is where I find that what I’ve understood in previous sessions I don’t necessarily know enough yet to apply!  It really goes to show that working on your own project strengthens your learning so much more than merely reading about it and copying someone else’s project.

app engine launcher

app engine launcher, showing current apps running locally

First I had to create a new application, which proved a little tricky – I think I was trying to go too fast and went wrong somewhere so tried again, following step by step with the video, and this time checked that the dummy application that’s created was accessible before moving on.  The google app engine provides a way to run the applications on your local machine, so that all testing and building can take place offline first.

Once I had a dummy application, I could then start to amend the code, taking pieces of code from the birthday validation code to adapt where necessary.

First step was to copy the udacity html source code for the page itself.  Then I managed to find a rot13 function in python that would do the encoding I needed, to save myself having to write my own function.

So the challenge that was left was to use string substitution to rerender the submitted form with the encoded version of the text.  This would then continue to apply every time the form is submitted, so that the encoded version would roll back to the unencoded version (rot13 is a very simple substitution cypher: it moves each character on 13 places in the alphabet, rolling round.  Applying it twice puts the letter back to the correct one).

At this point I once again had reinforced to me that you have to understand what you’re doing in computer languages, unlike in French or German where as long as you have something similar the person on the other end will try to meet you halfway!

The basic algorithm is:

  1. Display the page and form with nothing in the text area to start.
  2. When submit is pressed, encode the text from the text area using ROT13
  3. Then redisplay the page and form with the encoded text.
  4. When the submit button is pressed again return to step 2 and continue.

A good couple of hours later I had most of the code working but couldn’t display the encoded text within the text area.  Getting frustrated, I took a look at the solution provided on Udacity, only to discover that it contained a lot that hadn’t been covered at all!  In fact I found a thread on the accompanying forums complaining that the solution given was not given very clearly, and contained several aspects that hadn’t been covered in the sessions.  While it is fair at this stage to expect students of the course (who are adult students studying for their own interest) to do a little research by themselves, it’s a little unfair to disregard what’s been covered in the course so far and to introduce in a homework solution topics that are completely new!

project to encode text using ROT13

ROT13 encoding project

It was while poking around in the forums that I managed to discover what my problem was: we’d been introduced to a new html form element, the textarea, which takes values slightly differently from the elements we’d used so far.  Altering my code to take that into account produced the solution, which I was then quickly able to finish off, before uploading the finished project.

So what have I learned by doing this?  I’ve gained experience in using the app engine, and using Python generally, but I’ve also learned some valuable lessons for learning: when you set a task, there’s an amazing amount of learning to be done by adapting previous projects to fit a new brief, but it’s very important to make sure that you don’t expect too much too soon in the way of independent learning.  There’s enough to learn, especially in the early stages, by recycling current knowledge, without the time wasting effort needed to investigate extra material that’s not been shown.  Indeed, a missing comma wasted plenty of my time as it was, let alone the problems with the text area display!  It’s also important that a good solution/explanation is available if someone does get stuck, as the Udacity solution was so far from what we’ve learned that it added to my confusion rather than helping it.

The other thing that I’ve learned is that as simple as the finished project is, I get a lot of satisfaction from battling with the computer and winning, and if I can get some of that sense of achievement over to my students I’ll be very happy.

 

Yousrc – introduction

yousrc logo

Yousrc

Yousrc is an online resource that promises to teach programming skills by building simple programs that can easily be played on an android mobile phone via their own yousrc app.  Now I finally have an android phone with a large enough screen (touch wood!) I can have a play and try this out properly.

simple yousrc code

simple program

The resource contains many features useful to schools, including the ability to register as a teacher and then register your own students and provide them with their logins and monitor their accounts without having to go via students’ email addresses.  It also promises that all apps are moderated before publishing and therefore child-friendly, and this goes for all resources and forum posts as well.  I’m not sure how they would maintain that on a much larger scale, but for now all this is available for free, with an optional paid version offering more online space, more support and more teaching/learning resources.

Currently if you have students registered within your school they submit apps for your approval.  If you approve them, they then go to a member of the yousrc team for further checking, before they are published and available to anyone.  The site features some projects if you wish to see the sorts of things that have been produced.  This is an example game made by the project’s owner.

I’ll be starting by working through the teachers’ resources available from the site.  There are six lessons available to teachers, which take you from creating your first “Hello World” program to displaying, moving and bouncing an image, plus using input via mouse and adding sound effects.  These promise to introduce the basic programming structures: loops, if statements, functions, global and local variables etc.  By the end of the sixth lesson the student will have written a program that has a logo moving around the screen, making a sound as it bounces off the edges and stopping and ending the app if the logo is clicked on.

Yousrc uses its own language, ELC, and all sourcecode for published apps is freely available.  It makes use of the Java runtime environment.  Code is written into the browser, in an editing window which can be run fullscreen if preferred.  Code is colour coded for ease of understanding, and there is a built-in checker to pick up syntax errors.  Apps can then be run onscreen from the editor, and you can optionally see all variable values as the app is run.

a program to animate the logo

animating a logo

Running apps on your mobile phone entails installing the free yousrc android app and then logging in with your details.  You can then access all your apps, published or unpublished, or look at other published apps, although I couldn’t find a search feature and I found the main app rather slow to respond at times and very difficult to work with.  There is a search feature on the main website, however.

One issue could well be the difference between designing an app with mouse input and with touchscreen input, so I’ll be looking into how that is handled.  When an app is played on the phone, a touch pad appears at the right of it with arrow keys and a space key, or there is the option to switch to motion sensors.  I found dragging my finger onscreen had the same effect that moving the mouse would have done on the computer version of the game.

First impressions are that there is a lot of support available for this tool, and the language I’ve used so far is straightforward and recognisable, but it will take more experience before I really see what the software is capable of and how far students are likely to be able to take it.  There is also the issue of how different the language is from any of the standard languages, so again I’ll be looking at that as I proceed.  I’ve found nothing wildly different so far, however.

I hit a few technical problems with my system to start with, so I’ll be keeping an eye on that as I go on as well: one essential requirement for software for learning is that it is stable, but in my case it could well have been a browser add-on causing problems.

This is tougher to get going with than App Inventor, but it does look and feel a lot more like proper coding, and I suspect the learning would be more intensive (which is both good and bad, depending on circumstances!).  The selling point for me is being able to see your own work on your mobile phone, so I’ll be revisiting at some point soon to move on a little further.

 

Online learning – MOOCs

There are many ways to learn: attend college or university, try to teach yourself from a book or videos, and now a new way – MOOCs – massive open online courses.  These are very new to the scene, but many of the big universities are quickly picking up on the idea.   I’m currently enrolled in courses from two different providers, Udacity and Coursera.  Both provide their learning through videos and online questions with instant feedback, plus quizzes or other work to be completed independently and assessed (assessment is done either automatically or via peer assessment).

Udacity offers, among others,  CS101 introduction to computer science,  which is a basic introduction to programming via Python.  This course not only offers a good grounding in programming, but also does it via building a search engine, thus showing some of the secrets behind google; one of the first tasks you do is build your own web crawler to collect links.

Coursera offers Internet history, security and technology, which shows how computing and the internet developed and some of the issues involved, a course which requires no technical skills and is recommended for anyone who uses the internet regularly.

I do recommend you check these out: each course has thousands of students from around the world enrolled and learning, and the forums tend to be very supportive places.  If you keep up and complete the materials by the deadlines a certificate is usually offered, which is good to show what you have done but probably holds no actual merit; the main benefit is in the learning itself.

There are examples on the websites of students who have gained jobs following their studies and some impressive projects that students have built, and udacity is starting to offer formal tests of their learning in the on-line learning centres around the world.

One word of warning though: they do involve proper learning, and you will get the best out of them if you take them seriously and set aside time each week to work through the materials and attempt the tasks.