← Back to Learning Hub

Lesson 2: Year 11 Knowledge Assessment

Understanding Your Current Programming Foundation

⏱️ Duration: 90 minutes 📊 Type: Assessment 🎯 Goal: Identify Strengths & Gaps

Welcome to Your Year 11 Knowledge Assessment

This isn't a test - it's a conversation to identify what you know well and what needs reinforcement.

Important: Be honest!

Part 1: Algorithms & Problem-Solving 20 minutes

Activity 1.1: Design Before Code

Design the solution before writing any code.

🎯 The Library Late Fee Challenge

Scenario: A library needs a system to calculate late fees for overdue books.

Rules:

  • First 7 days overdue: $0.50 per day
  • Days 8-14: $1.00 per day
  • After 14 days: $2.00 per day
  • Maximum fee: Caps at $25.00

Your Task: Design the solution using either a flowchart OR pseudocode (your choice). Don't write Python code yet!

Discussion Questions (After You Design):

  • What are the inputs to this algorithm?
  • What are the outputs?
  • What happens if someone returns a book on time (0 days late)?
  • How would you test this works correctly?
  • What edge cases should we consider?

Activity 1.2: Analyze Existing Algorithm

Read and analyze this pseudocode.

Pseudocode: Discount Calculator
FUNCTION calculate_discount(purchase_amount, is_member)
    discount = 0

    IF is_member = TRUE THEN
        IF purchase_amount >= 100 THEN
            discount = purchase_amount * 0.20
        ELSE IF purchase_amount >= 50 THEN
            discount = purchase_amount * 0.10
        ELSE
            discount = purchase_amount * 0.05
        END IF
    ELSE
        IF purchase_amount >= 100 THEN
            discount = purchase_amount * 0.10
        END IF
    END IF

    RETURN discount
END FUNCTION

Analysis Questions:

  • What does this algorithm do? Explain in your own words.
  • What are the inputs and outputs?
  • Walk me through: What happens if a member buys $75 worth of items?
  • What discount does a non-member get if they spend $80?
  • Can you identify the selection structures (IF statements) in this code?

Part 2: Data Types & Structures 15 minutes

Activity 2.1: Choose the Right Data Structure

For each scenario, choose the best data structure and explain why.

Scenario 1: Class Roster

You need to store student names in a class roster. You'll frequently check if a student exists in the class.

Options: List, Set, Dictionary

Your choice: __________

Why? __________

Scenario 2: Undo Feature

You're implementing an "undo" feature in a text editor. The most recent action should be undone first.

Options: List, Stack, Queue

Your choice: __________

Why? __________

Scenario 3: Printer Queue

Managing a printer queue where documents print in the order they were submitted.

Options: List, Stack, Queue

Your choice: __________

Why? __________

Scenario 4: Student Records

Storing student records where you need to quickly look up a student by their ID number.

Options: List, Dictionary, Set

Your choice: __________

Why? __________

Activity 2.2: Data Types Discussion

Answer these questions about Python data types:

Question 1:

What's the difference between an integer and a float? Give examples.

Question 2:

When would you use a string vs a character?

Question 3:

What's a Boolean? Give me an example of when you'd use one in your code.

Question 4:

What happens if you try to add a string and an integer in Python? (e.g., "hello" + 5)

Question 5:

Do you know what LIFO and FIFO mean? Where are they used?

Part 3: Software Development Methodologies 10 minutes

Activity 3.1: Waterfall vs Agile

Question 1:

Have you heard of Waterfall and Agile methodologies?

If yes: Can you explain the difference?

Discussion Questions:

  • If you were building software, which approach makes more sense to you? Why?
  • In Year 11, did you use either of these approaches for your projects?
  • What are the main phases of software development? (Can you name them?)

Activity 3.2: Testing & Debugging

Question 1: Error Types

Can you explain the difference between:

  • Syntax errors
  • Logic errors
  • Runtime errors

Give examples if you can!

Question 2: Testing Approach

How do you test if your code works? What's your process?

Question 3: Debugging Tools

What debugging tools have you used? (e.g., print statements, breakpoints, VSCode debugger, etc.)

Part 4: Object-Oriented Programming 15 minutes

Activity 4.1: Understanding OOP

Question 1: Class vs Object

What's the difference between a class and an object?

Can you give me a real-world example? (e.g., "Car" class vs actual cars)

Question 2: Have You Written Classes?

Have you written classes in Python before?

If yes: What did you create?

If no: That's okay - we'll learn together!

Question 3: OOP Terminology

Do you know what these terms mean?

  • Encapsulation
  • Inheritance
  • Polymorphism
  • Abstraction

Question 4: Why Use OOP?

Why would you use OOP instead of just writing functions?

Activity 4.2: Read & Analyze OOP Code

Analyze this Python class:

Python Class: BankAccount
class BankAccount:
    def __init__(self, account_number, balance=0):
        self.account_number = account_number
        self.balance = balance

    def deposit(self, amount):
        if amount > 0:
            self.balance += amount
            return True
        return False

    def withdraw(self, amount):
        if amount > 0 and amount <= self.balance:
            self.balance -= amount
            return True
        return False

    def get_balance(self):
        return self.balance

Analysis Questions:

  • What does this class represent?
  • What are the attributes (data) of this class?
  • What are the methods (behaviors)?
  • What happens when you create a new BankAccount? (What does __init__ do?)
  • If I do this: account = BankAccount('12345', 100) - what have I created?
  • Can you spot any validation or error handling in this code?
  • What would happen if you tried to withdraw $200 when the balance is $100?
← Back to Learning Hub