← VCE Software Development - U3O1 - Programming

VCE Software Development - U3O1 - Programming Hangman

Year 12 · VCE · 137 key terms.

Theme
Words

Every word, shuffled.

Players

VCE Software Development Unit 3 Outcome 1, Programming: requirements and design tools, Python data types, selection and iteration, naming conventions and internal documentation, pseudocode, functions, data structures, TXT, CSV and XML data sources, validation, GUIs, object-oriented programming, searching and sorting algorithms, debugging, testing, and AI in programming. See the whole journey →

Want your own words? Free Hangman Generator →

Same words, on paper

The quiet activity after the loud one. Free to print, answer keys included.

Crosswordif-then-else block to Reading and tracing complex pseudocode · Testing modules and Artificial intelligence in programming · Data structures and Data sources and files · all 22

Word searchErrors and debugging to Artificial intelligence in programming · What is Pseudocode to Reading and tracing complex pseudocode · Data sources and files to Object-oriented programming · all 13

Worksheetfor any module, with answer key

When your class is on devices — Snake Break and Diamond Dash run on the same modules, with a free class.

The 137 key terms

1The solution must
Starts a functional requirement: one thing a digital solution must do. It says what the solution does, not how, and covers one action. Example: The solution must show the score.
2Non-functional requirement
A quality describing how well a system performs, such as speed, security, or reliability, rather than what it does
3measurable non-functional requirement
A quality of a solution, such as speed, security or usability, written with a testable target, like a page loads in under 2 seconds, so you can check whether it is met.
4constraint
A limit on how a solution can be made, such as time, cost, skills, devices or software. A constraint is not a feature; it limits what you can build.
5scope
The boundary of what a solution will and will not include. Features inside the boundary are in scope. Features left out, or saved for later, are out of scope.
6requirements list
A list that sorts what a solution must do (requirements) from the limits it must work within (constraints), for one problem. Each item should be clear and testable.
7IPO chart
A three-column table listing a solution's inputs (data entered), the processes applied to that data, and the outputs it produces, such as a total or report.
8Mock-up
A static visual representation of a solution's interface, showing layout and design before development begins
9annotation
A short note on a design that says what an element does or what happens when it is used, like a label on a button or an arrow showing which screen opens next.
10data dictionary
A table listing each data element with its name, data type, size or format, description and validation rule, so everyone uses the data the same way when coding and testing.
11studentAge, integer, 2 digits, age in years, 15, 11 to 19
One data dictionary row for a data item: name, data type, format or size, description, example value and validation rule. Written from a requirement or IPO chart.
12class diagram
A box listing a class's name, attributes and methods. An arrow joins a child class to the parent it inherits from. You draw it as a plan before writing the code.
13object description
A design table for a class that lists its name, its attributes with data types, and its methods with their parameters and purpose.
15string
Text made of a sequence of characters (single letters, digits or symbols), written in quotes, like 'Sam' or '0412345678'. Phone numbers are strings.
16integer
A whole number with no decimal part, positive or negative, used for counts such as the number of students in a class (e.g. 25, 0 or -3).
17float
A floating point number is a number with a decimal part, such as 1.75 or 19.95. It is used for measurements like height and for money, unlike an integer, which has no decimals.
18Date/Time
A data type that stores a calendar date and/or time of day, such as 25/03/2025 or 14:30, so values can be sorted in order and used to calculate the duration between two dates.
19Boolean
A data type with only two possible values: true or false (yes or no). Used for yes/no fields, TRUE and FALSE in a spreadsheet, and the result of a comparison such as 5>3.
20data type
Pick the data type by what you will do with the value: calculate (number), sort by date (date/time), test true or false (Boolean). Postcodes are text, not numbers, as you never do maths on them.
32GST_RATE = 0.1
A constant: a named value set once and never changed while the program runs. Written in UPPER_CASE by convention, it replaces magic numbers and is easy to update in one place.
33sequence
A control structure where statements run one after another, top to bottom, so changing their order can change the result.
41nested if
An if statement indented inside another if block. The inner condition is only checked when the outer condition is True.
45count += 1
Set count = 0 before a loop, then use count += 1 inside it to add 1 each repeat. Use total += value to build a running total.
47naming convention
An agreed pattern for naming variables, functions and controls so code is readable, consistent across a team and easier to maintain and debug.
48studentFirstName
Camel casing: join words with no spaces, start with a lower case letter, then capitalise the first letter of each later word, e.g. studentFirstName or calculateTotal.
49snake_case
A naming convention that writes every letter in lower case and joins words with underscores, e.g. student_first_name. Python uses it for variables and functions.
50Hungarian notation
A naming style where a variable name starts with a short lower-case prefix showing its data type, e.g. strName, intAge, fltPrice, blnPassed.
51btnSubmit
Hungarian notation for a control: a type prefix (btn button, txt textbox, lbl label, lst list, cbo combobox) plus a purpose, so btnSubmit is clearly a button.
53internal documentation
Comments inside the code, like a header with purpose, author and date, and notes on each function, that help others (or you later) understand and safely change the program.
54# array used because size is fixed
A comment that explains what a variable, array, record or algorithm is for and why it was chosen, rather than just repeating what the code does.
55"""docstring"""
A triple-quoted string on the first line of a function or class body. It documents what the code does, its parameters and its return value. help() displays it.
56pass
A Python statement that does nothing. It fills a stub's empty body, often beside a # TODO comment, so the program still runs while the real code is written later.
57pseudocode
A way of writing algorithms using plain English and common symbols without the rules of any specific programming language, used to plan logic before coding begins
58end if
A closing keyword in VCAA pseudocode that ends an if block; every nested construct uses end followed by its matching keyword: end if, end while, end for
60input
A VCAA pseudocode keyword that accepts a value from the user and stores it in a named variable. Example: input age stores the user's entered value in the variable age
61print
A VCAA pseudocode keyword that outputs a value, variable or expression as a result. Example: print area displays the current value stored in the variable area
62MOD
The pseudocode operator that returns the remainder after integer division. Example: 10 MOD 3 gives 1 because 10 divided by 3 is 3 remainder 1
64AND
A VCAA pseudocode boolean operator that combines two conditions. The overall result is true only when BOTH conditions are true. Example: x > 0 AND x < 10
66IF-THEN-ELSE
A selection structure that runs one set of instructions if a condition is true, and a different set if it is false
67ELSE IF
A keyword that adds another condition to check if the previous IF or ELSE IF condition was false
68FOR i FROM 1 TO n
A loop that repeats its instructions a fixed number of times, counting the variable i from 1 up to n
69WHILE condition DO
A loop that repeats its instructions for as long as the given condition remains true, checked before each repetition
70REPEAT ... UNTIL condition
A loop that repeats its instructions and checks the condition after each repetition, so the body always runs at least once
71count <- count + 1
A counter. It adds 1 to a variable each time a loop repeats. Set it to 0 before the loop. An accumulator works the same way: total <- total + x adds a value each time.
72score <- 0 becomes score = 0
Pseudocode steps map to Python lines: <- becomes =, input becomes input(), if becomes if with a colon, for becomes for in range(). END IF becomes un-indenting.
73define
A keyword that starts a function definition, naming the function and listing the parameters it accepts
74return
A keyword that sends a value back from a function to where it was called, ending the function's execution at that point
75addNumbers(3, 4)
Calling a function by writing its name followed by arguments in brackets, running its instructions and possibly producing a value
76addNumbers(a: INTEGER, b: INTEGER): INTEGER
A function header specifying the function's name, its typed parameters, and the data type of its return value
77scores[1]
Accesses the array element at index 1, using square brackets to specify the position.
78student.name
Accesses the name field of the student record, using a dot to connect the record to its field.
83global
A keyword used inside a function so it can assign to a variable defined outside all functions, instead of creating a new local variable with the same name.
85def main(): greet()
A function can call another function inside its body. Big problems get split into small helper functions that each do one job, like boxes in a decomposition.
86def main():
Defines a function called main that holds the main steps of your program. You call main() once at the end of the file, after the other functions are defined, to start the program.
87one-dimensional array
A named, ordered collection of elements of the same data type. Each element is reached by its index, its position number (0-based in Python, often 1-based in pseudocode).
90scores = [0] * 10
Creates a one-dimensional array (list) of 10 elements that all start with the value 0. Change the number to set the size, or use '' for strings.
92for item in my_list:
Runs the indented block once for each value in the list. The variable item holds the current value each time round, starting with the first and finishing with the last.
93for i in range(len(arr)):
Loops i through every index of arr, so arr[i] can be read or changed and you know each element's position. Used for totals, finding the largest value and editing in place.
94grid[row][col]
A 2D array stores data in rows and columns like a table. Use the row index first, then the column index, to reach one element, such as a seat in a seating plan.
97Nested FOR loop
A FOR loop placed entirely inside another FOR loop, so the inner loop runs fully for every repetition of the outer loop
98record
A data structure that groups related fields of different data types into one item describing one thing, e.g. a student's name (String), age (Integer) and enrolled (Boolean).
100student['name']
Gets a field from a record by its field name. A list or tuple record uses the field index (its position) instead, such as student[0]. Indexes start at 0.
102list, dict, tuple
Pick the structure by how you use the data: a list for an ordered collection, a dict for lookup by key, and a tuple for a fixed group of values that should not change.
103TXT file
A plain text file holds unformatted characters, usually one line of text per line ended by a newline. It has no field headings or data types, so everything is read as a string.
104CSV
A text file with one record per line, fields split by a delimiter such as a comma, and an optional header line of field names. Text containing commas goes in quotes.
105<student><name>Mia</name></student>
XML stores data in nested, named elements. Each element has an opening and closing tag, and child elements sit inside a root element. The tags describe the data.
106TXT, CSV, XML
Choose a data source by structure: TXT for simple lines, CSV for tables of records, XML for nested self-describing data shared between systems. All three store data between runs.
111line.split(',')
A string method that breaks a line of text into a list of field strings at each comma. Use strip() first to remove the newline, and int() or float() to convert fields.
112records.append(line.strip().split(','))
Splits one CSV line into fields and appends them as one record to a list, so each row of the file becomes a record and the whole file becomes a table in memory.
113','.join(record)
Joins a record's fields, which must all be strings, into one comma-separated line. Use str() on numbers first, then write the line plus a newline to the CSV file.
114xml.etree.ElementTree
Python module that parses an XML file into a tree of elements. Use find() and findall() to reach elements and .text to read their values.
115validation
An automatic check that data is reasonable and in the right form when entered. It blocks bad data early, but it cannot prove the data is true (a valid age of 15 could still be wrong).
116validation check
A test that an entry is sensible. Types include presence, data type, range, length, format and list. Each one tests a different property of the entry.
117if value.strip() == '':
An existence check tests that a value was actually entered. strip() removes spaces, so this is True for empty or space-only input, and an error message can be shown.
118type check
A check that input is the expected data type, using .isdigit(), try/except around int() or float(), or isinstance(). input() is always text, so check before converting.
1191 <= age <= 120
A range check: tests that a number lies between a minimum and a maximum (inclusive here). Values outside the limits, such as 0 or 121, are rejected as invalid.
121while not valid:
A loop that keeps asking for input again until the answer is valid, so bad data (like an age of -5) can't get into your program. Show an error message each time.
122def is_valid_age(text):
A validation function that runs the existence, type and range checks in order and returns True or False, so the same checks can be reused for many inputs and tested.
123GUI
A graphical user interface: windows and controls like buttons and text boxes the user clicks or types in. The program waits for events, such as a click, and responds to each one.
124root = tk.Tk()
Creates the main tkinter window after import tkinter as tk. Call root.mainloop() at the end to show the window and wait for events like clicks.
125tk.Label(root, text='...')
Creates a tkinter label that shows text in the window. Use .config(text=...) to change what it shows, such as displaying a result. Options like font and fg set style.
126entry = tk.Entry(root)
Creates a text box in the window. Call entry.get() to read what the user typed. It is always a string, so convert it with int() or float() to use it as a number.
127tk.Button(root, text='Go', command=show)
Makes a button that runs the function show when clicked. Write the function name with no brackets, or it runs straight away instead of on click.
128control.grid(row=0, column=1)
Places a control in a table-like layout at the given row and column. pack() instead stacks controls in order. Never mix grid and pack in one window.
129StringVar()
A tkinter variable that stores the user's pick from a choice control (Checkbutton, Radiobutton or Combobox). Link it with variable= and read the choice with .get().
130messagebox.showinfo()
Pops up a message window to tell the user a result. Its partner messagebox.showerror() pops up an error, such as when a handler finds invalid input. Both need a title and a message.
137abstraction
Modelling only the attributes and methods that matter for a purpose and hiding the rest of the detail, such as a Student class that keeps just the data a school app needs.
138encapsulation
Bundling an object's data and methods together and restricting access, so private data is only changed through public methods that can check values are valid.
140def set_age(self, age):
A setter method that checks a new value (such as a valid age range) before storing it in a private attribute, rejecting or reporting bad values so the object never holds invalid data.
141generalisation
Finding the attributes and methods that several classes share and moving them into one more general parent class, so the code is not repeated in each specialised class.
142class Child(Parent):
Inheritance: the child (sub) class reuses the parent (super) class's attributes and methods and can add or change its own, showing an is-a relationship.
144super().__init__()
Runs the parent class's __init__ first so it sets up inherited attributes, then the child's __init__ adds its own extra attributes.
145linear search
An algorithm that uses a loop to check each item in a list in turn. It stops when it finds the target or reaches the end of the list, often returning the index or -1.
147while low <= high:
The binary search loop: while low <= high, check the middle item of a sorted list, then move low or high to halve the search range each time.
148Binary Search
An algorithm that repeatedly halves a sorted array to quickly find a target value.
149selection sort
A sorting algorithm that uses nested loops to find the smallest remaining item, then swaps it into place with a, b = b, a. It repeats for each position until the list is sorted.
151recursion
A function that calls itself with a smaller problem each time, and stops at a base case that returns without calling itself. With no base case, Python raises a RecursionError.
152quick sort
Picks a pivot, splits the list into items smaller and larger than the pivot, then sorts each part the same way (recursion) until the parts are sorted.
153return quick_sort(smaller) + equal + quick_sort(larger)
Recursive step of quick sort: sorts the smaller and larger lists by calling itself, then joins them around the equal items. Base case len(items) <= 1 stops it.
154quickSort(array)
A recursive function that picks a pivot, partitions the array into smaller and larger parts around it, then calls itself on each part until the array is sorted.
155sorted() and .sort()
sorted(x) returns a new sorted list and leaves x unchanged. x.sort() sorts the list x itself (in place) and returns None. Both accept reverse=True and key= to change the order.
156algorithm efficiency
How many steps an algorithm takes as data grows, and what it needs (e.g. sorted data for binary search). Compare it to choose between linear or binary search, selection or quick sort.
157algorithm
A step-by-step method for solving a problem, like search or sort. Choose one by matching its input and output to your data, then wrap it in a function to reuse it.
158syntax error
An error that occurs when Python cannot understand your code due to a typo, missing quote, or wrong bracket; Python stops and shows a message with the line number
159logic error
A mistake that lets a program run with no error message but give the wrong result, caused by a wrong condition, operator (> or >=), range() off by one, or steps in the wrong order.
160runtime error
An error that stops a program while it runs, shown as a named error like NameError, ValueError or ZeroDivisionError. Read the message to find the problem.
161OverflowError
An error raised when a calculation gives a number too big for its data type to hold, such as a Python float going past its maximum, e.g. 2.0 ** 10000.
162IndexError
A runtime error raised when code uses an index that is not in the list, such as items[5] in a 5-item list. The last valid index is len(items) - 1.
163TypeError
A runtime error when an operation gets the wrong data types, like '5' + 3 (string plus integer). Fix it by converting with int() or str(), e.g. int(input()).
164ZeroDivisionError
A Python runtime error raised when a number is divided by 0, or a remainder is taken with % 0. Guard against it with an if check or try/except.
165Traceback (most recent call last):
The start of Python's error report. It names the error type (like NameError) and the line number where it happened, so you know where to start looking for the bug.
166print("total =", total)
A debug print. Add a line like this to show a variable's value while the program runs, so you can spot where it goes wrong. Put one inside a loop to watch it change, then remove it once fixed.
167Trace table
A table that records the value of each variable at every step of an algorithm, used to check its logic by hand.
168print(variable)
Debugging tool: print a variable at key points, then compare each value with your trace table of what it should be. The first mismatch shows where the bug is.
169breakpoint
A marker set on a line of code (click beside the line number) that pauses the program there in debug mode, so you can inspect variables and step through the code.
170step through
Run paused code one line at a time using step over, step into or step out, while the watch panel shows each variable change, to find where a value goes wrong.
171nested loop
A loop inside another loop. When tracing, the inner loop completes all its repeats for each single repeat of the outer loop, so total passes = outer repeats x inner repeats.
172normal, boundary and invalid data
A good test set uses normal data (typical values), boundary data (values at the edges of a range) and invalid data (values that should be rejected), so every path in an algorithm is checked.
173Boundary values
Test inputs at the edge of a condition. For age >= 18, test 17 (just below), 18 (exactly on) and 19 (just above) to check the algorithm picks the right path at the edge.
174test data
Values chosen to test each validation rule: empty for existence, text for type, and values just inside and just outside range limits, each with an expected result.
175test case
A chosen input paired with the output you expect. Run the algorithm, record the actual output, then compare: if actual matches expected it passes, otherwise it fails.
177assert
Checks a condition is True, like assert add(2, 3) == 5. If the result is not what you expected, it raises an AssertionError, so test cases can run automatically.
178unit testing
Testing one function or class on its own, with its own test table, before joining it to the rest of the program, so a failing test points to that module.
179modify code
Read and trace the code first to see what it does, then change one small part at a time and re-run your test cases to check the effect of that change.
180Machine learning
AI learns patterns from large amounts of training data, then uses those patterns to make predictions or generate content.
181AI code generation
Using AI tools, like editor assistants and chatbots, to turn plain-English prompts into program code. It saves time, but the code must still be checked and tested by the programmer.
182code prompt
A clear AI request stating the language, the task, the inputs and outputs, and the constraints. Keep to one task per prompt, e.g. Write a Python function that returns an average.
183follow-up prompt
A new prompt sent after reviewing AI code that names the exact problem, e.g. 'Use snake_case names and add range checking', so the next version fixes it.
184Verify AI-generated code
Read and trace AI code, then test it with your own boundary and invalid data, and check it meets the requirements. It can look right but be wrong or use made-up functions.
185AI debugging
Giving an AI tool your code, the error message and the expected behaviour so it suggests a cause and a fix, which you must still understand and test yourself.
187optimisation
Changing code so it runs faster, uses less memory or is easier to read, without changing what it does. For example, removing repeated code or using a built-in function.
188regression test
Re-running the same test cases on AI-optimised code to prove it still gives identical results as before. If any result changes, reject the change.
189AI-generated data
New data, such as text, images or predictions, created by an AI system. Its quality depends on the data the AI was trained on, so students must verify it before use.
190confidential data
Private information like personal data, passwords or secret code. Never paste it into an AI tool, as it may be stored or used to train the model. Use fake sample data and check the data policy.
191# AI-generated: ChatGPT
A comment that acknowledges AI helped write the code. Name the tool and prompt, and check the output is not copied licensed work. You stay responsible for the final code.
192AI Ethics Principles
A voluntary Australian framework of guidelines intended to help ensure AI systems are designed and used safely, fairly, and responsibly
193AI over-reliance
Trusting AI-generated code without checking it. The code may be biased, outdated or insecure, and you lose your own skills and judgement. Always review it and stay in control.

Frequently Asked Questions

Do I need an account?

No. Hangman runs straight from this page — no account, no sign-up, nothing to install. If you add your class names, they are saved in your own browser and never sent to Cloodit.

How do I play it with my class?

Put the page on your whiteboard or projector and press Play. The class calls out letters and you click or type them. Six wrong letters and the word gets away. After every word its definition appears, so each round ends on the meaning, not just the spelling.

Can I use my own words?

Yes. The free Hangman generator at cloodit.com/hangman/ takes any list: one word or phrase per line, with a definition after a dash if you want it shown at the end of the round.

Can I put my students' names in?

Yes. Add your class list and a random student is called for each word. The list stays in this browser on this computer, so it is still there next lesson.

Are the worksheets free too?

Yes. Every module in this journey has a free printable worksheet with a full answer key, and there are crosswords and word searches built from the same key terms.

More VCE Hangman

VCE Applied Computing - U2O1 - Innovative Solutions24 key terms VCE Applied Computing - U2O2 - Cyber Security74 key terms VCE Pseudo Code25 key terms VCE Applied Computing - U1O1 - Data analysis78 key terms VCE Applied Computing - U1O1 - Data analysis82 key terms VCE Software Development - U3O2 - Analysis and Design114 key terms Make your own hangman →Paste any word list and play