Matua Doc

Matua Doc

Level 3 programming assessment 2026

Summative assessment

  • A summative assessment is used to determine your grade for an achievement standard.
  • After you submit, your work will be marked, moderated, and grades will be uploaded to KAMAR.
  • It is held under real assessment conditions — any violations result in an instant Kāore i whīwhī/Not Achieved grade

Assessment conditions

  • 🗓️ You have five (5) spells in which to complete your task.
    • 🏫 You may work on this assignment at home.
    • 🕰️ Due to being able to work on this at home, no Extra Time will apply.
  • 💬 You may not communicate with anybody other than your kaiako
    • 🚻 If you need to use the bathroom, let your kaiako know
    • 🚾 You will not be allocated extra time to compensate for your absence
  • 🌎 You may consult the web, API documentation, etc.
    • You may also consult:
      • the resources posted to this website
      • the cheat sheet
      • your previous code from this and last year
      • you can use offline documentation from Zeal (Windows, Linux) or Dash (macOS)
        • on the school computers, you must use the portable version of Zeal
        • on your own devices, you can use the Zeal installer
  • 📖 You must not submit code that you did not 100% write as your own. This includes:
    • code copied from your neighbours
    • code you get help with from outside sources (whānau, friends)
    • code generated by a large language model (Copilot, ChatGPT, etc.)

Programming assessment criteria (Paetae/A)

Use complex programming techniques to develop a computer program involves:

  • writing code for a program that performs a specified task
  • using complex techniques in a suitable programming language
  • setting out the program code clearly and documenting the program with comments
  • testing and debugging the program to ensure that it works on a sample of expected cases

A complex computer program:

  • uses variables storing at least two types of data (e.g. numeric, text, Boolean)
  • uses sequence, selection and iteration control structures
  • takes input from a user, sensors, or other external source
  • produces output
  • uses two or more complex programming techniques

Complex programming techniques

  • programming or writing code for a graphical user interface (GUI)
  • reading from, or writing to, files or other persistent storage
  • object-oriented programming using class(es) and objects defined by the student
  • using types defined by the student
  • using third party or non-core API, library or framework
  • using complex data structures (e.g. stacks, queues, trees)

Programming assessment criteria (Kaiaka/M & Kairangi/E)

Use complex programming techniques to develop an informed computer program involves:

  • documenting the program with appropriate names and comments that describe code function and behaviour
  • following common conventions for the chosen programming language
  • testing and debugging the program effectively to ensure that it works on a sample of both expected cases and relevant boundary cases

Use complex programming techniques to develop a refined computer program involves:

  • ensuring that the program is a well-structured, logical response to the specified task
  • making the program flexible and robust
  • comprehensively testing and debugging the program

Database assessment criteria (Paetae/A)

Use complex techniques to develop a database involves:

  • designing the structure of the data
  • using appropriate tools and appropriate techniques to organise, query and present data for a purpose and end users
  • applying appropriate data integrity and testing procedures
  • addressing relevant implications (you will get this for free)

Use complex techniques to develop an informed database involves:

  • using information from testing procedures to improve the quality of the outcome
  • structuring, organising and querying the data logically

Use complex techniques to develop a refined database involves:

  • iterative improvement throughout the design, development and testing process
  • using efficient tools and techniques in the outcome’s production
  • presenting the data effectively for the purpose and end users

Complex database techniques

Complex techniques will include a selection from:

  • structuring the data using multiple tables or nodes
  • creating queries which insert, update or delete to modify data
  • creating customised data displays from multiple tables or nodes (e.g. reports, PDFs, web pages, dashboards, program interfaces)
  • dynamically linking data between the database and a front-end display
  • applying data access permissions as appropriate to the outcome

Task

Students will develop a Swift program that manages the borrowing, lending, or rental of items for a realistic user need. The same task applies to all students.

Possible contexts include:

  • school library book borrowing system
  • board game lending club
  • video game lending tracker
  • sports gear checkout system
  • classroom device loan manager
  • tool lending shed
  • costume hire system
  • music instrument rental system

The program must allow the user to:

  • add new items
  • register borrowers/users
  • lend or issue an item
  • return an item
  • view available and unavailable items
  • search items or borrowers
  • edit item or borrower records
  • delete records where appropriate

Data requirements

  • Each item that can be loaned must have at least THREE (3) data points and some way to identify it (in case of items with the same name). You will also need to store information about the borrowers and their loans.
  • Your program must use a combination of at least TWO (2) complex techniques:
    • OOP + Database: Structs + database-backed lending system
    • OOP + functional programming: Structs + in-memory (hard-coded) borrowing system with map, filter, and reduce
    • Database + functional programming: Database-backed system using structs/functions and map, filter, and reduce
  • The program must remain complete and functional even if one of the three approaches is not used.
  • Students may partially use a third technique (i.e. those doing OOP + Database can also make use of map, filter, or reduce), but only TWO (2) are required for Paetae/A.

Additional requirements for AS91902 (Database)

  • Students must submit an Entity Relationship Diagram (preferably with crow’s feet but any format will be fine)
    • relationships clearly labelled in the ERD
    • annotations showing each row’s data type, nullability, and uniqueness
    • clearly marked primary and foreign keys
  • Students must create a database with at least two related tables. Three is recommended
    • single-table databases are not sufficient for AS91902
  • Relationships should include:
    • primary and foreign keys
    • meaningful connections
  • The program must:
    • load items and borrowers from database
    • create loans through user actions, stored in the database
    • update returns in database
    • generate reports (i.e. show data on screen) from stored data
  • Students must include at least TWO (2) of:
    • querying data from multiple tables (i.e. getting a borrower’s data for a given loan)
    • filtered queries (i.e. only getting certain rows from a table)
    • ordered queries (i.e. sorting by name, by date, etc.)
  • Data must be presented in an appropriate way, including:
    • dates in standard New Zealand date format
    • currency (if any) shown in New Zealand dollars with two decimal places
    • the text output is optimised for 80 characters width, meaning long lines are split across multiple lines if necessary
  • The database must be essential to operation. If the program can be used without the database connection, the complex technique has not been adhered to.

Crow’s feet ERD symbols

Testing

You should test at least the following parts of the program, regardless of which complex programming techniques you use:

Test Input Expected
Registering item item details item added to catalogue
Editing item change an item’s name item updated
Removing item existing item item removed
Removing item non-existent item error shown
Do the same for the borrowers
Borrow item available item loan created
Borrow item unavailable item loan rejected, error shown
Return item active loan loan closed, item becomes available
Search borrower borrower name show matching records
Search borrower non-existent borrower name no records found
Search item search by name show matching records
Search item search by ID show one (or no) record

For those attempting AS91902, you will need to also record evidence of errors occurring purely within your database. You can use the SQLite editor to test:

Test Input Expected
Nullable field skip this field row added to database
Non-nullable field skip this field database correctly rejects the row
Data types correct data type for all fields within each table row added
Data types incorrect data types (i.e. text in number field) database correctly rejects the row
Foreign key use valid primary key from another table column satisfied
Foreign key use non-existent or invalid data type primary key database correctly rejects the column

Submission check list

Before you submit, make sure that you have:

  1. Committed and pushed/synced/published your code to GitHub.
  2. Downloaded a copy of your completed code from your GitHub repository (Code -> Local tab -> Download ZIP), and attached this to your Google Classroom assignment.
    • If you only submit main.swift or SwiftPlayground.swift, I will not mark your work.
  3. Filled in the testing table with at least TWENTY (20) lines of testing.
  4. Turned in your Google Classroom assignment.