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 may also consult:
- 📖 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, andreduce - Database + functional programming: Database-backed system using structs/functions and
map,filter, andreduce
- 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, orreduce), but only TWO (2) are required for Paetae/A.
Additional requirements for AS91902 (Database)
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:
- Committed and pushed/synced/published your code to GitHub.
- 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.swiftorSwiftPlayground.swift, I will not mark your work.
- If you only submit
- Filled in the testing table with at least TWENTY (20) lines of testing.
- Turned in your Google Classroom assignment.
