Programming fundamentals#

Software development#

Explore fundamental software development steps used by programmers when designing software

Including

requirements definition
determining specifications
design
development
integration
testing and debugging
installation
maintenance
Research and evaluate the prevalence and use of online code collaboration tools

Designing algorithms#

Apply computational thinking and algorithmic design by defining the key features of standard algorithms, including sequence, selection, iteration and identifying data that should be stored
Apply divide and conquer and backtracking as algorithmic design strategies
Develop structured algorithms using pseudocode and flowcharts, including the use of subprograms
Use modelling tools including structure charts, abstraction and refinement diagrams to support top-down and bottom-up design
Analyse the logic and structure of written algorithms

Including

determining inputs and outputs
determining the purpose of the algorithm
desk checking and peer checking
determining connections of written algorithms to other subroutines or functions
Identify procedures and functions in an algorithm
Experiment with object-oriented programming, imperative, logic and functional programming paradigms

Data for software engineering#

Investigate the use of number systems for computing purposes, including binary, decimal and hexadecimal
Represent integers using two’s complement
Investigate standard data types

Including

char (character) and string
Boolean
real
single precision floating point
integer
date and time
Create data dictionaries as a tool to describe data and data types, structure data, and record relationships
Use data structures of arrays, records, trees and sequential files

Developing solutions with code#

Apply skills in computational thinking and programming to develop a software solution

Including

converting an algorithm into code
using control structures
using data structures
using standard modules
creating relevant subprograms that incorporate parameter passing
Implement data structures that support data storage

Including

single and multidimensional arrays
lists
trees
stacks
hash tables
Compare the execution of the Waterfall and Agile project management models as applied to software development
Test and evaluate solutions, considering key aspects including functionality, performance, readability of code, quality of documentation
Use debugging tools

Including

breakpoints
single line stepping
watches
interfaces between functions
debugging output statements
debugging software available in an integrated development environment (IDE)
Determine sets of suitable test data

Including

boundary values
path coverage
faulty and abnormal data
Determine typical errors experienced when developing code, including syntax, logic and runtime, and explain their likely causes