Last weekend I attended an event known as a Sense development session, hosted at the Open University in the South East offices in East Grinstead. Sense is, of course, the graphical programming language that is used to teach the fundamentals of programming in a new module entitled TU100 My Digital Life.
Whilst TU100 discusses a whole range of issues (such as privacy, mobility and ubiquity) and allows different skills to be developed, programming remains an important subject and one that some students find difficult.
The main objective of the event was to enable associate lecturers to get together to share their experiences about using of the Sense software. Before the main Sense session, another tool was demonstrated and discussed: Jing.
The Open University provides and supports a number of different digital tools, such as its Moodle based virtual learning environment, synchronous discussion tools and image sharing software (such as the kind of software used on TU100, as well as other modules such as U101 Design Thinking and T189 Digital Photography). Sometimes, however, it is possible to make use of freely available tools that are just 'out there' (on the cloud) to facilitate teaching and learning.
Jing is one of those tools. At the start of the session, Graham Eaton demonstrated how Jing (Techsmith website) can be used to create simple and effective demonstrations to show students how to make use of different applications. One of the really nice features of an application such as Jing is that it also allows you to make voice recordings: you can talk through how you use something. When you are done, you can also share your digital recording to others by uploading the results to a shared website.
Graham went further than just saying that 'Jing is a tool that allows you to quickly make screen casts'. Using MS Paint, a graphics tablet and Jing, Graham demonstrated that it is possible to create customised 'chalk board' animations which can be used to explain simple mathematical principles.
There are, of course, some drawbacks: cost. The demo version (which is free to use) doesn't permit editing and has a limit of five minutes. These five minutes, however, may make the difference between understanding a principle and not understanding a principle.
An important (implicit) point was that we have different tools at our disposal, and it's up to us to find a blend of the different tools that we may feel comfortable using. Educational practice sessions such as these may inspire us to consider investigating and deciding upon our own blend of tools (and allow us to think differently about new possibilities).
The Sense part of the day was facilitated by Diane Brewster and Michelle Dewey. Diane kicked off the first activity to try and answer the question, 'what were the problems of teaching programming to novices?' From three groups we arrived at a number of answer, which I'll do my best to summarise.
Firstly there were the broad skills, such as thinking algorithmically and being able to 'abstract' the essence of a problem so it can be translated into code. This was connected to the challenge of looking (and understanding) the logic of problems. The issue of syntax was also mentioned, along with the acquiring the knowledge (and understanding) of different programming structures and how they might be used.
Knowing how (and where) to look things up was considered to be an important skill, as was techniques (and strategies) for testing and debugging. A final general point that was discussed was that some students who had learnt how to program using one programming paradigm (Wikipedia) might find it difficult to learn a programming language that uses a different paradigm.
Diane took us through a presentation that aimed to answer the question 'why has Sense been developed and what is its pedigree?' We were told about the Scratch language (MIT), a programming language called Alice (Alice website), and a microcontroller called the Arduino (Wikipedia). Sense is, of course, a version of Scratch that the Open University has modified. The differences being is that it has a small number of different programming constructs, and can also be interfaced with some Arduino based physical hardware.
Towards the end of this first session, we were then assigned into mixed groups and asked to consider how to write a small program using different coloured post-it notes. (Some of us were programmers, others were not!)
Playing with Sense
Before we were allowed into a lab filled with computers, we were introduced to a number of other Sense concepts, such as the notion of 'broadcast', or sending messages from one component of a Sense program to another. There was some discussion about the stage metaphor, and a presentation of a simple maze game. In keeping with this metaphor, something new for me was the idea that a sprite (a graphical object on the screen) can have different costumes.
The final part of the day was dedicated to about an hour of 'tinkering'. It is felt that Sense is one of those things that you can only get to grips with properly if you spend a bit of time 'messing around' with. By messing around, this might mean creating new programs, or changing existing programs.
Not having had much time to tinker before (and being a former software developer), some of the constructs (and graphical palettes that held these constructs) soon became familiar to me. What was apparent was that I had to do quite a bit of looking and searching, but by the end of the hour, I roughly knew where I needed to look (and what colour of programming construct to look for) to do the things that I wanted to do.
I took away a number of things points this session. The first was a reminder about how the teaching and learning of programming is not just about programming itself. It is all very well knowing about different programming constructs and understanding what they do but it is a whole other challenge to know how to decompose a problem into discrete steps that a computer can execute.
Researchers who have studied the psychology of programming have explored the notion of a programmer's cognitive strategy. As well as a programming strategy there is also the conception of a programmer's tactic, which can be considered in terms of something that a programmer might do to help them understand or get to grips with a problem, or understand what a computer is doing when faced with a buggy program.
Teaching programming isn't only about teaching the constructs, but also about exposing and sharing (or even 'bootstrapping', to take a computing analogy) these tactics. I clearly remember a discussion about using something called the Plan Do Check Act, or PDCA cycle (Wikipedia) to help users of Sense understand what needs to be done.
Another important point (and one that I've mentioned before) is the need for both students and tutors alike to find the time to 'tinker', to explore what is possible within a programming language or environment. Tinkering facilitates the development of strategies and tactics.
My own view is that programming isn't something that is just about making sets of instructions to get a machine to do stuff; it is also about facing up to the sometimes difficult challenge of problem solving. Programming is an intrinsically creative activity, and this is something that is easily forgotten. To be creative, we need to find the time to play and tinker. This is something that is easily forgotten too.