When students are set the task of solving a problem that requires a digital solution, they usually start by investigating and defining the problem. They draw on computational thinking, a problem-solving approach that involves activities such as organising data logically, breaking down problems into components, and designing and using algorithms and models to show how the solution will be developed and how it will appear. As part of designing their solution, students generate ideas and consider the user of their digital system. During the producing and implementing process students typically create their own solution using a visual programming language. Once a digital solution has been created it is important to evaluate it against relevant criteria, such as: Did it entertain the users (if a game)? Can updated data be added so the solution can be used in the future? (Future needs). Note: Sometimes when students are creating digital solutions they might return to a process they have already completed in order to make adjustments; however, typically at this level, students engage in each of these processes in the above-mentioned order.
Programming is the way we communicate algorithms to a digital system, such as a laptop or notebook, so that the system understands the instructions. Digital systems need precise instructions as they are unable to understand instructions that include superfluous details. We use programming languages to code the instructions. There are many different visual programming languages but all have common programming statements and use a common approach to creating a program and running it to see if it works as intended.
Flow of Activities
Clearly defining a problem is a crucial step in developing a software solution to a problem.
This is the process students undertake when they analyse the problem and identify the functional requirements of the solution. Students determine what the solution has to do to solve the problem (eg accurately count the number of guesses before the next question appears or calculate the distance travelled by a robot). Defining the problem involves identifying the ‘pieces of the jigsaw’: the main elements or components of the problem, and the data needed to better understand or solve the problem. Defining involves stating what would solve the problem, not how to solve the problem.
When the question ‘What is the problem?’ is answered, the process moves to how the problem will be solved. The solution is found. Then algorithms are designed to represent a complete, logically structured set of instructions that are needed to solve the problem.
Students examine existing digital solutions to identify features that may be transferable to new but similar digital solutions.
Designing involves representing how the solution will be created and what the solution will look like (user interface). It is the ‘how’ process.
An algorithm is a step-by-step process or series of instructions to achieve a particular outcome. It is used to show how the solution will function – it is the rules, the sequence and decisions.
Algorithms can be written as a series of steps or drawn as a flow chart. Creating an algorithm is an integral part of computational thinking and of creating a program to instruct a computer or robotic device. Computational thinking helps break down a complex task into smaller chunks. Looking for patterns in the algorithm helps us work out opportunities to use loops where code is repeated.
A paper prototype can be used to map out design ideas; for example, what is on screen, the logic behind transitioning between screens and how various elements work together as a system. The paper prototype can inform algorithm development.
Once the algorithms have been completed they are converted into a program, so that those instructions can be executed by the digital system. At this level, students use a visual programming language.
A visual programming language enables students to sequence commands (displayed as blocks) to create a program (or digital solution). This could be a simple task of animating a character (sprite) in a story; or it could be creating complex programs to model a real-world application.
In programming languages, decisions (branching) are implemented using if/then or if/then, else statements. Repetition is implemented using loop statements.
As students form their sequential blocks, they can introduce the repeat/loop block to avoid repetition in code as a more advanced aspect of sequences. For example, instead of putting the same single blocks one after the other, we can wrap an iteration (repeat/loop) block around blocks they would like to repeat, to tell the computer to execute the code a certain number of times. Repeat loop blocks allow us to set a value to control how many times the loop is executed. For example, when creating a quiz, the questions are repeated until the correct response is given.
User input is a way the user interacts with the computer program. For example, a user might click on a sprite or avatar in a game or animation to make it react in some way, or they could enter their name or a quiz answer when prompted. When we think of input and output, we can characterise the images on the screen and sound as output. Input is anything that provides some information to our program – such as a click of the mouse or entered text, which in turn will activate or modify a process.
Evaluation takes places at two levels. The ‘micro’ level is where students judge if the solution they created met the functional requirements identified in the defining process. The ‘macro’ level, which takes a broader view, asks students to consider how their and existing solutions used in information systems, such as a library borrowing system, would be judged on the basis of being sustainable and able to meet the current and future needs of a community.
Sustainability includes factors such as the energy levels required to operate the solution and other resources used such as paper for printed output. Future needs could include whether new data, such as new library books and DVDs, could be used in the solution.
Evaluating draws on systems thinking where students need to consider how the outputs (solution) meet and affect the users.