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.