PYTHON HACKERS
& CYBER DEFENDERS
Write real Python code from scratch, crack cybersecurity mysteries, build web apps, and uncover stories hidden inside data. Four modules, a full year, zero prior experience required - the biggest step up in your DigiTech journey starts here.
Variables, input/output, conditionals, loops, and functions - building a complete text-based game in Python.
Encryption ciphers in Python, cybersecurity threats, digital rights, and building a network security guide.
HTML/CSS fundamentals, Python web scripting, user-centred design, and building a real portfolio website.
Real-world datasets, Python data visualisation, AI/ML concepts, and a capstone digital innovation pitch.
| Grade | Mark Range | Standard |
|---|---|---|
| A | 85% + | Exceeds standard - detailed, precise, creative. Work demonstrates deep understanding and polished execution. |
| B | 70-84.9% | Above standard - thorough and mostly correct. Some areas for improvement but strong overall. |
| C | 50-69.9% | At standard - meets the basic requirements. Some errors or missing elements. |
| D | 40-49.9% | Below standard - incomplete or significant errors. Core requirements only partially met. |
| E | Sub 40% | Well below standard - missing most requirements. Student support recommended. |
Write a series of Python programs demonstrating variables, data types, user input, and if/elif/else logic. Culminates in a 5-question quiz program that checks answers, gives feedback, and displays a final score.
task1_practice1.py- string, integer, float variables with print()task1_practice2.py- input() program greeting user by name and agetask1_practice3.py- temperature advisor using if/elif/elsequiz.py- 5-question interactive quiz with scoring- Short written reflection (5-8 sentences): challenges and solutions
- All programs must run without errors in Thonny
- Quiz must use input() and display a score at the end
- At least one if/elif/else chain with 3+ branches
- Variables must have meaningful names (not x, a)
- All files submitted as .py files via Connect
- Reflection written in full sentences - not dot points
| Criterion | A - 5 | B - 4 | C - 3 | D - 2 | E - 1 |
|---|---|---|---|---|---|
| Variables & Data Types /5 marks | All three data types used correctly with meaningful names; programs run without errors; demonstrates clear understanding of type differences (str vs int vs float). | Correct data types used; minor naming issues; programs run. | At least two types used; some variable names unclear; minor errors. | Only one type used or significant naming/type confusion. | No evidence of understanding variables or data types. |
| Input & Output /5 marks | input() used correctly in multiple contexts; output is clear and user-friendly; data types converted where needed (e.g., int(input())); all programs interact meaningfully with the user. | input() and print() used correctly; minor formatting issues. | input() used but may lack type conversion; output is basic. | input() attempted but errors or missing in key places. | No use of input() or output is missing. |
| Decision Making (if/elif/else) /5 marks | if/elif/else used correctly in all programs; at least 3 branches; logic is accurate; quiz correctly evaluates all 5 answers and awards correct score. | if/elif/else mostly correct; quiz scores correctly; minor logic gaps. | Basic if/else used; scoring partially works; some logic errors. | Conditionals attempted but contain significant logic errors. | No conditionals used or quiz does not check answers. |
| Reflection /5 marks | Reflection is specific and honest; identifies at least two genuine challenges with clear explanation of how each was resolved; uses correct terminology (variable, data type, conditional, etc.). | Reflection identifies challenges and solutions; mostly specific; mostly correct terminology. | Reflection is present but surface-level; challenges mentioned but not explained. | Very brief reflection; generic statements; no specific coding challenges discussed. | No reflection submitted. |
Open tynker.com or code.org and complete one level of the Hour of Code to warm up your brain for coding mode. This is completely student-led - just click and play.
By the end of this lesson you will be able to: write and run a Python program using print(), create variables that store text and numbers, and explain the difference between a string and an integer.
- Open Thonny (Start Menu → Thonny Python IDE). If you don't see it, ask your teacher - it should be installed on all classroom laptops.
- In the top editor pane, type the following exactly. Press F5 or click the green Run button to run it:
print("Hello, world!")
print("My name is DigiTech")
print("I am learning Python today") - You should see your three sentences appear in the bottom Shell pane. If you get a red error, check that your speech marks are straight (not curly) and your brackets are closed.
- Now add variables. Variables are like labelled boxes that store information. Type this below your print statements:
name = "Alex"
age = 14
school = "DigiTech Academy"
print(name)
print(age)
print(school) - Change
nameandageto your own name and age. Run it again. Notice that changing the variable changes all the output - that's the power of variables. - Try combining a variable with text using a comma inside print:
print("My name is", name, "and I am", age, "years old")
- Save your file: File → Save As → name it
task1_practice1.py. Save to your Documents folder.
"Hello". An integer is a whole number - no speech marks: 14. If you put a number inside speech marks it becomes a string and you can't do maths with it.
Save task1_practice1.py to your Documents. You'll submit all practice files together at the end of Week 3.
Open checkio.org and try the "Electronic Station" intro puzzle. Just read it and think about the logic - student-led.
By the end of this lesson you will be able to: use float variables for decimal numbers, perform arithmetic in Python, use input() to get data from a user, and convert strings to integers with int().
- Open Thonny and create a new file (File → New). Type the following arithmetic examples:
a = 10
b = 3
print(a + b) # addition → 13
print(a - b) # subtraction → 7
print(a * b) # multiplication → 30
print(a / b) # division → 3.333...
print(a // b) # floor division → 3
print(a % b) # remainder (modulo) → 1 - Now add a float variable. Floats are numbers with decimal points:
price = 4.99
quantity = 3
total = price * quantity
print("Total cost: $", total) - Now learn how to get information FROM the user using
input(). Important:input()always gives you a STRING, even if the user types a number:user_name = input("What is your name? ")
print("Hello,", user_name) - Try asking for a number and doing maths with it. You MUST convert it to an integer first:
age_text = input("How old are you? ")
age = int(age_text) # convert string → integer
birth_year = 2026 - age
print("You were born in approximately", birth_year) - Challenge: Write a program that asks the user for two numbers and prints their sum, difference, and product. Save as
task1_practice2.py.
TypeError: can only concatenate str (not "int") to str, it means you're mixing a string and a number. Wrap the number in str() or the input in int().
Scratch: Create a simple project where a sprite says different things depending on a condition - student-led exploration.
By the end of this lesson you will be able to use if, elif, and else to make programs that respond differently depending on the user's input, and use comparison operators correctly.
- In Thonny, create a new file. Python uses indentation (4 spaces or 1 Tab) to know what code belongs inside an if statement:
temperature = int(input("What is the temperature today? "))
if temperature >= 35:
print("Extreme heat - stay indoors!")
elif temperature >= 25:
print("Nice and warm - apply sunscreen.")
elif temperature >= 15:
print("Mild - bring a light jacket.")
else:
print("Cold - wear a warm coat!") - Run the program and test it with four different temperatures: 40, 28, 18, 5. Make sure each branch works correctly.
- Learn the comparison operators:
==(equal to),!=(not equal),>(greater),<(less),>=(greater or equal),<=(less or equal). Note:==compares (two equals signs),=assigns (one equals sign). - Write a "grade checker" program. The user enters a score out of 100 and Python tells them their grade: A (90+), B (75+), C (60+), D (50+), E (below 50). Save as
task1_practice3.py. - Add a twist: after showing the grade, print a different motivational message for each grade level.
Kahoot teacher-run quiz on Python basics from Week 1. Student-led from there - just join and play!
By the end of this lesson you will be able to build the core logic of a quiz program in Python, tracking a score using a counter variable, and comparing string input from the user.
- Start your quiz file: File → New. Name it
quiz.py. - Create a score variable and write your first quiz question:
score = 0
print("=== PYTHON QUIZ ===")
name = input("Enter your name: ")
print("Welcome,", name, "! Let's see what you know!")
# Question 1
q1 = input("Q1: What planet is closest to the Sun? ")
if q1.lower() == "mercury":
print("✓ Correct! +1 point")
score += 1
else:
print("✗ Incorrect. The answer is Mercury.") - Notice
.lower()converts the user's answer to lowercase before comparing - so "Mercury", "MERCURY", and "mercury" all work. This is important for a fair quiz. - Add 4 more questions using the same pattern. Choose any topic you like (sport, gaming, science, geography). Keep the format consistent.
- At the end of all 5 questions, print the final score and a personalised message:
print("\n=== RESULTS ===")
print(name, "scored", score, "out of 5")
if score == 5:
print("Perfect score! You're a genius!")
elif score >= 3:
print("Good effort! Keep studying.")
else:
print("Keep practising - you'll get there!") - Test your quiz by running it and deliberately getting some questions wrong to check the scoring works.
score += 1 is shorthand for score = score + 1. It takes the current value of score and adds 1 to it. This is called incrementing a counter.
Save quiz.py. You'll keep refining it next lesson before final submission via connect.det.wa.edu.au.
pythonchallenge.com Level 0 - try to figure out the puzzle. Student-led exploration.
By the end of this lesson you will have completed, debugged, and polished all Task 1 files, and written a reflection that uses correct Python vocabulary.
- Open each of your practice files and your quiz.py. Run each one and note any errors. Fix them before moving on.
- Improve your quiz output formatting. Use
\ninside print statements to add blank lines for readability, andprint("─" * 30)to add separator lines. - Add
.strip()to all yourinput()comparisons to handle accidental spaces:q1.lower().strip() - Write your reflection. Open a Word document or text file. Answer these prompts in 5-8 sentences total:
- What was the hardest part of writing Python for the first time?
- Describe one specific error you got and how you fixed it.
- What does
int(input())do and why is it necessary?
- Peer review: swap your quiz.py with a classmate. Run their quiz. Write two pieces of feedback: one thing that works really well, and one improvement suggestion.
Upload all files to connect.det.wa.edu.au → Task 1 folder: task1_practice1.py, task1_practice2.py, task1_practice3.py, quiz.py, and your reflection document.
Lightbot - complete a level using only loops/repeat instructions. Connects directly to what we're learning today.
By the end of this lesson you will understand why loops exist, be able to use a for loop with range(), and iterate over a list of items.
- Think about why loops matter. Without loops, to print "Hi" 100 times you'd need 100 print statements. With a loop, you need 2 lines. Type this:
for i in range(10):
print("Hi number", i) - Notice
range(10)gives numbers 0 through 9. Tryrange(1, 11)to go from 1 to 10. Tryrange(0, 20, 2)for even numbers. - Loops can also iterate over a list. A list is a collection of items in square brackets:
fruits = ["apple", "banana", "mango", "kiwi"]
for fruit in fruits:
print("I like", fruit) - Write a multiplication table generator. Ask the user which table they want (e.g. 7) and use a loop to print 7×1 through 7×12:
num = int(input("Which times table? "))
for i in range(1, 13):
print(num, "×", i, "=", num * i) - Save as
loops_intro.py. This is preview content for Task 2 starting next week.
Master for loops, while loops, and user-defined functions. Build reusable code modules and create a password_generator.py using loops, string manipulation, and the random module.
task2_loops.py- for and while loop practice programstask2_functions.py- at least 3 user-defined functions with parameters and return valuespassword_generator.py- interactive password generator using loops and random module- Short written reflection (5-8 sentences)
- Password generator must use the random module
- Must use at least one function you defined yourself with def
- User must be able to choose password length (8-20 chars)
- Must use a loop to build the password character by character
- All programs run without errors; meaningful variable/function names
| Criterion | A - 5 | B - 4 | C - 3 | D - 2 | E - 1 |
|---|---|---|---|---|---|
| For & While Loops /5 marks | Both loop types used correctly across practice files; loops terminate as expected; demonstrates clear understanding of when to use each type; no infinite loops. | Both types used; mostly correct; minor logic errors in one loop. | One loop type used well; other is attempted but has errors. | Loops attempted but significant errors; termination issues. | No loop programs submitted or loops do not run. |
| Functions (def) /5 marks | At least 3 functions defined with meaningful names, parameters, and return values; functions called correctly; password generator uses a custom function; demonstrates understanding of scope. | At least 2 functions with parameters and return values; mostly correct usage in password generator. | At least 1 function defined; used in password generator but may lack parameters or return. | Function defined but not used correctly; no return value; copy-paste evidence. | No user-defined functions; only built-in functions used. |
| Password Generator /5 marks | Program asks for length, generates password using a loop and random module, includes letters/numbers/symbols; output is clear; code is clean and commented. | Program generates a random password of requested length; uses loop; mostly correct. | Password generated but may not use user-specified length or lack character variety. | Program attempts to generate password but has major errors or hardcoded values. | No password generator submitted. |
| Reflection /5 marks | Reflection clearly explains what a function is, why it makes code reusable, and gives a specific example from their own code; uses correct vocabulary (parameter, argument, return value, scope). | Reflection explains functions with some specific examples; mostly correct vocabulary. | Reflection present but explanation of reusability is vague; limited vocabulary. | Very brief; "functions are useful" without explanation. | No reflection submitted. |
code.org/minecraft - complete a level using repeat loops. Student-led.
By the end of this lesson you will be able to use a while loop correctly, understand the infinite loop danger, use break, and apply the input validation pattern to make robust programs.
- A while loop keeps running as long as a condition is True. Type this countdown:
count = 10
while count > 0:
print(count)
count -= 1 # this line is CRITICAL - without it, infinite loop!
print("Blast off! 🚀") - DANGER ALERT: If you forget the
count -= 1, the loop never stops. If this happens, press the Stop button in Thonny (red square). Never close Thonny without stopping first - it may freeze your laptop. - Now write the most useful pattern in Python - input validation. This keeps asking until the user enters a valid value:
while True:
answer = input("Type 'yes' or 'no': ").lower().strip()
if answer == "yes" or answer == "no":
break # valid input received - exit loop
print("Invalid input! Please type yes or no.")
print("You entered:", answer) - Apply this to a number range: write a validator that keeps asking for a number between 1 and 10 until the user enters one correctly.
- Save as
while_loops.py.
break statement that can be reached. If your Thonny freezes with a spinning cursor, press the red Stop button immediately.
Play code.org Express Course levels that use functions. Look for the "Make a function" challenge. Student-led.
By the end of this lesson you will be able to define your own functions using def, pass in parameters, and use return to send back a result.
- Functions let you write code once and use it many times. Think of them as custom commands you invent. A function has a name, can receive inputs (parameters), and can send back a result (return):
def greet(name):
print("Hello,", name, "! Welcome to Python class.")
greet("Taylor")
greet("Jordan")
greet("Alex") - Now write a function that returns a value using
return:def calculate_area(width, height):
area = width * height
return area
result = calculate_area(5, 8)
print("Area is:", result) - Write 3 functions of your own: one that converts Celsius to Fahrenheit, one that checks if a number is even or odd, and one that gives a personalised password strength message based on length.
- Important: functions must be DEFINED before they are CALLED. The
defblock always goes first in your file. - Save as
functions_practice.py.
checkio.org - try any beginner island puzzle. Student-led.
By the end of this lesson you will be able to import and use Python's random module and string module to build the core of your password generator.
- Python has hundreds of built-in modules you can use.
importthem at the top of your file:import random
import string
print(random.randint(1, 100)) # random integer 1-100
print(random.choice("ABCDE")) # random single character
print(string.ascii_letters) # all letters a-zA-Z
print(string.digits) # 0123456789
print(string.punctuation) # !@#$%... etc - Now build the password generator. Start a new file
password_generator.py:import random
import string
def generate_password(length):
characters = string.ascii_letters + string.digits + string.punctuation
password = ""
for i in range(length):
password += random.choice(characters)
return password - Add input validation for the length (must be between 8 and 20), then call the function and print the result:
while True:
length_input = input("Enter password length (8-20): ")
if length_input.isdigit():
length = int(length_input)
if 8 <= length <= 20:
break
print("Please enter a number between 8 and 20.")
new_password = generate_password(length)
print("Your password:", new_password) - Extension: let the user choose whether to include symbols or only letters+digits by adding a yes/no question that changes the
charactersvariable.
Save password_generator.py. You'll finish and submit at the end of Week 6.
tynker.com - find a list/array challenge and attempt it. Student-led.
By the end of this lesson you will be able to create, modify, and loop through Python lists using methods like append(), remove(), and index access.
- A list stores multiple values in one variable. Each item has an index starting at 0:
students = ["Aria", "Ben", "Chloe", "David"]
print(students[0]) # Aria (first item)
print(students[-1]) # David (last item)
print(len(students)) # 4 (number of items) - Key list methods to practise:
students.append("Eva") # add to end
students.insert(1, "Zara") # insert at index 1
students.remove("Ben") # remove by value
students.sort() # alphabetical sort
students.reverse() # reverse order - Loop through with enumerate to get both index and value:
for index, name in enumerate(students):
print(index + 1, ".", name) - Build a "class roll call" program: start with an empty list, use a while loop to keep asking for student names until the user types "done", then print the full class list numbered.
- Save as
lists_practice.py. This skill is essential for Task 3.
checkio.org - attempt any loop or list challenge. Student-led.
By the end of this lesson you will have completed, debugged, commented, and submitted all Task 2 files including a thoughtful reflection on functions.
- Run each of your Task 2 files and fix any errors. Test every input path - what happens if the user enters a letter when you expect a number?
- Add comments to your password generator explaining what each section does. Use
#for single-line comments. Good code is documented code. - Add a feature to your password generator: after generating a password, ask "Generate another? (yes/no)" and loop back if they say yes.
- Write your reflection (Word or text file): What is a function? Why is writing code as functions better than writing everything in one long block? Give a specific example from your own password generator. Use the words: parameter, argument, return, reusable.
- Peer review: run a classmate's password generator. Does it: ask for length? Validate the input? Use a function? Generate a random password? Write two constructive feedback points.
Upload to connect.det.wa.edu.au → Task 2: while_loops.py, functions_practice.py, password_generator.py, lists_practice.py, and your reflection document.
Play a classic text adventure: go to textadventures.co.uk and play 5 minutes of Zork. Notice how every decision is a yes/no or direction choice. Student-led.
By the end of this lesson you will have designed the structure of your text adventure game on paper, including a map with at least 4 rooms, a win condition, a lose condition, and a basic algorithm flowchart.
- A text adventure game presents the player with a situation and asks them to make a choice. The game branches based on their input. This is exactly what you already know: variables, input(), if/elif/else, and functions!
- Draw a map of your game on paper. Your game must have: at least 4 rooms/locations, a clear objective (what is the player trying to achieve?), at least one win path, at least one lose path, and items or clues that affect decisions.
- Write your game story in 3-4 sentences. Examples: escape a haunted museum, rescue a friend from a space station, survive a zombie apocalypse, complete a heist. Choose something you'd enjoy writing.
- For each room, write what the player sees, what choices they have, and what happens for each choice. This becomes your algorithm - the plan for your code.
- Start a new Python file:
adventure.py. Write the introduction using print statements and collect the player's name with input().
Design and code a multi-room text adventure game using everything from Module 1. Must include functions, loops, conditionals, lists for inventory, and a clear win/lose condition.
adventure.py- fully playable text adventure game- Design document: room map, player choices, win/lose paths (hand-drawn or digital)
- Test log: at least 3 complete playthroughs with notes on bugs found and fixed
- Minimum 4 distinct rooms/scenes with player choices
- A clear win path AND at least one lose path
- Game uses functions, loops, and conditionals
- Player input is always validated or handled gracefully
- Inventory system using a list (add/remove/display items)
- Game runs from start to finish without crashing
| Criterion | A - 5 | B - 4 | C - 3 | D - 2 | E - 1 |
|---|---|---|---|---|---|
| Planning & Design /5 marks | Planning document includes a complete game map, story summary, win and lose paths clearly mapped; document is approved and clearly informed the final code strucucture. | Planning document is mostly complete; game structure clear; minor gaps between plan and final code. | Planning document submitted; some sections incomplete; limited connection between plan and code. | Planning document minimal or submitted after coding began; little connection to final game. | No planning document submitted. |
| Python Programming /5 marks | Game uses variables, input(), conditionals, loops, and at least 3 user-defined functions correctly; code is clean, commented, and runs without errors; demonstrates strong understanding of all Module 1 concepts. | Uses most concepts correctly; at least 2 functions; runs with minor issues; mostly well-structured. | Basic conditionals and input used; at least 1 function; some errors or structure issues. | Conditionals present but missing functions or loops; significant errors; game partially runs. | Game does not run or is a copy of an example with no original code. |
| Game Design & Creativity /5 marks | Game has 4+ distinct rooms; a clear compelling narrative; both win and lose paths; creative story and original theme; player choices feel meaningful; uses a list (inventory or clues) effectively. | 4 rooms; win and lose paths present; decent story; at least one list used. | 3-4 rooms; win path exists; story is minimal; lose path may be missing. | Fewer than 3 rooms; story is very basic; win/lose conditions unclear. | No discernible game structure or story. |
| Reflection /5 marks | Reflection specifically identifies the biggest design challenge and explains how it was resolved; articulates the connection between planning and coding; uses correct Python vocabulary throughout. | Reflection identifies a genuine challenge with explanation; some correct vocabulary. | Reflection present but surface-level; challenge described without explanation. | Very brief reflection; generic statements. | No reflection submitted. |
Play 5 more minutes of your text adventure from last lesson. Notice how the game branches. What does the code structure HAVE to look like?
By the end of this lesson you will have coded Rooms 1 and 2 of your game as Python functions, with player choices handled by if/elif/else, and the rooms connected to each other by function calls.
- The key structure: each room is a function. When the player makes a choice, the function calls another room function. Here is the skeleton structure:
def room_start():
print("\n--- THE ENTRANCE ---")
print("You are standing in a dark corridor. Two doors stand before you.")
choice = input("Go LEFT or RIGHT? ").lower().strip()
if choice == "left":
room_library() # call the next room function
elif choice == "right":
room_basement()
else:
print("Invalid choice. Try again.")
room_start() # re-run this room - Write your Room 1 function using YOUR game's story. Follow the pattern: print the scene description, ask for input, branch with if/elif/else, call the next room or a lose function.
- Write a
lose()function that prints a "you lose" message and asks to play again:def lose(reason):
print("\n💀 GAME OVER:", reason)
again = input("Play again? (yes/no): ").lower()
if again == "yes":
room_start()
else:
print("Thanks for playing!") - Write Room 2 using the same structure. Make sure calling room_start() at the bottom of your file kicks off the whole game.
Browse itch.io text adventures for 5 minutes to get inspiration for your game design. Student-led.
By the end of this lesson you will have added an inventory system using a list, completed Rooms 3 and 4, and have a playable game from start to win/lose end.
- Add an inventory at the top of your file (before all functions):
inventory = [] # global list - starts empty
- To use the global list inside a function, declare it with
global:def room_library():
global inventory
print("\n--- THE LIBRARY ---")
print("You see an old key on the shelf.")
pick_up = input("Pick up the key? (yes/no): ").lower()
if pick_up == "yes":
inventory.append("key")
print("You picked up the key. Inventory:", inventory) - In a later room, check if the player HAS the item to unlock a path:
if "key" in inventory:
print("You use the key to open the door!")
win()
else:
lose("The door is locked. You needed the key.") - Write Rooms 3 and 4, and a
win()function. Test the full game from start to end on both win and lose paths.
global is acceptable for this task but in professional code we usually avoid it. For now it's fine - it's an important concept to understand.
Save adventure.py. Submission is end of Week 9.
Trade laptops with a classmate and play each other's games for 5 minutes. Note down any bugs or confusing moments. This is user testing!
By the end of this lesson you will have systematically tested all paths in your game, fixed bugs reported by a classmate, and added at least two improvements based on feedback.
- Create a test table on paper or in a Word doc. List every room, every choice, and what SHOULD happen. Then play the game and check each one. Mark Pass or Fail.
- Fix the Fails. The most common bugs in text adventure games: (a) invalid input causes the game to crash - fix with an else branch that re-runs the room; (b) a room function is called before it's defined - move the definition higher up; (c) an inventory check fails because the item was added with different capitalisation - standardise to lowercase.
- Improve the experience: add
print("─" * 40)between scenes for clear visual separation. Add aninventory_display()function the player can call at any time by typing "inventory". - Add a health or lives system using an integer variable if you finish early. Decrease it when bad things happen. Game ends if it hits 0.
checkio.org - try any intermediate challenge. Student-led.
By the end of this lesson you will have added comprehensive code comments to your game, a help screen that lists valid commands, and improved the narrative quality of your room descriptions.
- Go through your entire
adventure.pyand add a comment above each function explaining what it does. Add inline comments on any complex lines. Good rule: if you had to explain the line to a friend, it needs a comment. - Add a file header comment block at the very top:
# ═══════════════════════════════════════
# Game Title: [Your Game Title]
# Author: [Your Name]
# Year 9 Digital Technology - Task 3
# Description: [2-sentence summary]
# ═══════════════════════════════════════ - Add a
show_help()function that prints the valid commands for the game (go left, go right, pick up, check inventory, etc.). Call it when the player types "help" in any room. - Re-read every room description. Are they atmospheric and interesting? Add at least one sensory detail (smell, sound, temperature) to each room. Good storytelling makes the game much more enjoyable.
- Re-read all your print statements and fix any spelling errors.
Save polished adventure.py. Final submission including planning document and reflection is due end of Week 9.
Set up your laptop with your game ready to play. We're doing a showcase rotation!
By the end of this lesson you will have received peer feedback from at least two classmates, made final improvements to your game, and completed your written reflection.
- Rotation: every 8 minutes, the class rotates to a different laptop and plays that person's game. You play their game while they play yours. Write feedback on a sticky note or Google Doc: one "GREAT" (what works well) and one "WISH" (what could be better).
- After two rounds, return to your own laptop and read your feedback. Make the most impactful improvement suggested - you have 10 minutes.
- Write your final reflection (5-8 sentences): What was the biggest design challenge you encountered? How did you solve it? What would you add if you had more time? What Python concept did you find most useful?
- Final check before submission: Does your game run start to finish? Are all functions defined before they're called? Are your files named correctly?
Play your finished game one final time. Does it work? Are you proud of it? You should be - you've built something from scratch in Python!
By the end of this lesson you will have submitted all Task 3 files via Connect and completed a self-assessment against the rubric.
- Final file check - you need ALL of these: planning document (map + story summary),
adventure.py(fully working), and your reflection document. - Self-assess against the rubric. For each criterion, honestly pick A/B/C/D/E and briefly say why. This is not marked - it's a learning tool.
- Upload everything to Connect → Task 3 submission folder.
- Once submitted: congratulations! You just completed a full Python module. In Week 10 we celebrate and explore Python for fun.
Upload to connect.det.wa.edu.au: planning document, adventure.py, reflection. Verify upload was successful before leaving class.
You've completed three Python assessment tasks. Week 10 is yours - no marks, no submission. Explore Python for fun and discover what else this language can do beyond the curriculum.
Choose your own adventure for Week 10:
- Python Turtle graphics - create a spiral, a star, a colour wheel, or an abstract pattern using
import turtle - Codingame puzzle race - challenge a classmate to solve beginner Python puzzles faster at codingame.com
- Project Euler - attempt Problem 1 or 2 at projecteuler.net - pure mathematical programming
- Random art generator - use
randomandturtletogether to generate unique abstract art every run
End of lesson: your teacher will do a quick showcase - show one thing you built or discovered. No marks, just sharing.
The Caesar Cipher is one of history's oldest encryption algorithms. You will build a Python program that encrypts and decrypts messages using a user-chosen shift value, then reflect on why simple ciphers are no longer secure.
- caesar.py - working encrypt & decrypt program
- reflection document (.docx or .pdf)
- Accept message and shift value via input()
- Encrypt: shift each letter forward, wrap at Z
- Decrypt: shift letters backward to recover original
- Preserve spaces, punctuation, and numbers unchanged
- Menu loop: encrypt, decrypt, or quit
- Reflection: what encryption is, why Caesar is weak, how modern encryption differs
| Criterion | A - 5 | B - 4 | C - 3 | D - 2 | E - 1 |
|---|---|---|---|---|---|
| Encryption Logic Correct shift algorithm, wrapping, case handling /5 marks |
Flawless encrypt and decrypt with correct wrapping for upper and lowercase; all edge cases handled | Encrypt and ddecrypt work correctly for most inputs; minor edge case missed | Encryption works but decryption has errors, or wrapping is inconsistent | Partial implementation; either encrypt or decrypt works but not both | Minimal attempt; algorithm logic is fundamentally incorrect |
| User Interface & Menu input(), menu loop, clear prompts /5 marks |
Clean menu loop with clear prompts; handles invalid input gracefully; polished experience | Menu loop works; minor prompt clarity issues or missing input validation | Basic menu present but loop may break or prompts are confusing | Some user interaction but no menu loop; single-use program | No menu; program runs once with hardcoded values |
| Code Quality Functions, comments, variable names, style /5 marks |
Well-structured functions; meaningful variable names; clear comments throughout; PEP 8 style | Functions used; most variables named well; comments present but incomplete | Some functions or comments; variable names acceptable; code is readable | Minimal structure; some code in functions; few or no comments | No functions; poor variable names; no comments; difficult to read |
| Reflection Understanding of encryption concepts /5 marks |
Insightful reflection explaining encryption clearly, specific weaknesses of Caesar Cipher, and comparison to modern methods such as AES | Solid reflection covering encryption purpose and Caesar Cipher weakness with some detail | Reflection addresses basics and notes Caesar Cipher is weak but lacks depth | Brief reflection; touches on encryption but explanation is vague or partially incorrect | Minimal or missing reflection; no meaningful engagement with encryption concepts |
Decode this: KHOOR ZRUOG - shift every letter back by 3. What does it say? (Answer: HELLO WORLD)
By the end of this lesson you will be able to explain what encryption is, describe the Caesar Cipher algorithm, and use Python's ord() and chr() functions to work with character codes.
- Encryption: The process of scrambling data so only someone with the right key can read it. Used in messaging apps, banking, email, stored passwords, and government communications.
- Caesar Cipher: Shift every letter by a fixed number. Shift 3: A→D, B→E ... Z→C. Julius Caesar used shift 3 for military orders 2,000 years ago.
- ASCII character codes: Every keyboard character has a number. Try in Python:
PYTHONprint(ord('A')) # 65 print(ord('a')) # 97 print(chr(65)) # 'A' print(chr(72)) # 'H'
- Shifting a single letter: shift 'A' by 3: ord('A')=65, 65+3=68, chr(68)='D'. Try it in Python:
chr(ord('A') + 3) - The wrapping problem: ord('Z')=90, 90+3=93 - but 93 is '[' not 'C'. We need the modulo operator
%. We'll solve this next lesson. - Create
caesar.pywith a comment header: your name, date, and a one-sentence description.
"Explain the Caesar Cipher algorithm to a Year 9 student. Include an example encrypting 'PYTHON' with shift 5, showing each letter step by step with the ASCII values. You are the author."
Quick maths: 27 % 26 = ? 52 % 26 = ? 0 % 26 = ? The modulo operator gives the remainder - it's the key to wrapping letters.
By the end of this lesson you will have written a working encrypt() function with correct letter wrapping.
- The wrap formula:
Break it down: subtract base (65), add shift, mod 26 to wrap, add base back.PYTHON# Uppercase (A=65, 26 letters) encrypted_char = chr((ord(char) - 65 + shift) % 26 + 65) # Lowercase (a=97, 26 letters) encrypted_char = chr((ord(char) - 97 + shift) % 26 + 97)
- Build encrypt():
PYTHON - caesar.pydef encrypt(message, shift): result = "" for char in message: if char.isupper(): result += chr((ord(char) - 65 + shift) % 26 + 65) elif char.islower(): result += chr((ord(char) - 97 + shift) % 26 + 97) else: result += char # spaces, numbers, punctuation unchanged return result print(encrypt("Hello World!", 3)) # Khoor Zruog! print(encrypt("Python", 13)) # Clguba (ROT13)
- Test with shift 0 (no change), shift 26 (full rotation = original), shift 13 (ROT13).
- Challenge: What about shift 30? Does your formula still work? (30 % 26 = 4, so shift 30 = shift 4.)
"Explain why (ord(char) - 65 + shift) % 26 + 65 correctly wraps uppercase letters. Walk through encrypting 'Z' with shift 3, showing each calculation step. You are the author."
If encrypting adds 7 to each letter, decrypting subtracts 7. But there's an elegant Python shortcut using 26. Can you figure it out before reading the instructions?
By the end of this lesson you will have a working decrypt() function and understand why Caesar Cipher is vulnerable to brute force attack.
- Write decrypt():
PYTHON - caesar.pydef decrypt(message, shift): # Decrypting = encrypting with the reverse shift return encrypt(message, 26 - shift % 26)
- Test your pair:
PYTHONoriginal = "Secret Message! 123" shift = 13 encrypted = encrypt(original, shift) decrypted = decrypt(encrypted, shift) print("Match:", original == decrypted) # Should be True
- Test with shifts 1, 3, 13, 25 and varied messages. All should return
Match: True. - Brute force attack: With only 26 possible shifts, write a loop that prints all 26 decryptions of an encrypted message. This demonstrates Caesar Cipher is completely insecure - a computer can crack it instantly.
"Show me a Python function called brute_force_caesar that takes an encrypted message and prints all 26 possible decryptions with shift numbers. Explain why this shows Caesar Cipher is insecure. You are the author."
A cashier loops: serve customer → ask next → serve → ask - until the shop closes. How would you write that in Python? What kind of loop? When does it stop?
By the end of this lesson you will have wrapped caesar.py in a working menu loop so users can encrypt and decrypt multiple messages before quitting.
- Build the menu:
PYTHON - caesar.pydef main(): print("=== CAESAR CIPHER ===") while True: print("\n1. Encrypt 2. Decrypt 3. Quit") choice = input("Choose (1/2/3): ").strip() if choice == "1": msg = input("Message to encrypt: ") shift = int(input("Shift (1-25): ")) print("Encrypted:", encrypt(msg, shift)) elif choice == "2": msg = input("Message to decrypt: ") shift = int(input("Shift (1-25): ")) print("Decrypted:", decrypt(msg, shift)) elif choice == "3": print("Goodbye!"); break else: print("Invalid - enter 1, 2, or 3.") main()
- Input validation: What if the user types "abc" for the shift? The program crashes! Wrap the int() call in
try/except ValueErrorto handle this gracefully. - Test all paths: encrypt, decrypt, invalid choice, quit. All must work without errors.
- Add a comment block at top explaining: what the program does, how to use it, limitations.
"Show me how to add try/except ValueError to a Python Caesar Cipher menu so it doesn't crash when the user types a word instead of a number for the shift value. You are the author."
Swap caesar.py with a partner. Without running it, can they understand what each function does just from reading the code and comments? Clean code should be self-explanatory. Give each other one improvement suggestion.
By the end of this lesson you will have polished your caesar.py to professional standard and written a thoughtful reflection about encryption concepts.
- Code audit: every function has a docstring; variable names are descriptive; complex lines have comments; no dead code; consistent 4-space indentation.
- Reflection (3 paragraphs, .docx or .pdf):
- Para 1: What is encryption and why do we need it? Two real-world examples.
- Para 2: Why is Caesar Cipher insecure? What is a brute force attack? How long to try all 26 shifts?
- Para 3: How does AES-256 (used in WhatsApp and banking) differ? Why can't it be brute forced?
- File check:
caesar.pyand reflection document ready for next lesson's submission.
"Help me write a Year 9 reflection about encryption in three paragraphs: (1) what encryption is with two real-world examples, (2) why Caesar Cipher is insecure and what brute force means, (3) how AES-256 differs and why it cannot be brute forced. You are the author."
Name 5 types of cybersecurity attacks in 60 seconds with your partner. Go!
By the end of this lesson you will have submitted Task 4 and have a clear preview of the cyber threat research you'll do in Task 5.
- Final test: run caesar.py, test encrypt and decrypt, confirm no errors.
- Upload both files to Connect → Task 4. Verify upload successful.
- Self-assess against the rubric (4 criteria, A-E).
- Task 5 Preview: Next 3 weeks you'll research phishing, ransomware, malware, social engineering, DDoS, and more - and write a formal report. Find a recent news article about a real cyber attack for homework.
Upload to connect.det.wa.edu.au: caesar.py and reflection document. Verify before leaving class.
Research three types of cyber threats, find a real-world case study for each, and write a structured report explaining how each attack works, who it targets, and how to defend against it. Include a section on digital rights and responsibilities.
- Formal research report (1,200-1,600 words, .docx or .pdf)
- Reference list (3+ sources per threat, APA)
- 3 threat types from: phishing, ransomware, malware, social engineering, DDoS, MitM, SQL injection
- For each: how it works, named real-world case study, impact, defences
- Section on digital rights and responsibilities (Privacy Act, eSafety Commissioner)
- Formal structure: title page, introduction, 3 body sections, conclusion, references
- Minimum 9 credible sources (3 per threat)
| Criterion | A - 5 | B - 4 | C - 3 | D - 2 | E - 1 |
|---|---|---|---|---|---|
| Threat Research & Accuracy Technical understanding of 3 threats /5 marks |
All three threats explained with technical depth and accuracy; named case studies are specific and well-described | Three threats explained accurately; case studies present but lacking depth | Three threats at surface level; case studies generic or partially inaccurate | Only two threats covered in detail; case studies vague or missing | One or fewer threats covered meaningfully; minimal accurate technical information |
| Defence Strategies Practical, specific defences for each threat /5 marks |
Each threat matched with multiple specific, actionable defences targeted to the threat type | Defences provided for each threat; mostly specific with minor gaps | Defences present but some are generic without explanation | Defences for some threats only; incomplete or mismatched | Minimal or absent defence strategies |
| Digital Rights & Responsibilities Ethical, legal, and social dimensions /5 marks |
Thoughtful analysis of digital rights and responsibilities; references Australian law such as the Privacy Act | Rights and responsibilities explained with some depth; some reference to law or ethics | Section present but brief or mostly generic | Section present but lacks substance; rights and responsibilities confused | Section missing or entirely superficial |
| Report Quality & Referencing Structure, writing, citation quality /5 marks |
Professional structure with all required sections; clear academic writing; 9+ credible sources correctly cited | Good structure and writing; 7-8 sources cited with minor errors | Basic structure; 5-6 sources; some citation errors | Incomplete structure; fewer than 5 sources; inconsistent citation | No clear structure; very limited sources; no proper citations |
Share the news article you found for homework. 30 seconds each: What happened? Who was attacked? What type? What was the impact?
By the end of this lesson you will have chosen your three threat types, found at least one case study for each, and set up your report document with section headings.
- Threat categories: Phishing, Ransomware, Social Engineering, DDoS, Man-in-the-Middle, SQL Injection, Malware. Choose 3 that interest you.
- Famous Australian case studies: Optus data breach (2022), Medibank ransomware (2022), Australian Parliament House hack (2019). These are excellent choices for Australian-specific context.
- Set up your document: Title Page → Introduction → Threat 1 → Threat 2 → Threat 3 → Digital Rights & Responsibilities → Conclusion → References. Add placeholder headings now.
- Find 2-3 sources for Threat 1 this lesson. Copy URLs into your references immediately so you don't lose them. Credible sources: cyber.gov.au, ABC News, IBM Security Blog, CrowdStrike Blog.
"Give me a factual summary of the 2022 Medibank ransomware attack in Australia: what happened, how it happened, what data was stolen, and the impact on individuals. Include key facts suitable for a Year 9 Digital Technology research report. You are the author."
Source credibility ranking: (a) random blog, (b) cyber.gov.au, (c) YouTube video, (d) peer-reviewed journal, (e) The Australian newspaper. Rank most to least credible and explain why.
By the end of this lesson you will have completed research on Threats 1 and 2 with at least 3 credible sources each, and drafted the How It Works and Defence sections for both.
- For each threat, answer 4 questions: How does it work (step by step)? Who does it target? Name a specific real-world case study (date, victim, scale, outcome). How to defend against it (at least 3 specific defences)?
- Draft Threat 1 and Threat 2 sections now - aim for 250-300 words per section. Write in your own words; do not copy-paste from sources.
- Add all sources to your references as you go: Author. (Year). Title. Website. URL.
"Explain how a phishing attack works step by step from the attacker's perspective. Then list 4 specific technical and behavioural defences against phishing for individuals and organisations. Write for a Year 9 Digital Technology research report. You are the author."
Do you have a right to privacy online in Australia? Who is responsible for protecting your data - you, the government, or the companies that store it? Discuss with a partner - we'll look at the real legal answer today.
By the end of this lesson you will have completed research on Threat 3 and written your Digital Rights and Responsibilities section.
- Complete Threat 3 using the same 4-question structure as Threats 1 and 2.
- Digital Rights in Australia: Right to privacy (Privacy Act 1988), right to access government information (FOI), freedom from online harassment (eSafety Commissioner at esafety.gov.au), right to accurate data (correction rights under Privacy Act).
- Digital Responsibilities: Not sharing others' data without consent; respecting copyright; using secure passwords; reporting cybercrime to ReportCyber; not enabling cyberbullying.
- Write your Digital Rights and Responsibilities section (200-250 words). Include at least one Australian law or government body, two digital rights, and two personal responsibilities.
"Help me write a 200-word section for a Year 9 Digital Technology report about digital rights and responsibilities in Australia. Include the Privacy Act 1988, the eSafety Commissioner, and two personal responsibilities I have as a digital citizen. You are the author."
A research report introduction: hooks the reader → provides context → states the purpose → previews structure. A conclusion: summarises → connects → looks forward. Never introduce new information in a conclusion.
By the end of this lesson you will have written your introduction and conclusion, checked your word count, and formatted all references correctly.
- Write introduction (150-200 words): hook → context → thesis → structure preview.
- Write conclusion (150-200 words): summarise threats → connect to digital rights → forward-looking statement.
- APA reference format:
Author, A. (Year, Month Day). Title. Website. URL - Check word count - aim for 1,200-1,600 (excluding references). Run spellcheck and proofread aloud.
"Write a strong 180-word introduction paragraph for a Year 9 cybersecurity research report covering phishing, ransomware, and social engineering. Hook the reader, provide Australian context, and preview the report structure. You are the author."
Teacher reads one anonymous paragraph from a student report. Class gives feedback: What's strong? What needs more detail? Is the writing academic or too informal?
By the end of this lesson you will have completed a structured peer review and revised your report based on feedback.
- Swap complete report with a partner. Provide structured feedback: one strength and one suggestion per threat section; assess the Digital Rights section; check referencing for credibility and consistency.
- Receive feedback and revise your draft accordingly.
- Final formatting: consistent font and size; headings formatted; page numbers present; title page complete.
- Export as PDF (File → Export or print to PDF) for submission.
Sketch the path from your phone to your friend's phone: your phone → home router → ISP → internet → their ISP → their router → their phone. Compare sketches - what did you include that they didn't?
By the end of this lesson you will have submitted Task 5 and understand the basic journey of data across the internet for Task 6.
- Upload PDF to Connect → Task 5. Verify upload successful.
- Self-assess against rubric (4 criteria, A-E).
- Task 6 preview: You'll create a Network Security Guide for a small business owner - covering how networks work, HTTPS, and practical security steps. Think: you're the IT consultant and they have zero technical knowledge.
- Homework: find out what TCP/IP is. Write a 2-sentence plain-English explanation.
Upload to connect.det.wa.edu.au: research report as PDF. Confirm filename and upload before leaving class.
Create a Network Security Guide for a small Australian business owner - no technical background assumed. Explain how networks work, how HTTPS protects data, and provide a practical checklist of 8+ steps to secure their business network. Include at least one original diagram.
- Network Security Guide (.docx or designed PDF, 4-6 pages)
- At least 1 original diagram (network or HTTPS flow)
- Section 1: How networks work - IP, DNS, routers, packets, client/server
- Section 2: How HTTPS works - TLS handshake, certificates, why it matters
- Section 3: Network threats - at least 3 relevant to a small business
- Section 4: Security checklist - 8+ practical steps with explanations
- One original diagram created by you - not copied from the internet
- No unexplained jargon - aimed at a non-technical audience
| Criterion | A - 5 | B - 4 | C - 3 | D - 2 | E - 1 |
|---|---|---|---|---|---|
| Technical Content Networks, HTTPS, threats - accuracy and depth /5 marks |
Accurate, thorough explanation of all sections; correct terminology explained clearly for a lay audience | Mostly accucurate with good depth; minor technical errors or terminology gaps | Core concepts present but some inaccuracies; explanations sometimes unclear | Some correct content but significant gaps or inaccuracies; incomplete coverage | Mostly inaccurate or very incomplete; minimal technical content |
| Security Checklist Practical, specific, actionable steps /5 marks |
8+ specific, actionable steps; each explained with why it helps; tailored to small business context | 8+ steps; most specific and actionable; minor explanation gaps | 6-7 steps; some generic; limited explanation of why each step matters | 4-5 steps; mostly generic; minimal explanation | Fewer than 4 steps; vague or irrelevant advice |
| Diagram Quality Original, labelled, accurate network or HTTPS diagram /5 marks |
Original, clearly labelled diagram accurately representing network or HTTPS; significantly enhances understanding | Clear, original diagram with labels; minor accuracy or clarity issues | Diagram present and original but poorly labelled or hard to interpret | Diagram appears copied or minimally modified; adds little value | No original diagram; or directly copied from internet |
| Communication & Design Audience-appropriate language, visual layout, clarity /5 marks |
Professional design; all jargon explained; language appropriate for a non-technical reader; visually engaging | Good design and language; most jargon explained; clear structure | Acceptable design; some jargon unexplained; layout could be clearer | Inconsistent design; technical language without explanation; hard to navigate | No clear design effort; language inaccessible to a lay audience |
Open Command Prompt and type ping google.com. What do you see? The IP address is Google's server. The ms value is how long your signal takes to travel there and back.
By the end of this lesson you will be able to explain how data travels across a network and have drafted Section 1 of your guide.
- Key concepts for Section 1: IP Address (device's unique number), DNS (internet's phone book - converts google.com to an IP), Routers (traffic directors between networks), Packet Switching (data broken into small packets sent independently then reassembled), Client/Server (your browser requests, Google's server responds).
- Draw your network diagram: Using Draw.io, Canva, or pencil + photo - show: your device → home router → ISP → internet → server. Label each component. This is your required original diagram.
- Draft Section 1 for a non-technical business owner. Use analogies: postal system (packets), road network (routers), phone book (DNS).
- Investigation: Run
tracert google.com(Windows) - this shows every router your signal hops through to reach Google. How many hops?
"Explain how DNS works to a non-technical small business owner using a simple analogy. Then explain why DNS spoofing is dangerous. Around 150 words. You are the author."
Look at your browser address bar. Click the padlock icon - what information is there? What does it mean? What happens if a site uses HTTP instead of HTTPS?
By the end of this lesson you will be able to explain how HTTPS protects web traffic and have drafted Section 2 of your guide.
- HTTP vs HTTPS: HTTP sends data in plain text - anyone intercepting can read it. HTTPS adds TLS encryption, making intercepted data unreadable.
- TLS Handshake (simplified): (1) Browser says hello to server. (2) Server sends SSL certificate (digital ID). (3) Browser verifies certificate via a trusted Certificate Authority. (4) Encrypted session key exchanged. (5) All traffic encrypted.
- Why it matters for small businesses: Any site handling personal or payment data MUST use HTTPS. A customer on an HTTP site = their credit card details readable to anyone on the same WiFi.
- Draft Section 2. Use the locked box analogy: "HTTPS is like putting your letter in a locked box - only the recipient has the key."
"Explain the TLS handshake to a non-technical small business owner in plain English using an analogy. Focus on why HTTPS matters for their business, not cryptographic details. Under 150 words. You are the author."
Scenario: you run a café with free customer WiFi. A cybercriminal sits down, orders a coffee, connects. What could they do? List as many possibilities as you can.
By the end of this lesson you will have written Sections 3 and 4 of your guide - Network Threats and the Security Checklist.
- Section 3 - 3 network threats for small businesses: Choose 3 from: Evil Twin WiFi attack, ransomware via email, credential stuffing, unpatched router vulnerabilities, insider threat. For each: what it is (2-3 sentences), how it targets a small business, potential impact.
- Section 4 - Security Checklist (8+ steps):
For each step, write 1-2 sentences explaining WHY it matters.EXAMPLE ITEMS✅ Change default router admin password ✅ Enable WPA3/WPA2 on all WiFi networks ✅ Separate guest WiFi from business network ✅ Enable automatic software updates ✅ Use a business-grade firewall ✅ Require multi-factor authentication (MFA) ✅ Back up data to offline location weekly ✅ Train staff to recognise phishing ✅ Install reputable endpoint protection ✅ Disable RDP unless essential
"Write a 10-step network security checklist for a small Australian business with no IT department. For each step, explain in one sentence why it matters. Plain English, no unexplained acronyms. You are the author."
Compare: 6 pages of plain text vs a 2-page designed guide with icons, coloured sections, and a diagram. Same content - which would a small business owner actually read? Design matters for communication.
By the end of this lesson you will have designed the visual layout of your guide and inserted your original network diagram.
- Design principles: Visual hierarchy (headings stand out), chunking (headings + bullets), icons (🔒 🌐 ⚠️ ✅), white space (don't cram), consistent 2-3 colour scheme.
- If using Canva: search "business guide template" or "cybersecurity infographic." Customise - don't submit a template unchanged.
- Insert your original network diagram from Wk7·L1 into the appropriate section.
- Review against the rubric Communication & Design criterion - would a real small business owner use this guide?
"Give me 5 design tips for creating a professional cybersecurity guide for non-technical small business owners. Focus on visual communication principles. You are the author."
Quick share: one thing in your guide you're most proud of. Build each other up before final submissions.
By the end of this lesson you will have completed all revisions and exported a submission-ready PDF.
- Walkthrough swap: partner plays a small business owner (no IT knowledge). After 3 minutes reading: (a) Name 3 things you'd do to secure your network. (b) Was anything confusing? (c) Would you use this guide?
- Revise based on feedback - focus on clarity.
- Final checklist: all 4 sections present; original diagram included and labelled; 8+ checklist items with explanations; no unexplained jargon; 4-6 pages.
- Export to PDF. Open the PDF to confirm diagram renders correctly and fonts are embedded.
Module 2 rapid-fire review: teacher asks questions, first hand up answers. Topics: Caesar Cipher, brute force, phishing, TLS, DNS, packet switching, certificate authorities. No notes needed - if you've been here all module, you'll know these.
By the end of this lesson you will have submitted Task 6 and be ready for Week 10 Cyber Challenge activities.
- Upload Network Security Guide PDF to Connect → Task 6. Open it from Connect to verify.
- Self-assess against Task 6 rubric (4 criteria, A-E).
- 5-minute notebook reflection: What was the most surprising thing you learned in Module 2? What would you want to explore further in cybersecurity?
Upload to connect.det.wa.edu.au: Network Security Guide as PDF. Open the uploaded file to verify before leaving class.
You've completed three cybersecurity tasks - now explore like a real security analyst. Week 10 is a student-led investigation into real tools used by cybersecurity professionals.
Choose your cyber challenge for Week 10:
- CyberChef - decode hidden messages, convert between encodings, explore encryption at cyberchef.org
- PicoCTF beginner challenges - attempt a real Capture The Flag competition at picoctf.org
- Caesar cipher battle - use your
caesar.pyto encrypt messages and challenge classmates to crack them without the key - Hash cracking demo - explore how simple passwords are cracked using wordlists (conceptual only - no actual cracking tools)
End of lesson: share one tool or challenge you tried with the class. No marks - just professional curiosity.
Design and code a single-page personal portfolio website using HTML and CSS. This is your online presence - a professional page you can genuinely share to showcase your skills. You'll apply user-centred design principles, write semantic HTML, and style your page with CSS including layout techniques like flexbox.
- index.html - single portfolio page
- style.css - external stylesheet
- design document - wireframe + design rationale
- Sections: navigation, hero/header, about me, skills/projects, contact
- Semantic HTML tags: header, nav, main, section, footer, article
- External CSS file (not inline styles); flexbox used for at least one layout area
- Consistent colour scheme and typography (Google Fonts or system fonts)
- Responsive design - usable on both desktop and mobile
- Design document: wireframe sketch + written rationale for colour, font, and layout choices
| Criterion | A - 5 | B - 4 | C - 3 | D - 2 | E - 1 |
|---|---|---|---|---|---|
| HTML Structure Semantic tags, valid markup, logical structure /5 marks |
All required sections using correct semantic tags; valid, well-structured HTML; logical document outline; no structural errors | Most sections use correct semantic tags; minor structural issues | HTML structure present but some semantic tags missing or misused | Basic HTML present; mostly div-only structure; several missing sections | Minimal or invalid HTML; structure difficult to identify |
| CSS Styling External CSS, flexbox, colour, typography /5 marks |
External CSS with consistent colour scheme and typography; flexbox used effectively; polished, professional appearance | External CSS with good styling; flexbox present; minor inconsistencies | External CSS used; basic styling applied; limited use of flexbox or layout | Some CSS present but mostly inline styles or very limited styling | Little to no CSS; unstyled or default browser styling only |
| Responsiveness & Usability Mobile-friendly, readable, navigable /5 marks |
Page is fully usable on both desktop and mobile; media queries or flexible layout handle all screen sizes; navigation works correctly | Page usable on desktop and mostly usable on mobile; minor layout issues at small sizes | Desktop version works; mobile has significant layout problems | Limited responsiveness; page breaks or becomes unusable on smaller screens | No responsive design; page only partially functional |
| Design Document Wireframe quality and design rationale /5 marks |
Clear wireframe showing all sections; thorough written rationale explaining colour, font, and layout choices with reference to user-centred design principles | Wireframe present and readable; rationale explains most decisions | Wireframe present but rough; rationale is brief or surface-level | Wireframe incomplete; rationale minimal or missing | No wireframe or rationale provided |
Open three portfolio websites of real developers or designers (search "web developer portfolio 2024"). As a class, discuss: What sections do they all have? What makes some more effective than others? What is the target audience?
By the end of this lesson you will have applied user-centred design principles to plan your portfolio and produced a wireframe sketch of your page layout.
- User-Centred Design (UCD): Design decisions are driven by the needs of the user - not what looks cool to you. Ask: Who is viewing my portfolio? (Potential employers, teachers, university admissions.) What do they need to see? (Skills, projects, contact details.) How will they navigate the page?
- Required sections for your portfolio:
- Navigation: Fixed or top nav linking to each section
- Hero: Your name, a tagline, a short intro sentence
- About Me: 2-3 sentences about you, your interests, and what you're learning
- Skills/Projects: Highlight 2-3 things you've built or can do (Python, this portfolio, etc.)
- Contact: Email link or a simple contact form
- Wireframe: Draw your page layout on paper or in a simple tool (Figma, draw.io, Canva). Show where each section sits, approximate proportions, and where major elements go (headings, images, buttons). No colour or detail needed - just boxes and labels.
- Design rationale: In 3-4 sentences, answer: Who is your target audience? Why did you choose this layout? What feeling should your portfolio convey (professional, creative, bold)?
- Create your project folder:
portfolio/withindex.htmlandstyle.cssfiles (empty for now). Set up VS Code with Live Server if available.
"List 5 user-centred design principles that a Year 9 student should apply when designing a personal portfolio website. For each principle, give a practical example of how to apply it to a portfolio page. You are the author."
What's the difference between <div class="nav"> and <nav>? They look the same to the browser - but screen readers, search engines, and other developers understand <nav> means navigation. That's semantic HTML.
By the end of this lesson you will have built the complete HTML skeleton of your portfolio using correct semantic tags.
- Start your index.html:
HTML - index.html skeleton<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Your Name - Portfolio</title> <link rel="stylesheet" href="style.css"> </head> <body> <header> <nav> <a href="#hero">Home</a> <a href="#about">About</a> <a href="#skills">Skills</a> <a href="#contact">Contact</a> </nav> </header> <main> <section id="hero"> <h1>Hi, I'm [Your Name]</h1> <p>Year 9 · Digital Technology · Building cool things with code.</p> </section> <section id="about"> <h2>About Me</h2> <p>Your about me text here...</p> </section> <section id="skills"> <h2>Skills & Projects</h2> <!-- Project cards go here --> </section> <section id="contact"> <h2>Contact</h2> <a href="mailto:[email protected]">Email Me</a> </section> </main> <footer> <p>© 2025 [Your Name]</p> </footer> </body> </html>
- Fill in your real name, a genuine tagline, and a 2-3 sentence About Me. Make it personal - this is actually yours.
- Add 2-3 project cards in the Skills section. Each card: project name, 1-sentence description, what language/skill it used. Your caesar.py and adventure.py from Module 1-2 count!
- Validate your HTML at validator.w3.org - fix any errors before adding CSS.
"Show me the correct HTML5 semantic structure for a personal portfolio page with a navigation bar, hero section, about section, skills/projects section, and contact section. Use proper semantic tags throughout. You are the author."
Open coolors.co and generate 5 colour palettes. Choose one that matches the mood of your portfolio (professional dark theme, clean light theme, bold creative). Screenshot your chosen palette - you'll reference it throughout the task.
By the end of this lesson you will have applied a consistent colour scheme and typography to your portfolio using an external CSS file.
- CSS custom properties (variables) for your colours:
CSS - style.css/* Import a Google Font */ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap'); /* Colour variables - change these to your chosen palette */ :root { --bg: #0f1117; --bg2: #1a1d2e; --accent: #6c63ff; --text: #e8eaf0; --muted: #8892b0; --white: #ffffff; .acc-title{-webkit-line-clamp:2;} .accordion-trigger{min-height:56px;} } /* Reset and base styles */ * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Inter', sans-serif; background: var(--bg); color: var(--text); line-height: 1.6; }
- The CSS Box Model: Every element is a box - content → padding → border → margin. Use
paddingfor space inside,marginfor space outside. Setbox-sizing: border-boxglobally (included above) so padding doesn't blow out your widths. - Style your hero section:
CSS#hero { min-height: 100vh; display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; padding: 40px 20px; } #hero h1 { font-size: clamp(2rem, 5vw, 4rem); color: var(--white); margin-bottom: 16px; } #hero p { font-size: 1.1rem; color: var(--muted); max-width: 600px; }
- Style your navigation bar. Use
position: sticky; top: 0;to keep it visible while scrolling. - Check contrast: your text colour must be readable on your background. Test at webaim.org/resources/contrastchecker.
"Show me how to create a sticky navigation bar in CSS for a portfolio website. It should be fixed to the top on scroll, have a dark background, and smooth transitions on hover for the nav links. You are the author."
Open flexboxfroggy.com and complete as many levels as you can in 5 minutes. Flexbox Froggy teaches flexbox by moving frogs to lily pads - the best 5-minute flexbox introduction there is.
By the end of this lesson you will have laid out your project cards using flexbox and styled your navigation with flexbox alignment.
- Flexbox project cards:
CSS - style.css.cards-grid { display: flex; flex-wrap: wrap; gap: 24px; justify-content: center; padding: 40px 20px; } .project-card { background: var(--bg2); border: 1px solid rgba(108, 99, 255, 0.2); border-radius: 12px; padding: 24px; width: 280px; transition: transform 0.2s, border-color 0.2s; } .project-card:hover { transform: translateY(-4px); border-color: var(--accent); }
- Update your HTML - wrap your project cards in a
<div class="cards-grid">and give each cardclass="project-card". - Flexbox navigation:
CSSnav { display: flex; justify-content: space-between; align-items: center; padding: 16px 40px; background: var(--bg); position: sticky; top: 0; z-index: 100; } nav a { color: var(--muted); text-decoration: none; font-size: 14px; letter-spacing: 0.05em; transition: color 0.2s; } nav a:hover { color: var(--accent); }
- Add a smooth scroll behaviour: in your
htmlselector, addscroll-behavior: smooth;. Now clicking nav links scrolls smoothly to each section.
"Explain how flexbox flex-wrap and gap work together to create a responsive card grid that goes from 3 columns on desktop to 1 column on mobile without using media queries. You are the author."
Open your portfolio on your phone (or use Chrome DevTools → Toggle Device Toolbar, shortcut Ctrl+Shift+M). What breaks? Text too small? Cards overflow? Navigation crowded? Make a list - you'll fix these today.
By the end of this lesson you will have added responsive breakpoints and polished all sections ready for submission.
- Media query basics:
CSS/* Mobile: screens 600px and below */ @media (max-width: 600px) { nav { flex-direction: column; gap: 12px; padding: 16px; } #hero h1 { font-size: 2rem; } .project-card { width: 100%; } }
- Test at 375px (iPhone SE), 768px (tablet), and 1280px (desktop). Fix any issues at each breakpoint.
- Polish checklist:
- All sections have adequate padding/margin (not cramped)
- Consistent font sizes (h1 > h2 > p - clear hierarchy)
- Hover states on all interactive elements (links, buttons)
- Footer styled and present
- No horizontal scroll at any screen size
- Complete your design document: wireframe + rationale. The rationale should reference UCD - explain choices in terms of your target audience.
- Zip your
portfolio/folder (index.html + style.css + design document) ready for submission.
"Show me the 3 most important CSS media query breakpoints for a portfolio website and what layout changes to apply at each. Include mobile navigation handling. You are the author."
What is web scraping? How do you think Instagram, Google, or price comparison sites collect data from other websites? Discuss - then we'll preview how Python can do the same thing.
By the end of this lesson you will have submitted Task 7 and understand what a Python web scraper does.
- Final check: open your portfolio in Chrome and Firefox. No broken links, no layout issues, all sections present.
- Upload your zipped portfolio folder to Connect → Task 7. Verify the upload.
- Self-assess against the rubric (4 criteria, A-E).
- Task 8 Preview - Python Web Scraper: Over the next 3 weeks you'll use Python's
requestslibrary to download web page content, thenBeautifulSoupto extract specific data from the HTML. Think of it as teaching Python to be a web browser that reads and remembers specific pieces of information. - Homework: find a website with public data you'd find interesting to scrape (weather, sports scores, movie ratings, book titles). Be ready to share it next lesson.
Upload to connect.det.wa.edu.au: zipped portfolio folder containing index.html, style.css, and design document. Verify upload before leaving class.
Build a Python program that automatically collects data from a public website using requests and BeautifulSoup. Your scraper must extract meaningful information, clean it, display it neatly, and save results to a CSV file. You'll reflect on the data, its accuracy, and the ethical implications of web scraping.
- scraper.py - working web scraper
- output.csv - sample scraped data
- reflection document
- Use
requeststo fetch a public web page - Use
BeautifulSoupto extract specific elements (titles, prices, headlines, etc.) - Clean extracted data (strip whitespace, handle missing values)
- Display results in a formatted table in the terminal
- Save results to
output.csvusing Python'scsvmodule - Reflection: what data was collected, accuracy, and ethical considerations
| Criterion | A - 5 | B - 4 | C - 3 | D - 2 | E - 1 |
|---|---|---|---|---|---|
| Scraping Functionality requests, BeautifulSoup, correct data extraction /5 marks |
Scraper reliably fetches page and extracts targeted data accurately; handles missing elements gracefully; collects meaningful and useful information | Scraper works and extracts target data; minor gaps in error handling or edge cases | Scraper fetches page and extracts some data; some elements missed or extraction inconsistent | Scraper partially functional; page is fetched but extraction is incomplete or incorrect | Scraper does not run or fails to extract meaningful data |
| Data Cleaning & Output Clean data, formatted terminal display, CSV export /5 marks |
Data cleaned effectively (whitespace, blanks handled); terminal output is clearly formatted; CSV is correctly structured with headers and all extracted data | Data mostly clean; terminal output readable; CSV present and mostly correct | Some data cleaning; terminal output present; CSV exists but may have formatting issues | Limited data cleaning; output exists but hard to read; CSV incomplete or missing | No data cleaning; output unformatted or absent; CSV missing |
| Code Quality Functions, comments, error handling, style /5 marks |
Well-structured code with functions; meaningful variable names; comments explain what and why; try/except handles request errors | Functions used; good variable names; comments present; basic error handling | Some functions; comments partial; code readable but limited error handling | Minimal structure; few comments; no error handling | No functions; no comments; no error handling; difficult to read |
| Reflection & Ethics Understanding of data collection and ethical issues /5 marks |
Thoughtful reflection on data collected, accuracy/limitations, and ethical considerations including robots.txt, terms of service, and data privacy | Solid reflection covering data accuracy and ethics with some depth | Reflection addresses data and mentions ethical considerations briefly | Reflection present but surface-level; limited engagement with ethics | Minimal or missing reflection; no ethical consideration |
Right-click any webpage and select "View Page Source." What do you see? This is the raw HTML that your browser received from the server - and it's exactly what Python's requests library will download for us.
By the end of this lesson you will be able to use Python's requests library to fetch a web page and inspect the HTML content.
- Install requests: Open terminal and run
pip install requests beautifulsoup4. These are the two libraries you'll use throughout Task 8. - Your first requests call:
Status code 200 = success. 404 = page not found. 403 = forbidden. 500 = server error.PYTHON - scraper.pyimport requests url = "https://books.toscrape.com" # A safe practice site response = requests.get(url) print("Status code:", response.status_code) print("First 500 chars:") print(response.text[:500])
- Scraping ethics - robots.txt: Before scraping any site, check
website.com/robots.txt. This file tells you which pages automated bots are allowed to access. Ignoring it can be a terms of service violation. For this task we'll use books.toscrape.com - a site built specifically for scraping practice. - Inspect the page: open books.toscrape.com in your browser. Right-click a book title → "Inspect." What HTML tags contain the title? The price? The rating? Note these - you'll target them with BeautifulSoup next lesson.
- Add error handling to your requests call:
PYTHONtry: response = requests.get(url, timeout=10) response.raise_for_status() # Raises error if status != 200 except requests.exceptions.RequestException as e: print(f"Error fetching page: {e}")
"Explain what HTTP status codes 200, 404, 403, and 500 mean for a Python web scraper. Show me how to use requests.raise_for_status() to handle errors. You are the author."
Analogy: BeautifulSoup is like a highlighter for HTML. You tell it "highlight every h3 tag" - it finds them all and hands them to you as a list. How would you then get the text out of each one?
By the end of this lesson you will be able to use BeautifulSoup to parse HTML and extract specific elements as text.
- Parse the page with BeautifulSoup:
PYTHON - scraper.pyfrom bs4 import BeautifulSoup import requests url = "https://books.toscrape.com" response = requests.get(url) soup = BeautifulSoup(response.text, "html.parser") # Find all book articles books = soup.find_all("article", class_="product_pod") print(f"Found {len(books)} books")
- Extract title, price, and rating from each book:
PYTHONfor book in books[:5]: # First 5 books title = book.h3.a["title"] price = book.find("p", class_="price_color").text.strip() rating = book.p["class"][1] # "One", "Two", "Three", etc. print(f"{title} | {price} | {rating} stars")
- Store all books in a list of dictionaries:
PYTHONbook_data = [] for book in books: book_data.append({ "title": book.h3.a["title"], "price": book.find("p", class_="price_color").text.strip(), "rating": book.p["class"][1] })
- Print the length of
book_data- how many books on page 1 of the catalogue?
"Show me how to use BeautifulSoup's find_all with a CSS class selector to extract all elements of a specific type from a parsed HTML page. Include an example of getting text from each element using .text.strip(). You are the author."
Open Excel or Google Sheets. What is a CSV file? Why is it useful for storing scraped data? Why might JSON be better for some cases? When would you choose one over the other?
By the end of this lesson you will have saved your scraped data to a CSV file and displayed it as a formatted table in the terminal.
- Save to CSV using DictWriter:
PYTHON - scraper.pyimport csv def save_to_csv(data, filename="output.csv"): if not data: print("No data to save."); return with open(filename, "w", newline="", encoding="utf-8") as f: writer = csv.DictWriter(f, fieldnames=data[0].keys()) writer.writeheader() writer.writerows(data) print(f"Saved {len(data)} records to {filename}")
- Formatted terminal display:
PYTHONdef display_table(data): print(f"\n{'TITLE':<50} {'PRICE':>8} {'RATING':>10}") print("-" * 70) for item in data: title = item["title"][:48] # Truncate long titles print(f"{title:<50} {item['price']:>8} {item['rating']:>10}")
- Data cleaning: Some titles may have extra whitespace or special characters. Add
.strip()to all text extractions. Handle cases where a field might beNonewith a default value:field.text.strip() if field else "N/A". - Open your
output.csvin Excel or Google Sheets - does it look correct? Column headers present, data in right columns?
"Show me how to use Python's csv.DictWriter to save a list of dictionaries to a CSV file with a header row. Explain when to use DictWriter versus regular csv.writer. You are the author."
Look at the URL pattern on books.toscrape.com when you click to page 2: books.toscrape.com/catalogue/page-2.html. What pattern do you notice? How could you use a Python loop and f-string to visit pages 1 through 5?
By the end of this lesson you will have either scraped multiple pages from books.toscrape.com or begun scraping your own chosen target site.
- Multi-page scraping loop:
PYTHONall_books = [] for page in range(1, 6): # Pages 1-5 url = f"https://books.toscrape.com/catalogue/page-{page}.html" response = requests.get(url) soup = BeautifulSoup(response.text, "html.parser") books = soup.find_all("article", class_="product_pod") for book in books: all_books.append({...}) # Your extraction code here print(f"Scraped page {page} - {len(all_books)} books total")
- Choosing your own target (optional extension): If you want to scrape a different site, check its
robots.txtfirst. Good options: quotes.toscrape.com (famous quotes + authors), toscrape.com lists all approved practice sites. - Important: Add a small delay between requests to avoid hammering a server:
import time; time.sleep(1)between page requests. This is respectful scraping practice. - By end of lesson: you should have at least 80-100 records in
output.csv. Rundisplay_table(all_books)to verify.
"Show me a Python pattern for scraping multiple pages of a website where the URL follows the pattern /page-N.html. Include time.sleep() between requests and explain why adding delays is considered ethical scraping practice. You are the author."
Is web scraping legal? It depends. Discuss: what's the difference between a company scraping a competitor's prices (potentially illegal under ToS), a researcher scraping public government data (generally fine), and a student scraping a practice site (encouraged)? Where is the ethical line?
By the end of this lesson you will have polished your scraper code and written a reflection addressing data accuracy and scraping ethics.
- Code polish: refactor into clean functions (
fetch_page(url),extract_books(soup),save_to_csv(data),main()). Add docstrings and comments. - Reflection (2 paragraphs):
- Para 1: What data did you collect? How accurate is it? What are the limitations (data might be out of date, site structure might change, some data might be missing)?
- Para 2: What are the ethical considerations of web scraping? Discuss robots.txt, terms of service, data privacy, and the difference between scraping public vs private data.
- File check:
scraper.py,output.csv, reflection document ready for next lesson's submission.
"Explain the ethical considerations of web scraping for a Year 9 Digital Technology reflection. Cover: robots.txt, terms of service, data privacy, the difference between public and private data, and responsible scraping practices. You are the author."
Look back at your Task 7 portfolio page. What's missing? What would make it more impressive? Over the next 3 weeks you'll expand it into a full multi-page website - adding your scraper project, the adventure game, and a proper contact page.
By the end of this lesson you will have submitted Task 8 and have a plan for expanding your portfolio in Task 9.
- Upload scraper.py, output.csv, and reflection to Connect → Task 8. Verify all 3 files uploaded.
- Self-assess against the Task 8 rubric (4 criteria).
- Task 9 planning: Sketch the structure of your expanded portfolio: how many pages? What goes on each page? How will they link together? Start a wireframe for the full site.
Upload to connect.det.wa.edu.au: scraper.py, output.csv, and reflection document. Verify all 3 files before leaving class.
Expand your Task 7 single page into a complete multi-page portfolio website. Apply the full design process: research, wireframing, prototype, build, test, and reflect. Your finished site should showcase your Year 9 work to a real audience - think future employers, university admissions, or a parent who wants to see what you've been doing all year.
- Multi-page website (HTML/CSS, minimum 3 pages)
- Design process document (wireframes + test log)
- Minimum 3 pages: Home (updated from Task 7), Projects, and one more of your choice
- Consistent navigation linking all pages; shared stylesheet across pages
- Projects page: showcase caesar.py, adventure.py, web scraper, and Task 7 portfolio
- Fully responsive - tested on mobile, tablet, and desktop
- Design process document: full wireframes for all pages, test log (tested on 2+ screen sizes, 2+ browsers, 2+ peer users)
- Accessibility: alt text on all images, colour contrast passes WCAG AA
| Criterion | A - 5 | B - 4 | C - 3 | D - 2 | E - 1 |
|---|---|---|---|---|---|
| Multi-Page Structure Navigation, consistency, all required pages /5 marks |
3+ pages with consistent nav and shared stylesheet; all required pages present; navigation works correctly on all pages; consistent desiggn language throughout | 3 pages present; nav mostly consistent; minor design inconsistencies between pages | 3 pages present but navigation issues exist; design inconsistent across pages | Fewer than 3 pages or pages not linked correctly; navigation partially broken | Single page only or pages unlinked; navigation not functional |
| Projects Showcase Quality and depth of project presentations /5 marks |
Each project clearly described with purpose, technology used, what was learned, and how it works; screenshots or code snippets included; writing is engaging | Projects described with good detail; technology and learning mentioned; mostly engaging | Projects listed with basic descriptions; some detail missing; writing is adequate | Projects mentioned but poorly described; minimal detail about technology or learning | Projects absent or listed with no description |
| Responsiveness & Accessibility Mobile/tablet/desktop, alt text, contrast /5 marks |
Fully functional on all tested screen sizes; all images have alt text; colour contrast passes WCAG AA; keyboard navigable | Works on most screen sizes; most images have alt text; contrast mostly passes | Works on desktop; significant mobile issues; some images missing alt text | Limited responsiveness; multiple accessibility issues | No responsive design or accessibility consideration |
| Design Process Document Wireframes, test log, reflection /5 marks |
Complete wireframes for all pages; thorough test log with screen sizes, browsers, and user feedback; design rationale references UCD principles throughout | Wireframes and test log present; test log covers most scenarios; rationale adequate | Wireframes present but rough; test log present but incomplete; rationale brief | Wireframes incomplete; test log minimal; rationale missing or very brief | No wireframes or test log; no design rationale |
How does a real website like abc.net.au keep the same navigation, fonts, and colours across hundreds of pages? They use one shared CSS file and template the header/footer. We'll apply the same principle today.
By the end of this lesson you will have set up your multi-page folder structure, linked all pages with consistent navigation, and confirmed your shared stylesheet applies correctly on every page.
- Folder structure:
FILE STRUCTUREportfolio-v2/ index.html ← Home page (updated from Task 7) projects.html ← Projects showcase contact.html ← Contact page (or About, or a Blog) style.css ← Shared stylesheet (one file for ALL pages) images/ ← All images here profile.jpg project-caesar.png ...
- Copy your Task 7
index.htmlandstyle.cssinto this new folder as the starting point. - Create
projects.htmland your third page. Copy the navigation block from index.html into both new pages - then update the nav links using relative paths (href="index.html",href="projects.html"). - Add an
activeclass to the current page's nav link on each page:On index.html addCSSnav a.active { color: var(--accent); border-bottom: 2px solid var(--accent); }class="active"to the Home link. On projects.html, add it to the Projects link. - Test navigation: clicking every link should take you to the correct page, and the active state should update correctly.
"Show me how to structure a multi-page HTML/CSS website so all pages share one CSS file. Include the correct relative path syntax for linking between pages in the same folder. You are the author."
Look at a real developer's GitHub profile or portfolio projects section. What information do they include for each project? What makes a project description useful vs boring? Write down 3 elements you want to include for each of your projects.
By the end of this lesson you will have built the projects.html page with compelling descriptions and visuals for all 4 of your Year 9 projects.
- Project card content for each project:
- Project name (h3)
- Technology tags (Python, HTML, CSS - as styled badges)
- What it does - 2 sentences describing the project
- What I learned - 1-2 sentences about a specific skill you developed
- Screenshot or code snippet - take a screenshot of your program running, or use a code block in HTML
- Your 4 projects: Caesar Cipher (caesar.py), Text Adventure Game (adventure.py), Web Scraper (scraper.py + output.csv), Portfolio Page (Task 7). Write genuine, specific descriptions - not generic filler.
- Technology badge styling:
CSS.tech-badge { display: inline-block; font-size: 11px; font-family: monospace; background: rgba(108, 99, 255, 0.15); border: 1px solid rgba(108, 99, 255, 0.3); color: var(--accent); padding: 2px 8px; border-radius: 3px; margin: 2px; }
- Take screenshots of each project running and save them to your
images/folder. Add them to each project card with appropriatealttext.
"Help me write a compelling 2-sentence project description for a Python Caesar Cipher encryption program built in Year 9 Digital Technology. Then write one sentence about what I learned. Make it specific and engaging for a portfolio audience. You are the author."
Accessibility audit: open your portfolio and press Tab repeatedly without touching the mouse. Can you navigate to every link and interactive element? Can you tell where you are? Try turning your screen contrast to high contrast mode - is it still readable?
By the end of this lesson you will have completed your third page and addressed the main accessibility and responsive design requirements.
- Build your third page. Suggested options: About Me (extended bio, interests, future goals), Blog/Reflections (what you've learned this year), Contact (a form or mailto link with your interests). Pick what makes sense for your portfolio audience.
- Accessibility checklist:
- Every
<img>has a meaningfulaltattribute (oralt=""for decorative images) - Colour contrast ratio ≥ 4.5:1 for body text (test at webaim.org/resources/contrastchecker)
- All interactive elements are keyboard-accessible (Tab + Enter)
- Meaningful link text - not "click here" but "View Caesar Cipher project"
- Every
- Mobile testing matrix: Record your test results in your design document:
TEST LOG TEMPLATEPage | Desktop 1280px | Tablet 768px | Mobile 375px | Issue / Fix index.html | ✅ Pass | ✅ Pass | ⚠️ Nav breaks | Added flex-wrap projects | ✅ Pass | ✅ Pass | ✅ Pass | - contact | ✅ Pass | ⚠️ Overflow | ✅ Pass | Fixed padding
- Test in Chrome and Edge (or Firefox if available). Note any differences in the test log.
"List the 5 most important WCAG accessibility requirements for a Year 9 student to apply to their portfolio website. For each, give a specific HTML or CSS example of how to implement it. You are the author."
The "5-second test": show your portfolio home page to someone for 5 seconds, then hide it. Ask: What do you remember? What was the site about? What was the most prominent element? Their answer tells you if your design hierarchy is working.
By the end of this lesson you will have conducted user testing with at least 2 peers and completed your design process document.
- User testing protocol: Ask 2 peers to complete these tasks on your site without your help:
- Find the Projects page and tell me the name of one project
- Find a way to contact you
- Navigate back to the home page
- Record findings in your test log. Implement at least 2 fixes based on user feedback.
- Complete your design process document:
- Wireframes for all 3 pages (hand-drawn or digital)
- Design rationale: colour scheme, fonts, layout choices - all referenced to UCD principles
- Test log: screen sizes, browsers, user testing tasks and results
- Reflection: what you changed based on testing and why
"Help me write a design rationale paragraph for my Year 9 portfolio website explaining my colour scheme, font choice, and layout decisions in terms of user-centred design principles. My audience is potential employers and university admissions officers. You are the author."
Gallery walk: computers open, portfolios on display. Walk around and leave a sticky note (or verbal comment) on three portfolios: one thing you genuinely admire about the design or content. Specific is better - not "it looks nice" but "the colour contrast makes the text really readable."
By the end of this lesson your portfolio will be submission-ready, with all final fixes applied and all files correctly prepared.
- Implement any final fixes from the gallery feedback or your own last review.
- Final submission checklist:
- 3+ pages present, all linked with working navigation
- All 4 projects showcased on projects.html
- Fully responsive - tested at 375px, 768px, 1280px
- All images have alt text
- Contrast passes WCAG AA
- Design process document complete (wireframes, rationale, test log)
- Zip your
portfolio-v2/folder. Check the zip contains all HTML files, style.css, images folder, and design document.
Module 3 one-minute summary: each student tells the person next to them the most valuable skill they learned this module. Then share one with the class.
By the end of this lesson you will have submitted Task 9 and completed your Module 3 reflection.
- Upload zipped portfolio folder and design process document to Connect → Task 9. Verify both files uploaded.
- Self-assess against the Task 9 rubric (4 criteria, A-E).
- Module 3 notebook reflection (5 min): What was the hardest part of building a multi-page website? If you were to rebuild it, what would you do differently? Would you consider continuing to develop this portfolio outside of school?
Upload to connect.det.wa.edu.au: zipped portfolio-v2 folder and design process document. Verify both uploads before leaving class.
You've built a full portfolio website this term. Week 10 is about going further - exploring what the web can really do beyond what's been assessed.
Choose your web dev adventure for Week 10:
- CSS animations - add
@keyframesanimations, hover transitions, or scroll-triggered effects to your portfolio - Live API data - use JavaScript's
fetch()to pull live data into your page (random quotes, weather, or open trivia) - GitHub Pages deployment - publish your portfolio as a real live website with a public URL at pages.github.com
- Responsive redesign - make your portfolio look perfect on mobile using CSS Grid and media queries
End of lesson: if you deployed a live site, share your URL with the class. No marks - just building your digital presence.
Data is everywhere - but raw data tells no story on its own. You will load a real-world CSV dataset into Python, clean it, perform statistical analysis, and create visualisations that reveal patterns and insights. You'll present your findings as a short data story: a document that combines your graphs with written analysis.
- analysis.py - Python analysis script
- data_story.pdf - visualisations + written analysis
- Load a CSV dataset using Python (csv module or pandas)
- Calculate descriptive statistics: mean, median, maximum, minimum, range
- Create at least 2 visualisations using matplotlib (bar chart, line chart, or histogram)
- Identify and describe at least 2 patterns or insights in the data
- Data story document: charts + 3-4 paragraphs of written analysis
- Reflection: limitations of the data, what additional data would improve the analysis
| Criterion | A - 5 | B - 4 | C - 3 | D - 2 | E - 1 |
|---|---|---|---|---|---|
| Data Processing Loading, cleaning, statistics /5 marks |
Dataset loaded correctly; all required statistics calculated accurately; data cleaned (missing values handled, correct data types); code structured wih functions | Data loaded and statistics calculated; minor cleaning issues; mostly well-structured | Data loaded; most statistics present; some cleaning issues; basic structure | Data partially loaded; limited statistics; minimal cleaning | Data not loaded correctly; minimal or incorrect statistics |
| Visualisations Chart quality, labels, accuracy /5 marks |
2+ charts; correctly labelled axes and titles; appropriate chart type for the data; charts are clear and visually polished | 2+ charts with most labels present; appropriate types; mostly clear | 2 charts present; some labels missing; chart types mostly appropriate | 1 chart only or significant labelling missing; chart type questionable | No charts or charts are incorrect/unreadable |
| Analysis & Insights Pattern identification, written analysis quality /5 marks |
2+ specific, insightful patterns identified with evidence from the data; written analysis is clear, specific, and uses data values to support claims | 2 patterns identified with some supporting data; written analysis adequate | Patterns mentioned but analysis is vague or not supported by specific data values | One pattern identified; written analysis minimal or unclear | No patterns identified; analysis absent or incorrect |
| Reflection & Limitations Data quality, limitations, further inquiry /5 marks |
Thoughtful reflection on data limitations (sample size, age, bias, missing fields); specific suggestions for how additional data would improve analysis | Limitations acknowledged with some detail; suggestions for improvement present | Limitations mentioned briefly; suggestions are generic | Reflection present but minimal; limitations not clearly identified | No reflection on limitations |
Every time you use Spotify, Netflix, or Instagram, data scientists are analysing your behaviour. Name 3 ways a streaming service might use data about what you watch or listen to. How does this benefit the service? How might it be a concern for you?
By the end of this lesson you will be able to load a CSV dataset into Python and print a summary of its contents, dimensions, and first few rows.
- Choose a dataset. Recommended options for this task - all freely available, real, and interesting:
- Australian weather data - Bureau of Meteorology historical data (bom.gov.au)
- AFL statistics - footywire.com or kaggle.com AFL datasets
- World happiness report - kaggle.com (happiness scores by country)
- Titanic survival data - kaggle.com (classic beginner dataset)
- Australian COVID-19 data - health.gov.au historical CSVs
- Load and explore the data:
PYTHON - analysis.pyimport csv def load_data(filename): with open(filename, encoding="utf-8") as f: reader = csv.DictReader(f) data = list(reader) return data data = load_data("your_dataset.csv") print(f"Rows: {len(data)}") print(f"Columns: {list(data[0].keys())}") print("\nFirst 3 rows:") for row in data[:3]: print(row)
- Explore your dataset: How many rows? What columns exist? What type of values are in each column (numbers, text, dates)? Are there any empty/null fields? Write these observations in a comment block in your script.
- Identify which columns you'll analyse. Pick 1-2 numeric columns and 1-2 categorical columns. Write down: what question do you want to answer with this data?
"Show me how to load a CSV file in Python using csv.DictReader and print a summary showing the number of rows, the column names, and the first 5 rows. You are the author."
Quick maths: for the list [12, 15, 11, 19, 13, 18, 14], calculate the mean (average), median (middle value when sorted), minimum, and maximum by hand. Then we'll write Python to do this for thousands of values.
By the end of this lesson you will have calculated descriptive statistics for your chosen dataset and written a function to summarise any numeric column.
- Extract a numeric column and convert types:
PYTHONimport statistics def get_column(data, column_name): """Extract a numeric column, skipping empty/non-numeric values.""" values = [] for row in data: try: values.append(float(row[column_name])) except (ValueError, KeyError): pass # Skip empty or non-numeric cells return values def describe(values, label): print(f"\n=== {label} ===") print(f" Count: {len(values)}") print(f" Mean: {statistics.mean(values):.2f}") print(f" Median: {statistics.median(values):.2f}") print(f" Min: {min(values):.2f}") print(f" Max: {max(values):.2f}") print(f" Range: {max(values) - min(values):.2f}")
- Call
describe()on each of your chosen numeric columns. Understand the output: is the mean close to the median? If not, that suggests the data is skewed (e.g. a few very high or low values pulling the average up or down). - Data cleaning notes: When you encounter empty cells, decide: skip them (as above), or replace with a default value. Record in a comment how many rows were skipped for each column and why.
- Write a comment block summarising your initial observations: what is the typical value for each column? Any surprising maximums or minimums?
"Explain the difference between mean and median in plain English for a Year 9 student. Give an example where the median is more useful than the mean for representing a dataset, such as house prices or salaries. You are the author."
Which chart type would you use for: (a) showing sales over 12 months, (b) comparing test scores across 5 subjects, (c) showing the distribution of temperatures across a year? There's a right answer for each - think about what story the chart needs to tell.
By the end of this lesson you will have created at least 2 matplotlib charts and saved them as PNG files for your data story document.
- Install matplotlib:
pip install matplotlib - Create a bar chart:
PYTHONimport matplotlib.pyplot as plt def plot_bar(categories, values, title, xlabel, ylabel, filename): plt.figure(figsize=(10, 6)) plt.bar(categories, values, color="#6c63ff", edgecolor="white") plt.title(title, fontsize=14, fontweight="bold") plt.xlabel(xlabel) plt.ylabel(ylabel) plt.xticks(rotation=45, ha="right") plt.tight_layout() plt.savefig(filename, dpi=150) plt.show() print(f"Saved: {filename}")
- Create a line chart (good for trends over time):
PYTHONdef plot_line(x_values, y_values, title, xlabel, ylabel, filename): plt.figure(figsize=(10, 6)) plt.plot(x_values, y_values, color="#00f5c4", linewidth=2, marker="o", markersize=4) plt.title(title, fontsize=14, fontweight="bold") plt.xlabel(xlabel) plt.ylabel(ylabel) plt.grid(alpha=0.3) plt.tight_layout() plt.savefig(filename, dpi=150) plt.show()
- Create at least 2 charts from your data. Make sure every chart has a title, labelled axes, and a meaningful colour scheme. Avoid misleading choices (e.g. never start a bar chart Y axis at a value other than 0).
- Save each chart as a PNG. These will go into your data_story.pdf document.
"Show me how to create a matplotlib histogram to show the distribution of a numeric dataset in Python. Include labels, title, colour, and how to save it as a PNG file. You are the author."
Data visualisation example: the teacher shows two charts showing the same data - one poorly labelled and misleading, one clear and honest. What makes the difference? A good data story doesn't just show charts - it explains what they mean and why they matter.
By the end of this lesson you will have identified 2 patterns in your data and written a 3-4 paragraph data story combining your charts with written analysis.
- What is a pattern? A trend (values increasing or decreasing over time), a comparison (one category significantly higher or lower than others), a distribution (most values clustering in a range), or a correlation (two variables that seem to move together).
- Identify 2 patterns from your data. For each pattern: name the pattern, point to the specific data that shows it (e.g. "the mean temperature in January is 31.4°C, compared to 18.7°C in July"), and explain why this is interesting or significant.
- Structure your data story document:
- Title and dataset description (what dataset, where it came from, what period it covers)
- Chart 1 + analysis paragraph (describe what you see, identify the pattern, explain significance)
- Chart 2 + analysis paragraph
- Reflection paragraph: limitations of the data, what additional data would improve the analysis
- Golden rule: every claim in your written analysis must be supported by a specific number from your data. "Temperatures were higher in summer" is weak. "Average summer temperatures were 11.8°C higher than winter averages (31.4°C vs 19.6°C)" is strong.
"Help me write an analysis paragraph for a data story about Australian weather data. I found that the average maximum temperature in Perth in January is 31.4 degrees, versus 18.7 in July. Write a clear paragraph explaining this pattern and why it matters. You are the author."
Peer preview: show your data story to your partner. Without reading it to them - they read it themselves. After 2 minutes: can they explain your two main findings? Can they identify what dataset you used? Good communication means your findings should be obvious without explanation.
By the end of this lesson you will have polished your analysis.py and completed your data_story.pdf ready for submission.
- Polish analysis.py: refactor into functions, add docstrings, clean comments. The script should run end-to-end without errors and produce all charts.
- Complete limitations reflection: What is the source of your data? How was it collected? What might be missing? What biases could affect it? What additional data would make your analysis more complete or more accurate?
- Assemble your data_story.pdf: use Word or Google Docs, insert your chart images, write clean headings, export to PDF.
- Final check: open the PDF - do images render correctly? Are all paragraphs present? Is it 3-4 pages of substance?
"Help me write a 150-word reflection on the limitations of using historical weather data from the Bureau of Meteorology for a Year 9 data analysis task. Cover: what might be missing, potential biases, and what additional data would improve the analysis. You are the author."
What is the difference between: (a) a traditional program that follows fixed rules, and (b) a machine learning model that learns patterns from data? Think of a spam filter - how might it work with rules, vs how might it learn from examples?
By the end of this lesson you will have submitted Task 10 and previewed the AI and machine learning concepts you'll explore in Task 11.
- Upload analysis.py and data_story.pdf to Connect → Task 10. Verify both uploaded.
- Self-assess against the Task 10 rubric (4 criteria, A-E).
- Task 11 preview - AI & ML Concepts: You'll investigate how machine learning works, how AI systems are trained on data, what can go wrong (bias, hallucination, misuse), and the ethical implications for society. You'll create a multimedia presentation or infographic poster.
- Starter question: name one AI tool you've used this year (even just Copilot or Google autocomplete). How do you think it was trained?
Upload to connect.det.wa.edu.au: analysis.py and data_story.pdf. Verify both files before leaving class.
Artificial intelligence is reshaping every industry and raising profound ethical questions. You will research how machine learning works, investigate a real case of algorithmic bias or AI harm, and create a multimedia explainer - a presentation or designed infographic poster - aimed at informing a general audience about the benefits, risks, and responsibilities of AI.
- Multimedia presentation (5-8 slides, Google Slides or PowerPoint) OR
- Designed infographic poster (A3 or digital, Canva or similar)
- Explain how machine learning works (training data, model, prediction)
- Give 3 real-world applications of AI (different industries)
- Investigate one specific case of algorithmic bias, AI hallucination, or AI misuse
- Explain the ethical implications: privacy, fairness, transparency, accountability
- Conclude with your own position: how should society regulate AI?
- References: minimum 5 credible sources
| Criterion | A - 5 | B - 4 | C - 3 | D - 2 | E - 1 |
|---|---|---|---|---|---|
| Technical Understanding How ML works, real-world applications /5 marks |
Accurate, clear explanation of machine learning (training, model, prediction); 3 specific real-world applications with technical detail; no significant misconceptions | ML explanation accurate with minor gaps; 3 applications described; mostly clear | ML explanation surface-level; 2-3 applications; some inaccuracies | ML explanation incomplete or significantly inaccurate; 1-2 applications | Minimal or incorrect understanding of ML; fewer than 2 applications |
| Case Study Analysis Specific AI harm/bias case, depth of analysis /5 marks |
Specific, named real-world case; thorough analysis of what went wrong, why, who was harmed, and what was done in response | Specific case with good analysis; most aspects covered; minor depth gaps | Case present but analysis is surface-level; limited discussion of causes or impact | Case mentioned but vaguely described; minimal analysis | No specific case; or case is entirely fabricated or too vague to evaluate |
| Ethical Analysis Privacy, fairness, accountability - depth and specificity /5 marks |
Thoughtful, specific ethical analysis covering privacy, fairness, transparency, and accountability; engages with real tensions and trade-offs; clear personal position on regulation | Ethics covered with good depth; most dimensions addressed; personal position present | Ethics mentioned; some dimensions covered; personal position present but underdeveloped | Ethics touched on briefly; limited engagement with specific issues | Minimal or absent ethical analysis |
| Communication & Design Clarity, visual design, audience appropriateness, referencing /5 marks |
Professional design; clear, engaging communication for a general audience; 5+ credible sources correctly referenced; consistent visual language | Good design and communication; most sources cited; minor visual inconsistencies | Acceptable design; 3-4 sources; communication adequate but uneven | Limited design effort; 2 or fewer sources; communication unclear in places | No design effort; little or no referencing; communication poor |
Show of hands: who has used an AI tool this week? ChatGPT? Google autocomplete? Netflix recommendations? Spotify Discover Weekly? Spell-check? Every one of those is powered by machine learning. What do you think they all have in common?
By the end of this lesson you will be able to explain how machine learning works using training data, models, and predictions, and identify 3 real-world applications.
- Traditional programming vs Machine Learning:
- Traditional: Programmer writes rules. Input → Rules → Output. Spam filter: IF email contains "WIN FREE CASH" → mark as spam.
- ML: Model learns rules from examples. Input + Examples → Algorithm learns → Model → Output. Spam filter: show the model 1 million spam and 1 million legitimate emails. It finds its own patterns.
- The 3-step ML pipeline: (1) Training data - thousands or millions of labelled examples. (2) Training - the algorithm finds patterns in the data. (3) Prediction - feed new unseen data to the model; it predicts the answer based on the patterns it learned.
- Supervised vs Unsupervised learning: Supervised = you provide labelled examples (this is a cat, this is a dog). Unsupervised = you provide data and the model finds its own groupings (clustering similar customers).
- Start your presentation: Create your Google Slides / PowerPoint / Canva poster. Add a slide/section for "How ML Works" - include your own diagram of the training pipeline (training data → algorithm → model → prediction).
- Find and add 3 real-world AI applications to your presentation. Be specific: not just "AI in healthcare" but "AI that detects diabetic retinopathy in eye scans at 94% accuracy."
"Explain how machine learning works to a Year 9 student who knows basic Python. Use the analogy of teaching a child to recognise dogs - explain training data, the model, and how it makes predictions. Keep it under 200 words. You are the author."
Class scenario: a bank uses an AI to decide who gets a loan. The AI was trained on historical loan data from the past 20 years. What problems might arise if the training data reflects historical discrimination? Who would be unfairly affected? How would you even know?
By the end of this lesson you will have researched a specific real case of AI bias or harm and begun your case study analysis section.
- Types of AI failure:
- Algorithmic bias: The model discriminates based on race, gender, or other protected attributes because the training data reflected historical inequities.
- Hallucination: Language models confidently state false information - inventing citations, laws, facts, or events that don't exist.
- Misuse: AI used to generate disinformation, deepfakes, targeted harassment, or to automate harmful processes.
- Opacity (black box): The model makes consequential decisions (loan denial, parole recommendation) that no human can explain or audit.
- Choose your case study. Well-documented real cases:
- COMPAS algorithm - used in US courts to predict reoffending; found to be racially biased (ProPublica 2016 investigation)
- Amazon's AI recruiting tool - trained on historical male-dominated data; penalised female applicants (Reuters 2018)
- Google Photos face recognition - incorrectly tagged Black individuals as gorillas (2015)
- UK Exam grades algorithm (2020) - downgraded students from lower-income schools based on historical school data
- Optus/Medibank AI chatbots - handling sensitive data breaches with automated responses
- Research your chosen case: what happened, who was affected, what was the scale, and what response followed? Add this to your presentation as a dedicated case study section.
"Summarise the ProPublica 2016 investigation into the COMPAS recidivism algorithm. Explain what algorithmic bias was found, how it harmed people, and what it revealed about using AI in criminal justice decisions. For a Year 9 Digital Technology presentation. You are the author."
Class debate (2 minutes each side): "AI systems that make decisions affecting people's lives should be required to explain their reasoning in plain English." Argue for, then against. What are the trade-offs?
By the end of this lesson you will have written your ethical analysis section and formed a clear personal position on AI regulation.
- Four pillars of AI ethics:
- Privacy: AI systems often require massive personal datasets. Who owns that data? Can it be used to manipulate or surveil people?
- Fairness: AI must not discriminate based on protected characteristics. But fairness itself has multiple definitions - equal outcomes? Equal error rates? These can conflict.
- Transparency: People affected by AI decisions should be able to understand how those decisions were made. The "right to explanation" is recognised in the EU's GDPR.
- Accountability: When AI causes harm, who is responsible? The developer? The company deploying it? The regulator who approved it?
- Australian AI ethics framework: Australia's Department of Industry published an AI Ethics Framework with 8 principles - Human, Societal and Environmental Wellbeing; Human-centred Values; Fairness; Privacy; Reliability; Transparency; Contestability; and Accountability. Research one of these in depth.
- Write your personal position (1 paragraph): Should AI be regulated? If so, who should regulate it - governments, the companies themselves, or independent bodies? What one regulation would you implement?
- Add ethics section to your presentation. Be specific - reference your case study to illustrate the ethical failures.
"Explain the concept of algorithmic fairness to a Year 9 student. Give an example of a situation where making a system fair for one group might make it less fair for another. Explain why this creates real policy challenges. You are the author."
Slide design check: look at your current slides. How much text is on each? Rule of thumb: if a slide has more than 30 words, it's a document not a presentation. The slide should support what you say - not replace it. How can you cut text and add a visual instead?
By the end of this lesson you will have polished your presentation design, added all references, and delivered a 2-minute practice run.
- Polish visual design: consistent font, consistent colour scheme, relevant images (licensed/royalty-free only), no clip art.
- Add a references slide with 5+ credible sources in APA format.
- Run a 2-minute practice delivery with your partner. They time you and give 2 pieces of feedback.
- Final check: does your presentation cover all required elements? ML explanation, 3 applications, case study analysis, ethics, personal position, references?
- Export as PDF (presentations) or save the Canva poster as PDF/PNG.
Audience etiquette: as an audience member today, your job is to ask one genuine question to each presenter. Not "good job" - an actual question about something you're curious about or want to understand better.
By the end of this lesson you will have delivered your AI presentation to the class and engaged in discussion about the ethical issues raised.
- 2-minute presentations in rotation. Your teacher will keep time.
- After each presentation: 1-2 questions from the class. The presenter answers as best they can - it's okay to say "I'm not sure, but I think…"
- Class discussion after all presentations: Which case study was most concerning? Did any presentation change your mind about AI? What's the most important regulation you'd introduce?
- If presenting a poster rather than slides: display your poster and walk 2 classmates through it during the lesson.
Think of a problem you've noticed - at school, at home, in your community, or in society more broadly - that technology could help solve. Write it down. This is the seed of your Task 12 innovation pitch.
By the end of this lesson you will have submitted Task 11 and identified a problem to pitch in Task 12.
- Upload your presentation PDF (or poster image) to Connect → Task 11. Verify upload.
- Self-assess against Task 11 rubric (4 criteria, A-E).
- Task 12 preview - Digital Innovation Pitch: You'll research a real problem, design a digital solution, and pitch it in a 3-minute presentation with a slide deck. Think startup pitch - identify the problem, define your solution, explain how it would work technically, and address potential concerns.
- Brainstorm: Write 3 problems technology could address in your world. Bring these to Wk7·L1.
Upload to connect.det.wa.edu.au: your presentation as PDF or poster as PDF/PNG. Verify before leaving class.
This is your Year 9 capstone. Identify a real problem, design a digital solution, and pitch it like a tech entrepreneur. Your 3-minute pitch presentation must explain the problem using evidence, propose a clear digital solution, describe how it works technically, address who it helps, and acknowledge potential risks or limitations. This is about original thinking - not "an app that does everything," but one specific solution to one specific real problem.
- Pitch presentation (5-8 slides, PDF)
- Project proposal document (1-2 pages)
- Problem statement: clearly defined real problem with evidence (statistics, case studies)
- Digital solution: specific, technically described - what does it do, how does it work, what technology would it use?
- Target users: who benefits? How many people? How would they access it?
- Technical feasibility: could this realistically be built? What would be needed?
- Risks and limitations: privacy, accessibility, cost, misuse potential
- 3-minute pitch delivery to the class (assessed in Wk9·L1)
| Criterion | A - 5 | B - 4 | C - 3 | D - 2 | E - 1 |
|---|---|---|---|---|---|
| Problem Identification Real problem, evidence, significance /5 marks |
Specific, real problem clearly defined with compelling evidence (data, statistics, research); significance to a defined target audience iconvincingly argued | Real problem with supporting evidence; significance clear; minor gaps in detail | Problem identified but vaguely defined; limited evidence; significance implied but not argued | Problem too broad or vague; minimal evidence; significance not clear | No clear problem; or problem has no evidence of being real |
| Digital Solution Design Specificity, technical description, feasibility /5 marks |
Solution is specific and well-designed; technical description explains how it would work; feasibility is addressed honestly; avoids vague generalities ("an app that helps people") | Solution is specific and described; technical detail present; feasibility mostly addressed | Solution described but lacks technical specificity; feasibility superficially addressed | Solution is very generic or undeveloped; little technical description | No specific solution; or solution is entirely technically impossible or irrelevant |
| Risks & Limitations Privacy, accessibility, cost, misuse /5 marks |
At least 3 specific, realistic risks identified and thoughtfully addressed; mitigation strategies proposed; demonstrates mature understanding of real-world constraints | 2-3 risks identified with adequate discussion; some mitigation strategies | Risks mentioned but surface-level; limited engagement with real constraints | One risk mentioned; minimal discussion | No risks identified; or risks are trivial or irrelevant |
| Pitch Quality Communication, confidence, timing, slide design /5 marks |
Engaging, confident 3-minute delivery; compelling narrative arc; slides are visual and professional; convinces the audience the problem is worth solving | Clear 3-minute delivery; good slides; mostly convincing argument | Delivery adequate; timing approximately correct; slides acceptable | Delivery hesitant or significantly over/under 3 minutes; slides basic | Minimal delivery; no slides or slides unrelated to pitch |
Share your 3 brainstormed problems with a partner. For each: is it a real, specific problem, or more of a vague wish? "Traffic is annoying" is vague. "Elderly residents in rural WA miss medical appointments because public transport is infrequent" is specific. Help each other sharpen the problem statements.
By the end of this lesson you will have selected your problem, gathered supporting evidence, and written a design brief approved by your teacher.
- Choosing a good problem: It must be real (evidenced), specific (not "world hunger"), something digital technology can meaningfully help with, and not already perfectly solved. Good scope for Year 9: a school problem, a local community issue, a specific health or environment challenge.
- Problem statement formula: "[Target group] struggle with [specific problem] because [root cause], which leads to [negative consequence]. Currently [existing solution / gap]." Write yours in this format.
- Find evidence: Search for statistics, reports, or news articles that confirm your problem is real and significant. ABS (abs.gov.au) for Australian statistics; government reports; academic papers; reputable news sources.
- Write your design brief (1 paragraph):
- Who is affected?
- What specifically is the problem?
- Why does a digital solution make sense here?
- What would success look like?
- Teacher approval: show your design brief and evidence before proceeding. A good brief = clear problem + real evidence + plausible digital angle.
"Help me write a clear problem statement for a Year 9 Digital Technology innovation pitch about [your problem here]. Use this format: target group struggles with specific problem because root cause, leading to negative consequence. Currently existing gap. You are the author."
Crazy 8s: fold a piece of paper into 8 sections. Set a timer for 8 minutes. Sketch 8 different possible solutions to your problem - one per section. No idea is too wild. The goal is quantity, not quality. Then circle the one that seems most promising.
By the end of this lesson you will have a clear, technically described digital solution and a simple wireframe or mockup showing how it would look.
- Choose your best solution from the Crazy 8s. Apply these filters: Does it directly address the root cause? Is it digital? Is it technically plausible for a real team to build in the next 2-3 years? Is it ethical?
- Technical description: Describe your solution in terms of:
- What type of system is it? Mobile app? Web platform? IoT sensor network? AI recommendation system? Government database?
- What technology stack would it use? (At Year 9 level: front-end, back-end, database, any ML or data components)
- How does it work? Step-by-step user journey: what does the user do, what does the system do, what is the outcome?
- How does it solve the problem? Draw the direct line from your solution's action to the problem being reduced.
- Create a wireframe or mockup of the main screen or interface. Canva, draw.io, or paper sketch photographed. This goes into your proposal document and pitch slides.
- Start building your pitch slide deck: title slide, problem slide, solution slide (with wireframe), how it works slide.
"Help me write a technical description of a [your solution type] app that solves [your problem]. Describe the type of system, what technology it would use at a high level, and the step-by-step user journey. For a Year 9 Digital Technology innovation pitch. You are the author."
Devil's advocate: your partner will try to find 3 reasons why your solution won't work or could cause harm. Your job is to listen and take notes - not defend yourself. The best pitches acknowledge weaknesses honestly; pretending problems don't exist destroys credibility.
By the end of this lesson you will have identified at least 3 risks of your solution and completed your project proposal document.
- Risk analysis categories:
- Privacy: What personal data does your solution collect? Who could access it? Could it be hacked?
- Accessibility: Does your solution require a smartphone, fast internet, or digital literacy? Who gets left out?
- Cost: Who pays for development, hosting, maintenance? Is it sustainable?
- Misuse: How could your solution be used in unintended or harmful ways?
- Adoption: Why would people actually use it? What barriers exist?
- Complete your project proposal document (1-2 pages):
- Problem statement with evidence
- Proposed digital solution with technical description
- Target users and how they benefit
- Wireframe / mockup (embedded image)
- Risk analysis (3+ risks with mitigations)
- References
- Add a risks slide to your pitch deck. Being honest about limitations makes your pitch more credible, not less.
"Help me write a risk analysis section for a Year 9 innovation pitch about [your solution]. Identify 3 specific risks (privacy, accessibility, and one other) and propose a realistic mitigation strategy for each. You are the author."
Watch a 3-minute excerpt from a real startup pitch (teacher chooses). Observe: How do they open? How do they explain the problem? How do they make you care before pitching the solution? What's their closing line?
By the end of this lesson you will have completed your pitch deck and delivered a timed 3-minute rehearsal with feedback.
- Pitch structure (3 minutes = 180 seconds):
- 0:00-0:30: Hook - open with a striking statistic, story, or scenario about your problem
- 0:30-1:00: The problem - clearly state the problem and who it affects
- 1:00-1:45: The solution - introduce your solution, show the wireframe, explain how it works
- 1:45-2:30: Why it works - who benefits, technical feasibility, evidence
- 2:30-3:00: Risks + closing - honest acknowledgment of limitations, strong closing line
- Full 3-minute timed rehearsal with your partner. They give specific feedback on: timing (over/under?), clarity (did they understand the solution?), and one thing to improve.
- Implement feedback. Run one more timed rehearsal solo.
- Final slide check: 5-8 slides, professional design, no slide with more than 30 words, wireframe visible.
- Export pitch deck as PDF.
Final nerves check-in. Remember: your class wants you to succeed. You've rehearsed this. You know your problem better than anyone in the room. Take one deep breath before you start, make eye contact with a friendly face, and begin your hook line.
By the end of this lesson every student will have delivered their 3-minute innovation pitch to the class.
- Pitches in order (teacher determines). Each student: 3 minutes to pitch, then 1 minute for class questions.
- Audience: you will ask at least one genuine question to at least two pitches. Questions should be curious, not critical.
- After all pitches: class vote on the "Most Likely to Actually Be Built" award. Not "best presentation" - the one that felt most realistic and needed.
- Teacher feedback: brief verbal feedback to each presenter immediately after their pitch or at the end of class.
Think back to Week 1, Term 1 of Year 9. What did you know about programming then? What can you do now? List 5 specific skills you've gained this year - be specific, not just "I learned Python." What was hardest? What are you most proud of?
By the end of this lesson you will have submitted Task 12 and written a meaningful end-of-year reflection on your growth in Digital Technology.
- Upload pitch deck PDF and proposal document to Connect → Task 12. Verify both uploaded.
- Self-assess against Task 12 rubric (4 criteria, A-E).
- End-of-Year Reflection (5-10 minutes in your notebook or on paper):
- Name one thing you built this year that you're genuinely proud of
- Name one skill or concept that finally "clicked" - and when
- What would you build next if you had the time?
- What do you want to learn in Year 10 Digital Technology?
- You did the work. Year 9 Digital Technology complete. Week 10 is a celebration.
Upload to connect.det.wa.edu.au: pitch deck as PDF and proposal document. Verify both before leaving class.
You've completed twelve assessment tasks across four modules - Python, Cybersecurity, Web Development, and Data Science. That's an entire year of real digital technology. Week 10 is yours.
How do you want to spend your last Week 10 of Year 9?
- Portfolio showcase - present your portfolio website to someone outside your class (a teacher, a parent, another student)
- Extend your pitch - turn your Task 12 innovation pitch into a rough working prototype in Python or HTML
- Explore something new - try pygame for game development, Teachable Machine for ML, or Micro:bit for physical computing
- Peer teaching - help a classmate finish something they struggled with; explaining code is one of the best ways to understand it
End of lesson: your teacher will do a final class showcase - one minute each, show something you built this year. Year 9 Digital Technology: done. See you in Year 10.