Announcements

Filter by Subject

Syllabi (Year 11)

Software Engineering09-09-26Geoffrey LiSoftware Engineering Yr110

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 Understanding OOP > Apply the key features of an object-oriented programming (OOP) language Including: > objects > classes > encapsulation > abstraction > inheritance > generalisation > polymorphism > Compare procedural programming with OOP > Use data flow diagrams, structure charts and class diagrams to represent a system > Describe the process of design used to develop code in an OOP language Including: > task definition > top-down and bottom-up > facade pattern > agility > Assess the effectiveness of programming code developed to implement an algorithm > Investigate how OOP languages handle message-passing between objects > Explain code optimisation in software engineering > Outline the features of OOP that support collaborative code development Including: > consistency > code commenting > version control > feedback Programming in OOP > Design and implement computer programs involving branching, iteration and functions in an OOP language for an identified need or opportunity > Implement and modify OOP programming code Including: > clear and uncluttered mainline > one logical task per subroutine > use of stubs > use of control structures and data structures > ease of maintenance > version control > regular backup > Apply methodologies to test and evaluate code Including: > unit, subsystem and system testing > black, white and grey box testing > quality assurance Understanding mechatronic hardware and software > Outline applications of mechatronic systems in a variety of specialised fields > Identify the hardware requirements to run a program and the effect on code development Including: > assessing the relationship of microcontrollers and the central processing unit (CPU) > the influence of instruction set and opcodes > the use of address and data registers > Identify and describe a range of sensors, actuators and end effectors/manipulators within existing mechatronic systems Including: > motion sensors > light level sensors > hydraulic actuators > robotic grippers > Use different types of data and understand how it is obtained and processed in a mechatronic system, including diagnostic data and data used for optimisation > Experiment with software to control interactions and dependencies within mechatronic systems Including: > motion constraints > degrees of freedom > combination of subsystems > combination of sensors, actuators and end effectors to create viable subsystems > Determine power, battery and material requirements for components of a mechatronic system > Develop wiring diagrams for a mechatronic system, considering data and power supply requirements > Determine specialist requirements that influence the design and functions of mechatronic systems designed for people with disability Designing control algorithms > Develop, modify and apply algorithms to control a mechatronic system > Explore the algorithmic patterns, code and applications for open and closed control systems > Outline the features of an algorithm and program code used for autonomous control Programming and building > Design, develop and produce a mechatronic system for a real-world problem Including: > software control > mechanical engineering > electronics and mathematics > Implement algorithms and design programming code to drive mechatronic devices > Develop simulations and prototypes of a potential mechatronic system to test programming code > Design, develop and implement programming code for a closed loop control system > Apply programming code to integrate sensors, actuators and end effectors/manipulators > Implement specific control algorithms that enhance the performance of a mechatronic system > Design, develop and implement a user interface (UI) to control a mechatronic system > Create and use unit tests to determine the effectiveness and repeatability of each component’s control algorithm