Thursday, 7 May 2015

Angry Birds Maze and Scratch

This week we have been focusing on digital programming using algorithms.  We were asked to choose and complete a digital learning challenge. I selected programming a robot which was completing the Angry Birds maze on the Hour of Code website.  When I first clicked on the link to take me to this page it began with simple video of how to use the coloured blocks to program the Angry Bird to move to the Naughty Pig.  After the video is complete the player was invited to complete the maze using the steps demonstrated in the video.  Every few mazes there was a new instructional video which took your knowledge and skills to the next level in order to be able to program more efficiently to progress through the game - see screenshots below.




 
At the beginning of this game I found it quite easy to program the Angry Bird as it used simple instructions such as 'when run' followed by 'move forward' or 'turn left or right.'  However, as I began to advance to the higher levels, I found that being able to move the character using programmed repetitive actions and fewer blocks was more complicated and required me to think critically before making the action to avoid my character running into a wall or water, then failing at that level.  Completing this game in the classroom with a group of students would assist them to understand how simple software works and how to define problems by following a sequence of steps and decisions (algorithms) needed to find a solution, i.e. process and production skills in the Year 3/4 Digital Technologies curriculum (ACARA, n.d.). 
 
Another digital system that was explored this week was 'Scratch', which is a free online program used to create interactive stories, games and animations.  We explored this by creating our own game using blocks and sets of algorithms.  I was pleased I had completed the Angry Birds maze prior to attempting to code this game as those skills assisted me to understand the purpose of the blocks in terms of making the characters move.  Fortunately I had a worksheet which outlined the order in which to list the blocks to make the characters (shark and fish) complete the correct actions.  First the shark character was programmed to move around the fish tank with the mouse pointer.  Once this was completed a fish was added and programmed to swim around on its own.  After the two characters were programmed to complete these basic actions it was time to make the shark eat the fish with an embedded sound and then program the fish to reappear in order for the game to continue.  To add more fish in the tank 'duplicate' was selected and three more fish entered the tank and completed the same action as the one that had been programmed previously, and their colour and actions could be altered to suit the game.  The scoring system was then programmed in order to change the animation into a game. To do this the score function is selected so that each time the shark eats a fish a point is scored; however, each time the fish eats an octopus (another character I created), a point was lost.  I was able to program the shark to eat the fish, have the fish reappear and the point scoring take place. I found it difficult to program the steps needed for the shark to lose a point when it ate an octopus.  The screenshots below demonstrate the different stages of the game and the coding which was completed to this point:
 


  
I found that this programming was a large skill leap from the simple algorithms used in the Angry Birds maze and my frustration levels were tested at some points in the process; however, once I had experimented with the different command blocks and functions, I found that I was able to understand how to program the characters to complete actions in a more efficient manner.  Utilising the 'Scratch' program to create a game with these more complex steps could link into the Year 5/6 Digital Technologies curriculum processes and production skills as it involved modifying and describing game design in alignment with commands.  There are also multiple options for the instructions, such as forcing the program to make a choice between two options using an 'if' statement, such as 'when the shark touches the fish it eats it, if it doesn't touch the fish it can keep swimming and bounce off the side of the tank.'  In addition, this software experiments with concepts such as programmed loops to repeat actions multiple times, using limited command blocks for efficiency (ACARA, n.d. http://www.australiancurriculum.edu.au/technologies/digital-technologies/curriculum/f-10?layout=1).
 
Overall, although games are often considered 'time wasters' within the classroom environment, my learning experience with the Angry Birds maze and 'Scratch' activities demonstrated that programming could have many benefits for students.  These include computational and critical thinking skills, persistence, creativity and satisfaction when achieving their final goal of creating a 'working' game.  In addition, programming games is an element within the Digital Technologies curriculum which needs to be explored digitally rather than 'unplugged' for students to have a kinaesthetic experience with the programs.  Who knows - perhaps a child in your classroom may be the next great creator of internationally popular games like Angry Birds or Minecraft if they are provided with the opportunity to utilise and develop programming skills during the early years of their education.
 
Participating in weekly digital challenges using a range of digital systems including Wordle, Bubbl.us, Twitter, YouTube, Easel.ly, Wikis, Angry Birds maze, 'Scratch' and this blog has expanded my horizons regarding the ways in which technology can be used with students in the classroom to enhance learning.  Not only does it allow them to engage with personal reflection, inputting data, creating visual representations, programming and receiving peer feedback, it also enables students to become critical and computational thinkers and find solutions to a range of problems.  I have therefore changed from my initial, less positive thoughts about programming and 'gaming' in the classroom to agreeing that, in the digital age, students (and therefore educators) need digital technologies to be embedded in their learning in order to be aware of what is available and what is possible in the future to prepare them for a range of jobs or problems which may not have been created yet (VideoShredHead, 2012 https://www.youtube.com/watch?v=YmwwrGV_aiE).

Monday, 4 May 2015

Computational thinking

Back in Weeks 1 and 2 we began to explore the concept of computational thinking however, this week it was revisited in more depth.  According to Stephenson & Barr (2012) "computational thinking is a problem-solving methodology that can be automated, transferred and applied across subjects."  The Australian Curriculum states that through computational thinking students can develop transferrable knowledge and skills across curriculum areas and their personal life (ACARA, n.d.).  Through utilising this kind of thinking "students become not merely users but tool builders" (Stephenson & Barr, 2012), putting their critical and creative  thinking skills into action in order to solve problems they become actively involved in the process as opposed to being static users. 

Computational thinking is a key term throughout the Digital Technologies curriculum, in particular the thinking processes involved which are:
  1. Decomposition - taking problems and breaking them down into more manageable sections
  2. Patterns - grouping according to similarities and differences
  3. Abstraction - taking details of a problem to make a solution work for many different problems
  4. Algorithms - a set of instructions for completing a task (ACARA, n.d.; ThinkingMyself, 2011)
By utilising the processes listed above students can devise a solution to the problem as they have used critical thinking skills to consider the most effective way to complete a task.  I thought that the image below was a simple way to explain computational thinking concepts and approaches.

Sourced from: http://barefootcas.org.uk/barefoot-primary-computing-resources/concepts/computational-thinking/

So what could computational thinking in the primary curriculum look like?  It can take many forms and does not have to be completed digitally it can also be used for 'unplugged' activities for example in science where children may be doing a unit on the weather  and be required to work out what types of clothes they need in winter or summer (decomposing) (CAS Barefoot, 2014).  They may then need to create a set of instructions for someone to follow in order to adequately get dressed (algorithms) (CAS Barefoot, 2013).  We completed an 'unplugged' activity in our lecture this week which was programming a robots emotions using three facial features (eyebrows, eyes and mouth) with five different options for eyebrows and eyes and three for the mouth labelled A, B, C, D and E.  We first cut out three strips (eyebrows, eyes and mouth) and then inserted this into the robots three slits which were carefully cut into his face following the red lines.  This allowed us to freely move the strips in and out to programme the emotions so that they could become interchangeable - see images below.

This is the paper robot and its emotion machine.  As you can see above the robot is happy which is represented by the code AAA however, this can be changed to portray a range of emotions using this simple coding system (see below).
 

 To program angry the code would be BEB
 
 
To program sad the code would be ABB

 
To program surprised the code would be EAC

This coding required use of the computational thinking processes, in particular creating algorithms and code in order to represent the different emotions.  I found completing this activity was simple and fun and I think it would be an engaging activity to complete with students in the classroom to introduce them to 'unplugged' ways of coding and realise it does not only have to be completed using digital systems.  From the activity above it is clear that computational thinking is therefore not only a valuable skill to have for computer programming, but it is one which can be utilised across a range of different activities and subject areas and is a beneficial tool to enhance students problem solving skills.