Skip to main content

Programming fundamentals

This lesson comprises eight (8) master classes focusing on:

  • Fundamental software development steps
  • Computational thinking
  • Algorithmic design
  • Programming
  • Testing and evaluating solutions
  • Number systems for computing purposes
  • Data dictionaries
  • Data structures

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