Coding Solutions
Every maker of video games knows something that the makers of curriculum don't seem to understand. You'll never see a video game being advertised as being easy. Kids who do not like school will tell you it's not because it's too hard. It's because it's boring.
Seymour PapertCoding involves the range of instructional sequences and programming languages that students use to create solutions to problems. Programming Languages should be treated as other ICT's, as tools to enable students to accomplish tasks, solve problems, and develop their understanding of Digital Technologies, the learning of a programming language or any tool, should not be an aim unto itself.
The temptation to see students using and learning about the various apps, games, robots, websites, programming environments, etc. as achieving the curriculum is strong, but it entirely misses the point of the Digital Technologies subject. Yes we teach students about these tools, and how to use them, but so they can use them to be creative, solve problems, and develop innovative new ideas.
Do not be overly concerned you do not yet know a programming language, we are not just teaching programming languages. You will teach a little more about programming and other tools each year, and there are a wide range of resources to assist you. Over time you should aim to learn to program, as this will increasingly improve your ability to assist your students to be creative and innovative in their use of programming languages , but his is an iterative process, as long as you learn a little more each year.
Coding Solutions
Coding solutions are just one type of digital technologies solutions - but they are fundamental and required for all robotic and information based solutions
Digital Technologies should never be seen as a coding course, programming languages are just one of the many tools that students will draw upon in developing solutions to problems, and even within programming languages, student ability to select from different programming languages that offer advantages when solving different problems is important. Many times, a simple scripting or block based language may be sufficient, and as the complexity of problems increases, more specialised languages are needed, those designed for web, hardware, information systems, or artificial intelligence solutions.
Through F-10 students will explore a range of programming language tools, but students do not need to become experts in any programming language, by Year 10 they do need to be able to create object oriented modular programs that use iterations and branching, but this requires only a fraction of the full detail a computer programmer would learn in tertiary studies - so keep things in perspective.
Students need to be able to solve problems, and many digital technology solutions will require an understanding of programming languages, but not a comprehensive understanding. Students may learn those aspects they need to develop a computer game, or program a robot, website or internet of things device, and this can be often achieved by self-paced tutorials and online texts, but this is just one way of learning programming, and students have 11 years to develop their understanding.
In F-2 students will start by learning to input command via buttons on simple robots such as the BeeBot, progressing in 3-6 to create macro command sequences in software such as a spreadsheet or word processor, and scripted commands (which simply means we they are a list of actions that are automatically done one at a time instead of us doing them manually) and these can direct robotic arms or drones, but more commonly programming is framed around an integrated development environment or IDE, and this has all of the tools to sequence programming commands, compile these into machine code so they run quickly, check the code for errors - known as debugging, and increasingly, to visually simulate the output of the program.
Traditionally programming languages have had to be installed on a computer, but some languages can be programmed from tablet apps, or directly onto devices such as robots and Arduino’s, and many languages now have online IDE’s, where programming can be done via a web browser.
IDE’s comprise an ecosystem of tools, documents, guides, code libraries, debuggers, testing tools, and other elements that make professional coding easier.
In F-10, programming will often be explored through a range of simpler environments than professional IDE’s.
In the early years, storybooks, games and activities can be used to introduce algorithms and we can abstract these to coded instructions.
Student can learn through the use of manipulables to make algorithmic instructions easier to understand, such as Cubeto, Puzzlets, CubesCoding and Osmo, which make the sequencing of coding commands visible and tactile.
Visual block based programming languages such as Blockley, Scratch, Alice, or Mindstorms is that the flow of how instruction are processed is visualised - students can see where branching occurs, and how the execution path of the program changes, or how repeating loops occur in the program.
Visualisations have always been used to describe programs using flowcharts and other diagramming tools, but previously it was in a distinct design stage, visual programming combines the design and execution stages and permits rapid evaluation and modification of student solutions without the need to iterate through the entire design cycle.
As student progress through 3-6, their programs will grow in complexity as they aim to develop solutions to more complicated problems.
Visual programming languages have the advantage of showing at a glance how the program should run, but in this lies their disadvantage. Once a program includes more complexity than can be seen at a glance, text based programming languages become more efficient and easier to understand. It all comes back to abstraction and the ability of the human brain to process a finite amount of information at any one time - this is known as cognitive load. We can generally hold 7-9 different things in short term memory, but these can be at any level of abstraction. So while we would struggle holding more than one command in mind if we had to think of it as a series of binary digits, we can remember and process several programming commands - move forward, turn left, move forward, etc. sufficient to draw a simple shape such as a square, but not enough to draw a car, but if we again abstract to draw as a rectangle, two triangles and two circles, we could easily remember the commands to draw a simple car.
Visual programming is great for students learning to program, as instead of remembering specific words and their associated grammatical rules - known as syntax, we can simply move about images representing various commands.
Increasingly students will combine series of such commands and give these names - such as draw circle, or calculate area - and can then reuse this new abstracted command elsewhere in their program. So programming becomes less about a sequence of instructions, and more a collection of abstracted subprograms we call procedures or modules.
Things become more complicated when we introduce the concept of events - where different procedures can be started in response to things occurring - such as a mouse button being pressed, or a value being met, for example a score in a game, and multiple procedures can be happening at once – meaning students cannot chart a single path through their program such as with simple flowcharts, as the program can have multiple paths occurring at the same time - a concept known as parallel processing (though most of the time computers swap between processing commands in different paths so quickly it just seems as if they are occurring at the same time).
By this stage of complexity, the visual abstraction of many languages becomes redundant, and it is easier for students to understand what is occurring between the various procedures in their program using textual commands, and abstracting these as modules.
There is a wide range of coding tools available for students to use in developing solutions using digital technologies, and 11 years in which to gradually develop this capability.
Students should be able to program a sequence of instructions by Year 2, use branching and user inputs by Year 4, looping by Year 6, user interfaces and functions by Year 8, and object oriented modularity and data structures by Year 10.
Project based learning can greatly accelerate student progression as students seek to solve problems requiring more complex concepts, while others consolidate using the skills they have already gained.
It is important for teachers not to become obsessed with student progression to the detriment of their learning. By shifting the focus from skill development of specific ICT’s, to the development of thinking skills through project based learning, much of the complexity of unit planning disappears.
Teachers need to monitor student projects to ensure that they are meeting the expectations of the curriculum, but this can be built into the specifications student detail for their projects, and may requiring closer tracking of student concept development between grades, e.g. using portfolios to track student progression, but there is ample time in the 11 years for students to meet all of the curriculum outcomes, and do so in a way that achieves the intent of the curriculum - developing student higher order thinking, and deep understanding of digital technologies, through the development of real world solutions to problems, not just the learning of ICTs, no matter how novel and interesting.
The main challenge for teachers, is not to impose their own interest in particular ICT’s on students - the latest robot, drone, programming language or game engine can be exciting, and it is great to model this excitement - but students should also be excited by solving problems that they come up with, and the ICT’s they choose to use, not the ICT and problems that their teacher wants to solve!
Constructionism, the maker movement, and extracurricular competitions readily demonstrate the power of student centred learning, where students develop iProjects based on their interests. PBL can reduce the resourcing load, as class sets are no longer required, and the variety of resources that students can share and form project groups around, can be supplemented from other classes, schools, the department, federally, or from parents, industry, grants, competitions, and BYOD resources.
Applications
The main type of coding solution is a software application. Students will be familiar with many - word processors, web browsers, computer games, just about everything other than programming languages and a devices operating system software controlling how it works, is defined as a software application, generally a digital solution to a range of problems.
Apps are small software applications that generally run on a mobile device, usually for a very specific purpose or task - and revitalised software applications which had resolved down to just a few big application sets from Microsoft, Adobe etc. But Apple shook things up with the introduction of the iPhone and the App store - now anyone can create simple software solutions and there are mechanisms to easily distribute these through a range of app stores, resulting in an explosion of the number of coding solutions available. Building on the success of apps for mobile phones, they are now being used on smart watches, TV’s and to distribute software to personal computers.
An application generally works through an interface that provides a way for the user to tell the app to do things (called inputs) and present information back (called outputs), how this occurs is through coded instructions to complete the task, and data that may be recorded from or used by the code is stored on the device or remotely, such as on the internet.
This differs from the software that runs computers and robots - these are the operating systems and utility programs, which are a set of common programmed instructions that software applications can then use to tell screens to show images, save information to a disk drive or get inputs from keyboards, without needing to know how to communicate with the keyboard, drive or screen, etc. This level of programming is abstracted and left for the operating system to manage, not the software application.
Programming a robot or circuit board kit that does not have an operating system, may mean you do have to give commands directly to the screen - which pixel to light up on your CodeBug for example, or to respond when a specific button is pressed, etc. Operating Systems abstract all this for us, and let us give commands such as Print “Hi” without having to tell the screen which pixels to light up for each dot in the H and i.
ICT courses in the past focused on teaching students how to use applications, and understand all of the ways in which a specific application can be used - such as a word processor, spreadsheet, video editor, etc. Digital Technologies however is about teaching students to be able to solve real-world problems, that generally will not be solvable by existing applications - or they would already have been.
Programming languages are programs written to write other programs, using a set of rules and grammatical syntax sufficient for the computer to understand exactly how to complete tasks.
Websites
Websites are very popular tools for solving problems - instead of making a 1000 posters, or surveys, or storybooks, students can create one website that is accessible by anyone with an internet connection.
Students need to understand website addresses - or URLs - universal resource locators, that provide coded pathways that computers use to find a specific file on a specific computer that is running a program known as a server, a computer that listens for instruction from the internet, and on receiving them, sends the requested files back to the computer that requested the file - your computer, running a web browser for example, that sent the coded instruction to show a webpage, and then waits for this file to be sent back, and displays it on your screen.
A URL code is an abstraction of an Internet Protocol or IP address, which is why we sometime see a series of numbers for an address, but as humans are very bad at remembering long lists of numbers, we abstract these into words. But still some addresses are too long and complex, so we have other abstractions - we can use URL shorteners to generate a shortened unique code for the address, or QR codes that we can share and people can use the cameras on their mobile devices to get the address.
Students need to understand that internet is not one thing, every connected device forms the internet, including your devices, and each has a unique digital address. Some devices can also share information, listening for requests sent to the IP address of your computer, and sending the requested file back to the device requesting it.
Because each device may have a lot of different documents, pictures, files, movies, etc. on it, we then add additional information to the devices address to let others access specific files on our devices, just as you would when finding a file using a file manager program.
This is all the additional pathway information we include after the name of the devices - what is called the domain name - so griffith.edu.au is a domain name, and this matches a devices IP address. To have a domain name, you pay an annual registration fee to have your device listed and linked in the domain name system or DNS, now the device's IP address will be accessible, and anyone requesting information from the device can also use the domain name, and this is matched by the DNS to the device's IP address.
We know a website has an address, but why? Well the internet works much like the school tuckshop. If we want something, we have to ask for it, then the tuckshop staff will get it for us, but we have to be specific for what we ask for.
We ask for things using the URL, and if we are connected to the internet, our computer sends a message to this address, but your computer does not store the addresses of every device connected to the internet.
The internet uses a special way of communicating without each device needing to know the specific address of whom it wishes to contact, much as our local post office does know exactly where everyone in the world lives.
This occurs through a series of steps, each one getting closer to the device we wish to contact. So for a typical domain name, say www.sprinfieldhigh.edu.co.nz our request for information will go via the modem connected to our computer, then through a series of digital post offices that we call routers, computers that receive the URL and have a list of other routers that are closer to that address, so by looking at the country code at the end of the address, the router knows to send the message to the main gateway router in New Zealand, once in New Zealand, the router there will have a list of addresses for the different types of websites, in this case it passes the request on to a router containing all of the education addresses because the address included .edu, and this router has a location for Springfield High, and so it is sent to a particular router in the school, and this then sends the request to a specific computer attached to the router that has the file containing the website for Springfield High in New Zealand. The process is then reversed, with instead of a request for a file, a file is sent back to the requesting computer by the schools webserver - and this is done in packets of information - each packet has the address of the computer requesting the file, and then the encoded information, but for efficiency, it is not all sent in one packet, but often by hundreds, and these are reassembled on arrival, all of which is why it can sometime take some time to display information over the internet, but what once took minutes, now often occurs in seconds.
Creating these instructions and information that can be quickly sent via the internet, requires a special form of coding, and for web pages this is known as hypertext mark-up language or html. There are other protocols for sending information, the other most common being the file transfer protocol or FTP, or the email protocol, but HTML is by far the most common today.
While software exists that makes the creation of HTML instructions very easy, it is important for students to understand this coding in order to understand the limitations and potential of internet based solutions to problems. In the resources and activities, you will find a range of HTML IDE’s for use on computers, online and in apps, and students at all bands of the curriculum should engage to some degree with creating and presenting information online through both websites and apps.
The step beyond accessing information via a web browser is via mobile apps. The simplest form of such mobile apps are essentially webpages formatted to display on a mobile device, but more involved apps are written using a programming language, and can be as functional as most other software applications.
The final aspect of web based coding is students running their own servers to provide information for others over the internet. This is problematic in some schools that limit the ability of students to provide and manage online information, but there are options.
While it is often easier and cheaper to run and manage servers on local machines connected to the internet, it is possible to use cloud based environments to setup and manage online servers that exist remotely, these can then share websites, email, files, etc. and web services such as content management systems, learning management systems, ecommerce systems, and media sharing services.
Simulated environments exist that students can use to learn about web servers, but these generally have limited functionality, and student solutions developed for such environments would not be testable in real world application.
Games
Students are very familiar with computer games, forming an increasing part of their leisure time, and digital games are a powerful way of engage students in coding, taking games from being ICT’s that they simply use, to being able to be creators of games, or at the very least, to understand how games works in order to better master them.
Incorporating games as solutions to xProblems can be challenging, but there are a range of problems that computer games can be a solution to - at the simple end, games can provide information and awareness - sun and road safety, quiz based learning games, flash cards, etc. through to games that provide simulations of real world problems.
It is important for teachers to recognise that there is not one type of computer game, but many, and students will have interests in a range but not necessarily in all types of games.
There are broad categories of games - action, strategy, adventure, simulation, puzzle and educational.
Action Games
· Maze
· 2D platform
· Fixed Shooters
· Slide Shooters
· Fighting games
· 3D Platform Games
· First Person Shooters
Strategy Games
· Turn Based (Chess/Civilization)
· Real Time Strategy (Populous/Age of Mythology)
· MMORPG (Warcraft/EVE)
Adventure games
· Textual
· 2D graphics
· Film based
· 3D graphics
Simulation Games
· Flight
· Space
· Driving
· Boat
· Sports
· Building
· Fictional Life
· Economic Simulators
Puzzle Games
· Visual Matching (Tetris)
· Hidden Objects (Minesweeper)
· Character Control (Lemmings/Oddworld)
· Construction (Incredible Machine/Crazy Machines)
Educational Games
· Child Education (Carmen San Diego/Zoombinis)
· Serious Games (America’s Army/ReMission)
· Programming Games (Core War/Robot Battle)
Non digital educational games such as Robot Rally, Robot Turtles, Code Master, Coding Farmers, and Coding for Good, that can be used to better understand digital technology concepts, particularly algorithms and coding, and similar computer games exist such as Core War and Robot Battle.
Many concepts that can be learnt through computer games, but Digital Technologies is primarily concerned with the ability of students to create their own digital games, and for these games to be solutions to real world problems.
With a cultural focus on computer games, and the home garage start-up culture of game development, computer game development is an area in which creating solutions can be for purely artistic or entrepreneurial motives.
Student engagement in computer games can work against project based learning, with many students becoming focused on mastering gameplay, the ICT of the game development software, or in creating solutions purely for entertainment, rather than as solutions to a wider problem.
There are examples where game based solutions have been applied to real world problems such as Games For Change, where computer games are developed as solutions to societal problems.
There is also an important equity issue in this approach, it is well recognised that many students do not engage with the learning of an ICT for its own sake, and that a context that provides value to the activity is required to fully engage many students, and this also applies to computer games, as yet another ICT upon which students can draw to solve problems.
Another challenge for teachers are the many different software tools for creating computer games, what are known as game engines with many specialised for the development of a particular game, such as Minecraft.
Game engines, as programming languages, use instructions similar to the programming languages you may be familiar with - block based code, python or java, but many are specialised programming languages in their own right - focused on the commands and environments that make up computer games.
Students will often be excited by the opportunities these development environments offer, but all too commonly will attempt to achieve more than they are ready for in the pursuit of creating games equivalent to those they enjoy playing.
Gradual approaches, building up student entrepreneurial game design capital and an understand of various game engines, may be advisable, starting with text based storytelling games, modifying or moding existing games, and engaging with the range of tutorials and worksheets available to build their capacity to achieve the games they envisage, but for many students this desire can be highly motivating.
Artificial Intelligence
Artificial Intelligence (AI) is the range of software applications that replicate some aspect of human or animal intelligence and problem solving.
Robotic devices can look like and can do many of things that we can do - play chess, see objects, recognise objects and people, recognise what we say, talk back intelligently, and move about without having to be explicitly programmed to avoid specific obstacles.
In computer games, AI can be the decisions that the computer makes in trying to beat a player, playing chess or go, or the pathway a moving object makes to avoid collisions or to collide with the player in a video game.
Programming can include if-then selections to make decisions based on the information the computer program has available - for example the player's location or score.
Chatbots are a familiar aspect of artificial intelligence that students will be aware of, software applications that simulate a conversation on a website, telephone, or social media platform. These are easy to program, and students at all levels can create simple Chatbots by adding to questions that the chat bots can use to respond to questions. For advanced students, Chatbots can use complex algorithms of expert systems and neural networks to be able to respond to questions that have not been explicitly programmed.
Expert systems are one of the easiest AI technologies for students to program, similar to Chatbots, the user asks if/then questions, but instead of a conversation, an expert system is designed to provide answers to complex problems, ones that often experts know but which are not detailed in textbooks and courses.
Expert systems on classroom management, might capture the expertise of a teacher, and through a series of questions, narrow down to a specific solution, from a very wide range of classroom management problems.
An expert system is made up of a software tool called an inference engine, which asks questions and provides responses, and a knowledge base of rules to apply in response to these questions.
Different expert systems have been developed for many problems from medical diagnosis, car repair, to teaching, and are surprisingly easy to teach students about and a provide them with a powerful tool to solve certain problems.
Neural networks also solve real world problems, but they rely upon a different process, akin to how our brain physically processes information and solves problems. Each problem has some inputs that we often do not know beforehand and some outputs, that we use to train our network.
Between these are layers of interconnecting virtual neurons. So let us take an image recognition problem, we may have a collection of many thousands of x-rays, some of which show cancer and some that do not, but it is difficult to come up with a specific algorithm to identify cancers every time, there is just too much information in each image. Using a Neural network, we can feed this data into the network, train it by indicating when it correctly identifies a cancer, and in a relatively short period of time, we have a system that we can show an x-ray to, and it will indicate if a cancer is likely to be present or not. The secret is in the layers between the inputs and outputs - these have various weighting that change in response to correct answers, slowly building up a pattern that if shown any image, can make a diagnosis. While students may not program their own neural networks in F-10, they do need to be aware that these are how much of the power of computers comes from now in image, voice and handwriting recognition, robot walking and balance, stock market analysis, and many other complex processes that we have sufficient data to train with, but which we often have no idea of the exact decisions the computer needs to make in order to solve a problem.
Tutorial
Attend the tutorial to further explore the concepts presented this week and practice teaching them.
Tutorial
Provide Feedback on Lesson Plans
In tutorial small groups you will provide feedback on the lesson plans shared this week.
Submit a brief summary of the feedback you received and provided during the tutorial by the next tutorial. You can use dot points. It counts 0.5% towards your Log of Learning Activities.
Digital Technologies Activities
Manipulable's Activities
Ozmo activity
Roborally
Applications
Webpages activites
Games
Twine [[double square brackets]] to automatically create the next scene/room.
Preparation for Week 7
Create two lessons plans, one for Design & Technologies and one for Digital Technologies. You will share these in tutorial next week and conduct simulated teaching of your lessons. Together, these count 1% to your Log of Learning Activities if submitted before the start of next weeks tutorial.
Week 7 Digital Technologies Lesson Plan
In tutorial small groups you will share the Digital Technologies lesson plan you have developed for next week.
Submit your Digital Technologies lesson plan developed for the Week 7 tutorial by the start of next weeks tutorial. It counts 0.5% towards your Log of Learning Activities.
Week 7 Design and Technologies Lesson Plan
In tutorial small groups you will share the Design and Technologies lesson plan you have developed for next week.
Submit your Design and Technologies lesson plan developed for the Week 7 tutorial by the start of next weeks tutorial. It counts 0.5% towards your Log of Learning Activities.