On completion of this unit the student should be able to interpret teacher-provided solution requirements and designs and use appropriate features of an object-oriented programming language to develop working software modules.
To achieve this outcome the student will draw on key knowledge and key skills outlined in Area of Study 1.
# Key knowledge
## 1. [[Emerging trends in programming using artificial intelligence|emerging trends in programming using artificial intelligence, including:]]
1.1 - using prompts to generate code
1.2 - automated debugging and testing of modules
1.3 - code optimisation
1.4 - responsible and ethical use of artificial intelligence tools
## 2. characteristics of [[Functional and Non-Functional Requirements]], [[Constraints 1|constraints]] and [[10 - Unit 3/AOS2 - Analysis and Design/Software Requirements Specifications/Scope|Scope]]
## 3. design tools for representing modules, including:
[[10 - Unit 3/AOS1 - Programming/Project Management/Design Tools/Data Dictionary|3.1 data dictionaries]]
[[Mock-ups|3.2. mock-ups]]
[[Object Descriptions|3.3. object descriptions]]
[[Input-process-output (IPO) charts|3.4 Input-process-output]]
[[Pseudocode|3.5. pseudocode]]
## 4. characteristics of data types, including:
[[Data Types#Text|4.1. text (character, string)]]
[[Data Types#Numeric|4.2. numeric (integer, floating point, date/time)]]
[[Data Types#Boolean|4.3. Boolean]]
## 5. characteristics of data structures, including:
[[Arrays|5.1. one-dimensional arrays]]
[[Arrays#2D Arrays|5.2. two-dimensional arrays]]
[[Records and Fields|5.3. records (varying data types, field index)]]
## 6. characteristics of data sources ([[Plaintext|Plaintext]], [[Comma Separated Values (CSV)|delimited (CSV)]] and [[Extensible Mark-up Language (XML)]] files), including:
6.1. structure
6.2. reasons for use
## 7. principles of OOP, including:
7.1. [[Abstraction]]
7.2. [[Encapsulation]]
7.3. [[Generalisation]]
7.4. [[Inheritance]]
### 8. features of a programming language, including:
8.1. [[Variables|local and global variables, and constants]]
8.2. [[Data Types]]
8.3. instructions and [[10 - Unit 3/AOS1 - Programming/Programming/Control Structures|control structures]] (sequence, selection, iteration/repetition)
8.4. [[Operators|arithmetic, logical and conditional operators]]
8.5. graphical user interfaces (GUIs)
8.6. functions and methods
8.7. classes and objects
### 9. purposes and features of [[Naming Conventions]] for solution elements (variables, interface controls, code structures), including:
9.1. [[Naming Conventions#Hungarian Notation|Hungarian notation]]
9.2. [[Naming Conventions#Camel Case|camel casing]]
9.3. [[Naming Conventions#|snake casing]]
## 10. validation techniques for data, including:
11.1. [[Existence Check]]
11.2. [[Type Check]]
11.3. [[Range Check]]
## 11. purposes of [[Internal documentation]], including:
12.1. explaining and justifying data and code structures
12.2. code maintenance
12.3. placeholder comments for future development (stubs)
## 12. algorithms for sorting and searching, including:
13.1. [[Selection Sort]]
13.2. [[Quick Sort]]
13.3. [[Binary Search]]
13.4. [[Linear Search]]
## 13. types of errors, including:
14.1. syntax
14.2. logic
14.3. runtime (overflow, index out of range, type mismatch, divide by zero)
## 14. debugging and testing techniques for checking modules function correctly, including:
15.1. use of breakpoints
15.2. use of debugging statements
15.3. construction of relevant test data
15.4. test cases comparing expected and actual output in testing tables.
# Key skills
· interpret solution requirements and designs
· use a range of data types, data structures and data sources
· use and justify appropriate features of an OOP language to develop working software modules
· develop and apply suitable naming conventions and validation techniques within modules
· document the functioning of modules using internal documentation
· develop and apply suitable debugging and testing techniques using appropriate test data.