Content:
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