💻 Digital Technologies · AS 91906 · 3.7

Complex programming techniques (internal)

Internal 6 credits Program design Data structures Testing Error handling Informed & refined

The biggest internal in the subject at 6 credits. Achieved writes a program that WORKS on expected cases; Merit develops an INFORMED program — documented with proper names/comments, following language conventions, tested against expected AND boundary cases; Excellence develops a REFINED program — well-structured, FLEXIBLE and ROBUST, comprehensively tested.

Reference sheet →

1 Reading the notation

The definition of "complex", and the achieved/informed/refined ladder in the standard's own words.

📖 Terms the schedule grades you on

3 terms
A complex computer program
Two or more data types; sequence, selection AND iteration; external input; output; TWO OR MORE complex programming techniques.
Develop an informed program (Merit)
Proper documentation and naming; language conventions followed; organised testing on expected AND boundary cases.
Develop a refined program (Excellence)
Well-structured and logical; FLEXIBLE and ROBUST; comprehensively tested and debugged.

2 The complex techniques the standard names

Two or more, genuinely used — not just present as decoration.

The standard's own list

  • A graphical user interface (GUI).
  • Reading from, or writing to, files or persistent storage.
  • Object-oriented programming with student-defined class(es) and objects.
  • Student-defined types.
  • A third-party or non-core API, library or framework.
  • Complex data structures — stacks, queues, trees.

3 Structuring the program

Decomposition and naming are what "well-structured, logical response" means in practice. ✕

Global variables and magic numbers

A global can be changed anywhere, so a bug can come from anywhere; an unexplained literal number has to be found and changed in every place it appears. Named constants and parameters passed explicitly are what the standard means by a maintainable, flexible structure.

4 Error handling and testing

Robust means handling invalid input gracefully, not just expected input correctly.

What the evidence has to show

  • A test plan with expected AND actual results.
  • Boundary cases: zero, one, empty, the maximum, one past the maximum.
  • Invalid cases: the program does not crash, and recovers or reports usefully.
  • Comments explaining decisions, not restating the code.

Practice

Recall it first, then use it — testing yourself builds the memory, where rereading the notes above only feels easier.

Recall and application shuffled together — you have to work out what each item wants before you can answer it, which is the part the exam actually tests. Both kinds feed the same spacing schedule, so anything you miss comes back sooner.

Say the answer out loud before flipping — that attempt is where the learning happens, even when you get it wrong.

Exam-style only. Instant feedback, shuffled each attempt, best score saved on this device.

Past exams & resources

NZQA 91906 achievement standard & assessment resources Internal — check the current standard and exemplars