Glossary
This page contains a list of definitions of key terms that will be used in the activities during this workshop. We have split the definitions in this glossary into two main sections:
- General Coding and Computational Thinking Terms: these are terms that are not specific to a certain programming language (for example, Scratch)
- Scratch Terms: these are the terms that are specific to Scratch (although they may also be used in other, similar languages like Snap!).
We have tried to include many of the terms that are commonly used in the Digital Technologies content descriptions in this glossary. Let us know if you think there are terms commonly used that should be added to the glossary for future programs or if any of the definitions below could be improved.
General Coding and Computational Thinking Terms
Abstraction
Abstraction is one of the Computational Practices identified by Brenann and Resnick. In Computer Science, Abstraction is the simplification of ideas that can be necessary when solving problems using Computational Thinking.
A common example of Abstraction is the drawing of world maps, as these present information about different countries in a relatively simple way. For more examples and an explanation of how Abstraction can be applied in Primary School Coding lessons, please see this document from Barefoot Computing.
Algorithm
An Algorithm is a precise and step-by-step procedure that is written for a computer to follow. Algorithms are often compared to recipes, as recipes also involve detailed, step-by-step instructions.
For a more in-depth explanation of Algorithms, we recommend this page on the BBC Bitesize website, which contains several examples of how Algorithms are used in a variety of areas (such as weather forecasting).
Boolean
A Boolean value can be either: True or False. These are often used when creating Conditionals in programs. An example of a Boolean block is shown below.
mouse down?
In Scratch, when the mouse is being clicked the block above will report True.
Branching
See the definition for Conditionals below.
Coding
In this program, we have defined Coding as: the act of writing instructions for a computer to follow, in some Coding language (for example: Scratch).
It’s important to note that, if we think about Coding in terms of the definition above, that we need a combination of Coding and Computational Thinking to be able to instruct a computer to solve a problem. Generally, programming and Coding are interchangeable terms: they usually both refer to the act of writing Code.
Command
A Command is an instruction which we can give the computer to follow. The computer will follow the Command exactly as we tell it to.
For example, we may have a robot which we can Code to navigate a maze. A couple of the commands we could use to navigate the robot could be move forward for 1 metre and turn right.
Computational Concept
According to Brenann and Resnick, Computational Concepts are “the concepts designers employ as they program”. These concepts are essential to solving problems with computers, as they are combined when creating programs (in Scratch or any other Coding language).
The Computational Concepts are:
Computational Perspective
According to Brenann and Resnick, Computational Perspectives are “the perspectives designers form about the world around them and about themselves”. When observing and interviewing students that had designed projects in Scratch, Brennan and Resnick found that the students’ perspectives had shifted as a result of the process of creating computer programs.
The Computational Perspectives are:
- Expressing: when students recognise that they can create and express themselves through the creation of computer programs
- Connecting: when students using Scratch interact and learn from other students creating computer programs
- Questioning: when students use Scratch to help them understand technology and/or the world around them
Computational Practice
According to Brenann and Resnick, Computational Practices are “the practices designers develop as they program”.
The Computational Practices are:
- Being incremental and iterative
- Testing and Debugging
- Reusing and Remixing
- Abstracting and Modularizing
Computational Thinking
Computational Thinking is commonly referred to as the “…thought processes involved in formulating problems and their solutions so that the solutions are represented in a form that can be effectively carried out by an information-processing agent [i.e. a Computer].”
The meaning of Computational Thinking above is the definition given by Jeanette Wing, which is one of the most common definitions of Computational Thinking. Wing argued that the thinking processes that Computer Scientists use when solving problems with computer programs could be developed separately to Coding skills and that some of these concepts (such as Abstraction) can be applied to solve problems in people’s daily lives.
In the Coding in Stage 3 program, we use the Computational Thinking framework developed by Karen Brennan and Mitchell Resnick to define Computational Thinking. This definition has been developed by studying childrens as designers, who used Scratch to create projects such as: stories, animations and games. Brennan and Resnick’s Computational Thinking framework consists of three key dimensions:
- Computational Concepts: “the concepts designers employ as they program”, such as Loops and Conditionals
- Computational Practices: “the practices designers develop as they program”, such as being incremental and iterative, Testing and Debugging.
- Computational Perspectives: “the perspectives designers form about the world around them and about themselves”, such as expressing themselves through creation of Scratch projects and connecting with other students through the Scratch community.
Computer Science
Broadly, Computer Science is the study of what computers can do, how computers can be made to solve tasks faster and more effectively, and how humans can use computers to solve tasks in a variety of areas. There are several common misconceptions of Computer Science, including that it involves:
- Fixing computers or building computers
- Coding 8 hours a day
- Only working with other programmers
However, while some of these would be true for some Computer Scientists, it is not true for all of them. Some Computer Scientists may not use computers much at all in their daily work and many programmers work with a variety of professionals (not just other programmers).
There are many diverse fields within the study of Computer Science. Examples of some Computer Science fields, include those that:
- are very theoretical and involve a lot of Mathematics (for example: Theoretical Computer Science and Cryptography)
- have been a result of interdisciplinary collaboration between Computer Scientists and researchers from another field (for example: Bioinformatics, which combines Computer Science and Biology)
- are focused on building and maintaining large, secure and reliable programs (for example: Software Engineering and Cybersecurity.
- involve creating new ways for people to use computers or are concerned with understanding how people use computers (for example: Human-Computer Interaction)
We recommend reading the K-12 CS Framework’s Defining Computer Science article and the Computer Science Field Guide for more information about what Computer Science is and the diverse fields it encompasses.
Conditionals
Conditionals are another Computational Concept, which refer to the computer following different instructions based on different conditions. In some cases, Conditionals are also referred to as selection or branching. There are many examples of Conditionals in real life. For example, say that you are hosting a barbecue and a friend has offered to buy the bread from the supermarket. You have heard that there has been a shortage of loaves of bread in the local area and so you give them the following instructions:
- If there are loaves of bread at the supermarket, buy a loaf of bread
- If there’s no loaves of bread left at the supermarket, buy 3 packs of breadrolls instead
This example is Conditionals because, depending on the condition (the availability of loaves of bread), different instructions will be followed.
In Scratch, examples of Conditionals block include the if and if then else blocks. In the blocks below, if a Sprite touches a “Lightning Bolt” Sprite it will disappear:
when gf clicked
forever
if <touching [Lightning Bolt v] ?> then
hide
end
end
Data
Data is another Computational Concept. As described by Brennan and Resnick, “Data involves storing, retrieving, and updating values.” There are two main ways of dealing with Data in Scratch: Variables and Lists.
One example of a common use of Data in Scratch is the use of Variables for keeping track of a player’s score in a game. In the blocks below, when a Sprite touches a Star Sprite the player’s score will increase by 1.
when gf clicked
set [score v] to [0]
forever
if <touching [Star v] ?> then
change [score v] by (1)
end
end
Debugging
Debugging is the process of finding the causes of and fixing problems in programs. For example, a student may write a Scratch program where they move a Cat around a canvas. The student might find that the program is not working as expected. For example, they want the Cat to move to the right but it is moving to the left instead. When the student tries to work out what is causing the Cat to move the wrong way, they are Debugging.
Events
Events are another Computational Concept, which refers to the way that actions in Programs can be triggered by other commands and actions. In Scratch, many of the Events are Hat Blocks, which are in the Events section of the blocks, such as the example blocks given below:
when gf clicked
when [space v] key pressed
when this sprite clicked
Another example of triggering an action with Events in Scratch includes making a Sprite disappear when it is clicked. This is shown in the example blocks below:
when this sprite clicked
hide
General-Purpose Programming
For the purposes of this workshop and according to the definition given in the 2017 NSW Technology Mandatory (Years 7-8) syllabus document, a General-Purpose Programming language is one that is “text-based”. Examples of General-Purpose Programming languages include Python, JavaScript and Ruby.
Most Programs created in General-Purpose Programming languages have to be written out in text. Unlike a Visual Programming language, such as Scratch, Programs in General-Purpose Programming languages cannot usually be created by snapping together blocks like puzzle pieces. However, there are some examples of languages that can be written using both blocks and text, which we call Hybrid Coding Environments in this workshop.
In most cases, General-Purpose Programming languages are used by professional software developers and researchers, whereas Visual Programming languages are usually not. For example, Swift is a text-based language that is used to code apps for the App Store. Similarly, R is a text-based language is commonly used by scientists when they analyse data from experiments.
Another definition of General-Purpose Programming languages, which includes more examples of these languages, is given on ACARA’s Technologies Glossary Page.
Hybrid Coding Environments
For the purposes of this workshop, Hybrid Coding Environments are Coding languages/environments that combine Visual Programming (Blocks) and General-Purpose Programming (Text), or that allow you to switch between these different modes. Examples of Hybrid Coding Environments include Microsoft’s MakeCode, Code.org’s AppLab and PencilCode
Hybrid Coding Environments are also sometimes referred to as Dual-Mode Coding Environments (because there are two modes: Blocks and Text). These environments could help students move from a Visual Programming language (for example, Scratch) to a General-Purpose Programming language (for example, Python), although there has not been extensive research to prove this yet.
Invalid Input
Invalid input is a term for user input that is put into a system which is nonsensical or that causes the system to act in an unexpected way. For example, you might buy a book on an online store and, when filling in your shipping details, accidentally put your email address in the form where your home address should go. The system would then tell you that you have made an error (invalid input) when filling out the form.
Iteration
See the definition for Repetition below.
Logical Reasoning
Logical reasoning means reasoning correctly and systematically, and applying rules in a systematic way to complete a task (for example: applying knowledge about what each block in Scratch does to predict the outcome of a script).
Loops
Loops are a Computational Concept, which refers to the way computers can follow instructions over and over again (in a loop). Loops are also sometimes referred to as iteration and repetition.
Computers are very good at repeating actions, whether you want them to repeat something two times, one hundred times, or even to have them repeat something over and over forever. There are many examples of Loops in real life, as well as in Code. For example, when you swim 10 laps in a pool, you are repeating the lap 10 times. You would also be repeating the actions that make up the stroke (for example: freestyle) over and over as you swam the lap.
In Scratch, examples of Loops include the repeat and forever blocks. In the example blocks below, when the space key is pressed a Sprite will continuously rotate clockwise, until you stop the program.
when [space v] key pressed
forever
turn cw (45) degrees
end
Modularisation
Modularisation is one of the Computational Practices identified by Brenann and Resnick. In Computer Science, Modularisation is the splitting of programs into smaller “modules” or smaller programs. By using Modularisation, you can break complex problems into simpler parts to make them more manageable.
Modularisation is also commonly referred to as Decomposition. You can read about examples of Decomposition and how these can apply to problem solving in Primary School Coding in this document created by Barefoot Computing
Nested Conditionals
Nested Conditionals (also known as Nested Branching) involves having one or more Conditionals block (for example: an if then else block in Scratch) inside another Conditionals block.
An example of the use of Nested Conditionals in Scratch is shown in the example below. If the User Input to the question: “What’s your age?” is 25, the Sprite will say: “You’re the right age to play this game!”.
when gf clicked
ask [What's your age?] and wait
if <(answer) < [10]> then
if <(answer) > [100]> then
say [You're too old to play this game!] for (2) secs
else
say [You're the right age to play this game!] for (2) secs
end
else
say [You're too young to play this game!] for (2) secs
end
Nested Loops
Nested Loops (also known as Nested Repetition) involves having one or more Loop blocks (for example: a repeat block in Scratch) inside another Loop block.
An example of the use of Nested Loops is shown in the example below.
when [space v] key pressed
repeat (3)
play drum (1 v) for (1) beats
repeat (2)
play note (60 v) for (1) beats
play note (58 v) for (1) beats
play note (56 v) for (1) beats
end
end
After pressing the space key, the following will happen:
- A snare drum noise will be played
- A note will be played (60)
- Another note will be played (58)
- Another note will be played (56)
- Another note will be played (60)
- Another note will be played (58)
- Another note will be played (56)
Then, the steps above will repeat another 2 times.
Number
A Number value can represent a number, including integers (whole numbers) and decimal numbers. Numbers can work differently in different programming languages but, in Scratch, Variables with a Number value can be either an integer (whole number) or a decimal value.
Operators
Operators are another Computational Concept, which refer to the mathematical, logical and String expressions that can be used when Coding. As Brennan and Resnick describe, “Scratch supports a range of mathematical operations (including addition, subtraction, multiplication, division, as well as functions like sine and exponents) and string operations (including concatenation and length of strings).”
Examples of different Operators blocks are shown in the blocks below:
(5) + (10)
(30) / (2)
length of [world]
[sqrt v] of (9)
Parallelism
Parallelism is another Computational Concept, which refers to Sequences of instructions that are followed by a computer at the same time. An example of Parallelism in Scratch described by Brennan and Resnick could be a dance party scene, where multiple Sprites are dancing different dances at the same time.
A single Sprite can perform instructions in parallel, as illustrated in the blocks below. After clicking the green flag in Scratch, a Sprite with the following blocks would do a dance, play a melody and say “Hello!”, then “Goodbye!”, all at the same time.
when gf clicked:
forever
move (50) steps
wait (1) secs
move (-50) steps
wait (1) secs
end
when gf clicked:
forever
play note (60 v) for (1) beats
play note (62 v) for (1) beats
play note (64 v) for (1) beats
play note (66 v) for (1) beats
end
when gf clicked:
forever
say [Hello!] for (2) secs
say [Goodbye!] for (2) secs
end
Program
A program is Code that has been written to perform one or more different tasks. For example, in the Week 1 session you created a program where you tell a Cat Sprite how many times to dance. Another (more complicated) example is a program like Microsoft Word, which can perform many different tasks (for example: bolding text and making tables) A program differs from an Algorithm in that an Algorithm does not necessarily need to be written in some Coding language. When we refer to a program, we mean that the instructions for the computer to follow have been written in a Coding language (for example: Scratch).
Programming
See the definition of Coding above.
Random
In Coding, you can often use different commands to create Random numbers. It is often useful to create Random numbers in programs that involve simulations or some chance (such as rolling a dice). For example, if you are creating a card game in Scratch, you may need to have a deck of cards that you need to shuffle into Random order.
In Scratch, one of the ways to create Random numbers is using the pick random block, which is in the Operators section of the blocks pane. For example, you may create a game in Scratch where the player rolls a die. To simulate the throwing of a die, you could use a pick random block that will randomly choose an integer (whole number) between 1 and 6. When this block, which is shown in the image below, is clicked, a Random number between 1 and 6 will be chosen.
pick random (1) to (6)
Remixing
Remixing is a Computational Practice, which refers to the practice in Scratch, and Coding more generally, of taking copies of Programs and modifying them. A similar term to Remixing is Modding - where Coders take an existing Program (such as a game) and make customisations to that Program.
Remixing in Scratch is common because you can use the remix button once inside a project to copy all of a project’s Sprites and Scripts. The Scratch Wiki has a page on Remixing in Scratch, which explains how you can remix a project and some of the potential issues with Remixing in the Scratch community (such as plagiarism of others’ work).
Repetition
See the definition of Loops above.
Reset
In Coding, you may often want to Reset a program by making the Sprites return to their original position and Variables return to their original value. For example, in Scratch you could make an animation where a Sprite starts in the centre of the Stage and moves to the right. After the animation finishes, the Sprite will no longer start at the centre unless you tell it to move back to the centre. You could do this by using a Reset or a setup script, which could be followed when the green flag button is clicked.
An example of a Reset script is shown below, which will move a Sprite back to its original position in the centre of the Stage after the green flag button is clicked.
when gf clicked
go to x: (0) y: (0)
Selection
See the definition of Conditionals above.
Sequences
Sequences are a Computational Concept, which refers to the way that computers follow instructions in order. When writing Algorithms, it is important to order instructions in the correct order, as computers will follow them exactly as we tell them.
An example of why Sequences are important is given on the BBC Bitesize Website. An Algorithm for brushing your teeth could be:
- put toothpaste on toothbrush
- use toothbrush to clean teeth
- rinse toothbrush
But what if these steps were in the wrong order (out of sequence)?
- use toothbrush to clean teeth
- put toothpaste on toothbrush
- rinse toothbrush
If we gave a robot these instructions, it would follow them in the specified order without questioning. Consequently, the toothpaste would be wasted and the robot’s teeth wouldn’t be cleaned properly, as they have not brushed their teeth with toothpaste on the toothbrush.
String
A String in Coding is a piece of text, of any length. For example: both Hello World and Bob are Strings. Variables that have some text value (for example: a variable called username) consequently have a value of the String type.
Testing
Testing is the process of checking that a Program works as you expect it to. When you are writing Programs it can be important to test to find out if there are any bugs (see Debugging).
For example, you may write the following Program to calculate the area of a rectangle:
when gf clicked
ask [What is the width of the rectangle?] and wait
set [width v] to (answer)
ask [What is the height of the rectangle?] and wait
set [height v] to (answer)
set [area] to ((width) * (height))
say (join [The area of the rectangle is:] (area))
You could test this by answering the Sprite’s questions with different heights and widths and seeing that you get the expected area. You may also test some Invalid Input, such as 0 and -1, and you would find that you could get a resulting area that doesn’t make sense. For example, if you put in the height: 5 and width: -1 then you will get an area of -5 (which is not possible!). After finding this bug, you could then change the Program to check for negative numbers and not let the user put these in.
User Input
User Input is a term that means that the person using the Program (the user) interacts with the Program, usually by (but not always) using a keyboard/mouse. For example, you might register for an event (for example: a workshop) using an online form. The User Input in this example would be the details you would enter into the form (such as your name and email address). Another example of User Input is controlling a character in a videogame with a joystick. The videogame would have some Code that would take that input from the joystick (for example: moving the joystick to the right) and then performing some action (in this example: moving the character to the right).
Variables
Variables in Coding are names given to values that can change. For example, you could Code a game where you have to shoot aliens and you might have a Variable in the game Code called score. Every time you shoot an alien this score Variable could increase by 1.
Variables in Mathematics and Coding are similar, in that they both are a name/letter that can represent a number. However, in Coding a Variable can also represent a piece of text (a String value). There are also some other differences in how Variables can be used in Coding. For example, a statement like the equation below is perfectly fine in some Coding languages, but doesn’t make sense in Mathematics:
x = x + 1
In Maths this would mean that x is equal to x plus 1 (but this does not make sense). In Coding, this means that the value of x will change to x plus 1 (so if x was 2, it would be 3 after the statement above).
Different Coding languages handle the changing of variables in different ways. In Scratch, for example, we would write the example statement above as:
change [x v] by (1)
Visual Programming
Visual Programming refers to forms of Coding where Code can be created and edited by manipulating graphics. An example of a Visual Programming language is Scratch, in which you can drag and drop coloured blocks into stacks to create programs.
Visual Programming languages are different to Text Languages (such as Python or Java), where Code is written out in Text instead of dragging and dropping blocks. In the Digital Technologies curriculum, ACARA encourages the teaching of Visual Programming in years 5 and 6.
Examples of other Visual Programming languages include GP Blocks and Snap! Build your Own Blocks.
Scratch Terms
Block
A command which tells the Sprite what to do. When a block is clicked, the Sprite will follow that instruction.
Costumes
Are alternative ways that a Sprite can look on the stage.
Custom Block
A Custom Block in Scratch is a special type of Block in Scratch, which are located in the More Blocks section of the Blocks Pane. You can create your own Custom Blocks, which are useful for putting stacks of blocks that are frequently used into a single Block.
To create a Custom Block, you use the Make a block button. The Make a block button creates a define Block, which you place other blocks underneath to be followed when the Custom Block is clicked or followed by the Sprite.
An example of where the use of Custom Blocks can be useful is explained in the next part of this section.
The blocks below will cause a Sprite to move upwards and then downwards (do a jump).
repeat (20)
change y by (1)
wait (0.2) secs
end
repeat (20)
change y by (-1)
wait (0.2) secs
end
You may create a game or animation where a Sprite jumps and use the same Code in a few different spots in its Scripts. Instead of duplicating the blocks above a few times, you could make the Code that makes the Sprite perform the jump into a Custom Block. A Custom Block that would do this in Scratch is shown below. Note that the name of the Custom Block is jump and that the blocks we want the Sprite to follow are snapped underneath the purple hat block (the define block).
define jump
repeat (20)
change y by (1)
wait (0.2) secs
end
repeat (20)
change y by (-1)
wait (0.2) secs
end
By defining the jump Custom Block, we can now use these in a few different places. For example, say that we wanted to make the Sprite jump whenever the up arrow, space bar or the w are pressed. This could be achieved by using the following Code in Scratch:
when [up arrow v] key pressed
jump :: custom
when [space v] key pressed
jump :: custom
when [w v] key pressed
jump :: custom
The effective use of Custom Blocks can make Scratch projects easier to read and have less repetition of Code. Custom Blocks are based off a concept in Coding called Procedures and/or Functions, which are important concepts in many Coding languages.
Hat Block
Hat blocks are always placed at the top of a stack of blocks. They are referred to as hat blocks because they are shaped like hats. Some examples of hat blocks in Scratch are shown below:
when gf clicked
when [space v] key pressed
when this sprite clicked
Move
A command which makes the Sprite change its position, which is in the Motion section. A move block, which will move a Sprite 50 steps (pixels) is shown below:
move (50) steps
Next costume
A command which switches to the next costume in the list of the Sprite’s costumes, which is in the Looks section. The next costume after the last one is the first one in the list again. A next costume block is shown below:
next costume
Repeat block
A repeat block is a block which runs the blocks inside it a specified number of times, which is in the Control section. The following repeat block in Scratch will play a note 10 times:
repeat (10)
play note (60 v) for (2) beats
end
Script
A script is a sequence of blocks snapped together, a program. It can be run by clicking on any part of the script.
Sprite
A sprite is an object we control using our blocks and scripts. For example, the Cat in the Dancing Cat program is a sprite.
Stage
The Stage is the area where you can see the Sprites.
Stamp
A stamp block is a block which tells the Sprite to print its image on the stage, which is in the Pen section. A stamp block is shown below:
stamp
Turn
The turn block is a command which makes the Sprite change its direction, which is in the Motion section. An example of a turn block, which would cause a Sprite to rotate clockwise by 90 degrees.
turn cw (90) degrees
Wait
The wait block is a command which waits a specified number of seconds, e.g. 1, 2 or 0.2, then continues with the next blocks. The wait block is in the Control section of blocks. An example of a wait block is shown in the stacks below. After clicking this stack of blocks in the example below, the Sprite would move 20 steps in one movement, wait for 2 seconds and then move another 20 steps in another movement.
move (20) steps
wait (2) secs
move (20) steps