Te Kete Ipurangi Navigation:

Te Kete Ipurangi

Te Kete Ipurangi user options:

Senior Secondary navigation


Section menu


Curriculum strands

Specialist strands

AOs/LOs by level

Technological practice (TP)

6-1 | 6-2 | 6-3

7-1 | 7-2 | 7-3

8-1 | 8-2 | 8-3

Technological knowledge (TK)

6-1 | 6-2 | 6-3

7-1 | 7-2 | 7-3

8-1 | 8-2 | 8-3

Nature of technology (NT)

6-1 | 6-2

7-1 | 7-2

8-1 | 8-2

Design in technology (DET)

6-1 | 6-2

7-1 | 7-2


Manufacturing (MFG)

6-1 | 6-2

7-1 | 7-2


Technical areas (TCA)


Construction and mechanical technologies (CMT)

6-1 | 6-2 | 6-3 | 6-4

6-5 | 6-6 | 6-7

7-1 |  7-2 |  7-3 |  7-4

7-5 |  7-6 |  7-7

8-1 | 8-2 | 8-3 | 8-4

8-5 | 8-6 | 8-7

Design and visual communication (DVC)

6-1 | 6-2 | 6-3

7-1 | 7-2 | 7-3

8-1 | 8-2 | 8-3

Digital technologies (DTG)

6-1 | 6-2 | 6-3 | 6-4

6-5 | 6-6 | 6-7 | 6-8

6-9 | 6-10 | 6-11 | 6-12

7-1 |  7-2 |  7-3 |  7-4

7-5 |  7-6 |  7-7 |  7-8

7-9 |  7-10 |  7-11 |  7-12

8-1 | 8-2 | 8-3 | 8-4

8-5 |  8-6/7 | 8-8 | 8-9

8-10 |  8-11 | 8-12

Processing technologies (PRT)

6-1 | 6-2 | 6-3

7-1 | 7-2 | 7-3

8-1/2 | 8-3

Construct a software program DTG 6-7

Achievement Standard 1.46, AS91076

Construct a software program focuses on constructing a computer program for a specified task including testing and debugging the program to ensure the program works correctly.

Learning Objective: DTG 6-7

Students will:

  • Demonstrate ability to construct a basic software program


Students can:

  • write a program with sequence, selection, and iteration control structures
  • write a program with multiple data types, iteration control structures nested inside other iteration control structures, and structures in which complex logical conditions are expressed economically
  • comprehensively test and debug the program in an organised and time effective way to ensure the program is correct on all inputs (including expected, exceptional, out-of-range, boundary, and invalid inputs).


As part of a junior technology programme students should learn some fundamental concepts about computational thinking and problem solving. It is useful if within a junior programme students can get some exposure to programming, and are introduced to ideas from computer science such as commenting on interfaces critically, binary representation, and simple searching or sorting algorithms.
At level 6 students will learn to construct basic computer programs in a chosen programming language (graphical, drag-and-drop, or text based) that include: variables, assignment, predefined actions, expressions, and sequence, selection, and iteration control structures; and obtains and uses input from a user, sensors, or other external source.

The Teacher Guidance section provides information that supports teachers scaffolding of learning from levels 1-8 of the curriculum. This allows for differentiation of a programme of learning.

The deliberate use of provide, guide, and support in this section signals that as students' capacity for self-management increases, teachers progressively reduce the level of scaffolding provided.

  • Provide – the teacher should take full responsibility for introducing and explicitly teaching new knowledge, skills or practices.
  • Guide – the students have a level of understanding and competency on which they can draw but the teacher remains primarily responsible for continuing to develop these.
  • Support – the students take primary responsibility for their own learning, drawing on all their previous experiences to consolidate and extend their understanding. The teacher is supportive rather than directive.
  • The Teacher Guidance also uses the term ensure to indicate when the teacher plays a monitoring role to check that conditions critical for learning are present.

Teacher Guidance

To support students to develop an ability to construct a basic software program at level 6, teachers could:

  • Guide students to independently implement a plan for a basic program in a suitable programming language (drag-and-drop language, specialised programming language, or a general purpose programming language) that uses a procedural structure with well-chosen actions, conditions and control structures that ensures the program is flexible and robust
  • Guide students on how to set out program code concisely, and document programs with variable names and succinct comments that accurately explain and justify code function and behaviours
  • Guide students on how to comprehensively test and debug programs in an organized time effective way to ensure that they work on expected, boundary and invalid inputs. 

Contexts for teaching and learning

The learning associated with "Design a software program structure – DTG 6-6" (AS91075 Digital Technologies 1.45) and "Construct a software program – DTG 6-7" (AS91076 Digital Technologies 1.46) are strongly interlinked, and normally both should be taught at the same time. Refer to the discussion in section DTG 6-6 of this guide about the waterfall model of software development versus agile software development.

However it is not an absolute requirement for this objective that students must code a program that they have previously designed themselves. They can be provided with a plan and asked to code from that. The plan should be suitable that a student could potentially achieve excellence from it (for example, it would have a comprehensive set of test cases). For students who are developing their own plan, it is appropriate to give them improvements to their plan (or a new plan) from which they could potentially achieve excellence in the AS91076 standard.

Teachers are referred to the notes on the level 1 and 2 programming standards. "Programming Standards Levels 1 & 2 - A discussion of, and example plans & programs for Standards 1.45, 1.46, 2.45, 2.46" By Anthony Robins & Sandy Garner, Computer Science, University of Otago

These notes contain background information and examples.

Teachers are also referred to the "Support for Schools" website ( http://www.cs.otago.ac.nz/schools/) prepared by staff from the Computer Science Department at The University of Otago. This resource is aimed at curriculum level 7 and 8 but still contains useful background information for curriculum level 6.

At curriculum level 6 the programming language used can be graphical, drag-and-drop, or text based. Teachers need to consider that at curriculum level 7 a text based programming language is preferred, so a decision needs to be made whether it is better to introduce programming at level 6 with a graphical or drag-and-drop language and then step up to a text based language at curriculum level 7, or whether to go straight to a text based programming language at curriculum level 6. The language chosen must support the required data types and procedural structures and have good comment facilities. The following languages are commonly used for this purpose and have good beginner teaching resources available:

  • Scratch
  • Python
  • Javascript
  • Java

 Almost any language is acceptable; other examples include:

  • Alice
  • Processing
  • Microsoft SmallBasic
  • Visual Basic 2010, VB6
  • Ruby
  • PERL
  • C
  • C++
  • C#

Literacy considerations

Teachers need to ensure students understand the specialist language related to computer programming such as "variables" or "debugging". Students will obviously need to understand the particular syntax of the programming language they are using. In addition students must be able to document their program with appropriate comments, using clear and concise writing. Students will need guidance on what level of documentation is necessary in the comments to adequately explain and justify their decisions. In this context, justify does not require an explanation of alternative approaches that weren’t taken, unless an obvious approach has been rejected in favour of the one used for a good reason 

Generic understanding of the academic terms

  • to describe is a written statement that gives details about the outcome or idea
  • to explain is to describe in detail with reasons – often including the how and why
  • to discuss requires an explanation that is comprehensive, detailed, broad and show evidence of some complexity in thinking. It may be a reasoned argument presenting a particular point of view, or a comparison and contrast between two ideas or concepts; or it may be a detailed reasoning and relationship between several complex ideas

Resources to support teaching and learning

Assessment for qualifications

The following achievement standard(s) could assess learning outcomes from this learning objective:

  • AS91076 Digital Technologies 1.46: Construct a basic computer program for a specified task

Key messages from the standard

This standard requires the construction of a basic computer program for a specified task. Normally students will already be in the process of constructing a plan for a computer program to resolve this task by the time they start this assessment. Refer to the discussion in section DTG 6-6 of this guide about the waterfall model of software development compared to agile software development, and the intention to do AS91075 and AS91076 together. However if this is not the case and students are not developing a plan for the computer program then the teacher needs to provide an abstract plan to guide their program development. This plan should not be one that can be directly transcribed to the programming language. For further information refer to explanatory note 5.

If this standard is being assessed in conjunction with AS91075 (1.45) as is most likely the case, teachers need to ensure any students who did not achieve AS91075 (or seem to be tracking towards not achieving) are provided with a suitable plan so they have the opportunity to succeed in AS91076 (1.46)

Explanatory note 4 sets out the requirements of a basic computer program. A basic computer program is a program written in a programming language, that uses:

  • variables involving at least two types of information (eg numeric, characters, text) and assignment
  • sequence, selection and iteration control structures
  • predefined actions (eg predefined methods, functions, or procedures)
  • input from a user, sensors, or other external source.
  • The “sequence, selection and iteration” required by this standard occurs in all general purpose programming languages. Usually “sequence” is the idea that commands occur in the order they appear in a section of a program; selection is usually an “if” or “case/switch” statement, and iteration is a loop, such as a “for”, “while” or “repeat” statement.
  • The “predefined actions” will typically be a built-in function that does something like draw on the screen, read user input, do a mathematical calculation, or manipulate a string of text.
  • Input would normally be typed text, but it could be the location of a mouse click, or input from external sensors such as a light or sound sensor.
  • The program should be documented with comments. At achieved the criteria just require that comments are included. At merit the comments must include variable names, and comments that accurately describe code function and behaviour. At excellence the comments must be succinct and explain and justify decisions.
  • As part of the task students need to test and debug the program to ensure it works on a sample of input cases. Testing of expected, boundary and invalid inputs should be clearly displayed or recorded in writing as part of the student evidence; some languages allow such tests to be part of the program comments (e.g. Python’s “doctest”), while for others a separate document may be appropriate to identify the tests performed. Students need to understand expected input cases, boundary cases, and invalid inputs. Teachers should note that in addition to requiring a broader range of input test cases at higher grades there is also a requirement for an increased sophistication in the actual testing and debugging, such as avoiding each test having to be entered manually each time the program is modified. Refer to the table below: 
Achieved Merit Excellence

Testing and debugging


Expected inputs

Organised testing and debugging


Expected and boundary inputs

Comprehensively testing and debugging in an organised and time efficient way


Expected, boundary, and invalid inputs


Expected – input that is expected e.g. if a number between 1 and 10 is expected then you would test the program for input of say 2 or 5

Boundary – Input values that are right at the limit of some condition or range of operation. For example, if a system should check for input between 1 and 10, then the values 9, 10 and 11 would be good to test to see if it responds correctly for each of these.


Invalid – Input values that are invalid for some other reason than being out of range, eg, using invalid characters, inconsistent sets of values, unexpected key sequences, or text input when numeric is expected. For example, if a system should check for an integer between 1 and 10, it should be tested with input such as alphabetic characters or a number such as 3.5.


  • Part of the step-up to merit is that students need to independently implement the plan for a basic program. To make a judgement for independence, the following guidelines might be helpful. The student:
    • takes responsibility for achieving a quality outcome
    • plans effectively, thinks ahead, is well organised, self starting, self managing
    • makes their own decisions
    • stores their work carefully
    • carries out appropriate checking and testing and takes corrective action as necessary
    • recognises and deals with issues promptly
    • asks for help only with exceptional problems rather than routinely
    • is always able to describe what they are doing and why and where their project is heading.

It does NOT mean that the student:

  • is unable to ask for help with technical (for example, faulty equipment or computing environment issues) or safety issues
  • is responsible for the consequences of inadequate project storage facilities.

Of course, initially during the learning process students can expect considerable guidance, but the assessment will test if they are then able to work independently.

  • The merit criteria also requires implementing the plan for a basic program that uses well-chosen actions, conditions and control structures (see explanatory note 6 and 7).
  • The step-up to excellence is about the efficiently constructing the program. In the context of this standard, this involves implementing the program so that it does not have to be redesigned substantially if it needs to be extended or modified, and that the implementation can be understood easily and quickly when read later by another programmer. This involves using actions, conditions and control structures effectively to increase the flexibility and robustness of the program (see explanatory note 8), and using an effective procedural structure that results in a well structured logical decomposition of the task (see explanatory note 9) that are in the typical idioms of the language (eg iterating over a precalculated range of values would normally use a for loop rather than a while loop in some languages). In addition there needs to be evidence of comprehensive testing and debugging carried out in an organised and time effective way (refer to table of input test cases above).
  • The student needs to submit a working computer program that correctly solves the problem (the program should be submitted in both printed and electronic form), along with evidence of appropriate testing (refer to the above table about required test cases).

For the most up to date information, teachers should be referring to the latest version of the standards, conditions of assessment and assessment resources on TKI and the moderators reports, clarifications documents and student exemplars on the NZQA website. See links below. 

Resources to support student achievement

Last updated May 29, 2018