Saturday, October 27, 2012

Computational ThinkingAlgorithms, computer programming, testing, algebra and abstraction. You can demonstrate these things through things such as self-working card tricks. Allows learners to see that following a set of instructions carefully will always produce the magic effect. Important that the magic trick always works: cf. testing a program. We can use algebra to prove tricks and programs work which leads naturally to abstraction.

Creativity: encourage people to think laterally.

Self confidence: magic is about performance and can lead to increase confidence.

Learning intentions: might not always be revealed until after the trick. Talked about. Gave example of sleight of mind where you choose a card and then computer guesses it and destroys it. There are learning outcomes can come out of it related to salience and for example relation to HCI.

Showed XBox Kinect video which talked about how people took the KInect and used it in ways they just didn't expect. For example, in the video an example was shown of a boy with motor difficulties seeing the joints and muscles in his leg as he moved it to gain points depending on how far he moved it.

Dreamspark is a way that Microsoft provides free access to a range of technologies. For example Windows Phone Development Centre.

Windows Azure Educator: cloud services. Grants are available to make it available in schools.

Competition for schools: The KoduKup. (Launched January 2013?) Individuals or small teams can enter. Three different areas: recreate a classic arcade game; the environment (applications that have an environmental aspect); and the exploration of Mars.

Doug Belshaw works for Mozilla Foundation and wanted to make it clear they we a not for profit organisation.

Learning today happens everywhere and often difficult to get recognition for achievements that happen for learning that takes place out of schools. the problem is that qualifications we have live in silos and don't always connect with the rest of our lives.

Open badges are more than just images. Baked into the badge are all sorts of meta-data such as who issued it, who got it and why. Means that you can't just copy someone else's badges. They can represent hard and soft skills and work well with peer assessment. Open badges can capture all sorts of soft and hard skills.

Stealth assessment: learners can just be doing stuff and when they cover enough targets, a badge is unlocked. Can be linked to doing something often enough, or perform a set of related activities, a badge can be unlocked.

All works through a shared badge ecosystem and infrastructure (OBI - Open Badge Infrastructure) and is a universal standard. organisations issue badges. These badges are stored in an "earner's backpack". By default the earner can keep these private or chose to show them on Displayers - organisations that support the showing of such badges. The are also Endorsers - organisations that will recognise achievements.

Easiest way to get an idea of what this means and how it works is to go to the Open Badge site, earn a badge, create a backpack and then share your badges.

Question: how do teachers issue badges? You can install an issuing engine (which is tricky), there are Word Press plugin (see Doug's blog for details), or you can use third party sites such as Badg Us to create and issue badges.

Can issue badges to recognise achievement but can also be used for motivation (e.g. "Most improved behaviour" badge).

Will this take off? Various organisations on board already, e.g. Facebook, some job sites, some universities, Class Dojo, Code Academy, ... Charlie Love also mentioned that they are talking about incorporating Open Badges into SQA/Glow/ePortfolio developments.

Can third parties search for people with specific badges? Absolutely. Some site already doing this.

Special Bonus Stuff

Doug showed us a WebLiteracy curriculum at mzl.la/weblit. He'd be interested in feedback. Mozilla are trying to create a generation of "Web Makers" - it is a good thing that people can do more than just consume stuff that's on the web.

Idea behind Raspberry Pi is to help engage pupils with Computational Thinking and the study of Computer Science. EIS survey suggested more resources and training was needed to implement the changes in the school curriculum.

Duncan thinks the Raspberry Pi will be the "text book". Special SD card images will be created with everything the students' need to do the course already installed and accessible on the Raspberry Pi.

Lots of support and a great community already active on the Raspberry Pi Foundation's forums. It has been a hugely popular device. It can be used as a media centre, the are programming competitions, Raspberry Pi Jams (where learners get to gather and develop stuff).

There are problems. It is still a work in progress: for example there is not yet a definitive SD Card image. Resources for teachers are still in development. But there is a huge amount of development work going on. So user guides being produced, CPD planned, ...

Raspberry Pi devices are now available to be ordered in bulk and so might now be feasible to start building courses around them.

One nice aspect of the Raspberry Pi is it's open source. Other development environments (Kodu, App Inventor, ...) tie you to one technology. {Not convinced by that argument... but nice that in concept.- DM}

Christmas Lecture at Strathclyde this year is on the Raspberry Pi and embedded systems. Will show computers interacting in the real world, not just moving pixels about - Computer Engineering as well as Computing Science.

Question was asked: Arduino or Raspberry Pi? Suggested they were two different beasts. Arduino is low powered (can be used with battery on Independant device) and better at real time. Raspberry Pi much more flexible and powerful. Arduino might be easier to start with.

One standpoint is you need to walk before you can run. Others think, no, you need something to run towards.

First standpoint is the importance of setting foundations and introducing the basics. The other is about inspiration.

{Curses! Lost stuff while I went and fiddled with the Arduino. I'll quickly try and type up what I remember. - DM}

Started out talking about inspiration and showed an example of an Arduino kit that used ultrasonic sensors to detect when someone walked past. Every time someone was detected, it played a bit of "Pop Goes The Weasel". At the end of the song, there's a surprise {Deliberately vague in case you ever see the same demonstaration! - DM} Talked about the inter-disciplinary nature of such a project. Showed a video of an advert students created for a physical interface to Twitter.

Went on to develop an Aduino program which started with a simple "turn on a light" program and progressed to using potentiometers, buttons and sound. Talked about making variables physical.

Really nice demonstration. An Adruino starter kit can be purchased from Proto-Pic.

What are the interfaces (human or otherwise) - the user environment. Is the system a tool or a "friend".

What are the conditions for operation?

What are systems for similar systems or components?

When to use recursive or parallelism?

When is randomisation or approximation is appropriate?

When will a heuristic help?

When will a reformulation or reduction lead to a known solution?

When should you trade space for time?

When dealing with big data: ecological fallacy (designing for the "average" user when there is no particular individual that this fits) and fallacy of composition (going from specific to general)?

Computational Thinking is not just for Christmas, it's for life. But it is about understanding the limitations of computation. Programming is an ideal way to explore computational thinking. Computing Science is Computational Thinking and Computational Thinking is Computing Science.

Programming is everywhere! Whether or not people become programmers, they should understand software and be empowered rather than enslaved by software.

Muffy has a range of interests: from wireless network protocols to molecular biology (the body is a computational system). She is on the Board of BCS Academy of Computing. Also involved in the Royal Society report on the state of Computing in school. (They raised £50K to get the Royal Society report off the ground in three days!) There is a Computing Science: a curriculum for schools document (from Quintin) that's worth looking at.

Computer Science is a rigorous academic discipline. Every learner should be exposed to Computing Science. Scotland is in a good place to do this. Two relevant activities: the Curriculum working group looking at CPD needs of teachers; exemplification material from RSE and BCS Academy (produced by Jeremy Scott) formally launched in December.

Conclusions:

Computational Thinking is about problem formulation and solving

Comp Sci is a rigorous discipline

Programming is at the heart of Comp Sci

Computing is empowering - be scientific, be rigorous and be brave!

Teaching and Learning to Program

Too much doing; not enough understanding

Growth or fixed attitude? There is some truth in there being fixed abilities but there is in unknown potential for growth. It is easy to switch people from fixed attitude to growth attitude. (Unfortunately, the reverse is also true.) Is there something about the teaching of Computing Science that fosters a fixed mindset? Do we assume learned know too much too soon?

Increasing evidence that anyone can learn programming... but we just haven't worked out how to teach it yet. Compared to the Generation Game - do we set them to problem solving too soon? If they don't have the basic skills, they can't solve the problems. Kirschner, Sweller and Clark suggest guided examples are the way to go.

Premise 1: we want learners to have deep understanding of programming

Premise 2: we assess their understanding by looking at the artefact produced.

We use a potentially invalid assessment model. Pupils and teachers see a working program as the key thing but how did they get there? Did they just hack at it until it worked? (Monkeys and typewriters.)Cognitive Apprenticeship model
Start with easy but meaningful tasks. Then given small tasks which set foundation skills in place. The master is constantly observing and encouraging - the quality of intermediate steps are important. All the time, the apprentice is picking up the culture as well as the tools and activities.

The culture of debugging: novice makes random changes to see what happens; expert examines and hypothesises. Can students explain what they understand.

Flip teaching model. Peer instruction. Learners have to use the language of the subject when they are forming their discussions.

What are the small but meaninful tasks we can start novice programmers on? Good questions almost always transition between English; Computing Science-speak; and Code. Used to going from English to code but do we miss out Computing Science-speak? Do we ever go from Code back to Computing Science-speak or English (important for de-bugging).

Scottish schools have new curriculum which can be good for programming. Hard stuff in there like, how do you explain what a program does. If there is no prescribed language, how do you examine it? There must be code in the exam. How do you do it? Write a language for use in exam papers? An official pseudo-code is being created to allow learners to talk about programming and respond to coding questions. (Provisionally called "Haggis")

Suggestions to try:

Reduce problem solving early on

More worked examples moving to examples with steps missed out

Get students to articulate understanding often and give feedback (involve AH students?)

Flip your classroom. (Learners do the theoretical stuff at home and then discuss in school.)

Do we believe students can get there? Are we teaching doing or thinking? Thinking as we do should become explicit in our course design.

Michael is introducing us to Greenfoot - a language specifically written to teach the concepts of Object Oriented Programming. Started by demonstrating Wombat. showed how easy it is to invoke methods and to check properties etc. you can also look at any object and see that they have the same fields but different values and you can see the fields change as the program is executed. As well as looking at the visual side of things, you can open up the Java code and see what underlies the Greenfoot World.

Early understanding of key concepts is important. Can use the Wombats world to introduce:

Class

Object

State

Behaviour

Two views of Greenfoot: teachers have a tool to teach programming concepts; pupils have a tool that lets them write games.

Motivation is important and games development can be a good way to engage. Worth thinking about different types of games though as shoot-em-up games can bias course towards boys. Can develop multimedia tasks which give scope for group work, e.g. One pupil develops graphics, another the sound, etc. (Demonstrated Asteroid game, piano keyboard and a marble game.

Great demonstration of a way to introduce if statements: program a turtle to move only if there is enough sound being picked up by microphone - pupils cheer to make turtle move and go quiet to make it stop.

Can set up a world and then save it which creates the code which recreates the world you've set up every time the program starts. You can easily plug in a game controller to use instead of keyboard control. You can create a game easily within an hour but you then have to build understanding.

Modification and ownership. Important to let students take control. (There can be gender differences and the objects/worlds created can shape where things go.)

Use open problems. Allows for differentiation. That's why games are good as it always possible to take things further.

Projects of discovery. It can be frustrating to write solutions to artificial problems such as: "write a program to print out the first hundred prime numbers." A closed and artificial problem. But "write a simulation of ants foraging for food" creates a program that can be explored and discussed.

Use real data. For example, pull in data and display on map. Having a real world context is very powerful.

Sharing is important. Greenfoot has a share button that posts to public site where others can play your creations. "It's YouTube for Greenfoot programs.” It is really motivating to see others have used your program.

Gadgets are motivating. Can plug in games controller and Kinect sensor. Outstanding demonstration of using Kinect to detect people and then use body to paint, e.g. Draw with right hand, change colour with right foot, etc. Code is surprisingly easy to write.

Question was asked, can you use it for Higher Computing? Answer: Greenfoot uses standard Java so you can goes as far as you like with it. No problem therefore in using it at pretty much any level. For example, third year university courses use it to introduce AI. Target audience is about 13/14 year olds. Younger children can understand the concepts but struggle with the syntax (matching brackets etc.). Really nice progression though from Scratch to Greenfoot. Scratch is object based but Greenfot class based.