> For the complete documentation index, see [llms.txt](https://gosford-high-school.gitbook.io/preliminary-software-engineering/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://gosford-high-school.gitbook.io/preliminary-software-engineering/unit-1-programming-fundamentals/charts-and-algorithms.md).

# Charts and Algorithms

{% hint style="info" %}

### **Learning Intention**

* 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
* 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
  {% endhint %}

{% hint style="success" %}

### **Success Criteria**&#x20;

* I can define, interpret and utilise key features of standard algorithms including sequence, selection and iteration.
* I can interpret and create detailed documentation during the design phase of software development to visually and clearly represent the system, including key components such as diagrams, specifications, and technical descriptions:
  * **IPO Charts (Input-Process-Output):** These charts outline the flow of data through the system, specifying inputs, processes, and outputs.
  * **Flowcharts:** Visualise processes and decision points within the system to ensure logical flow.
  * **Pseudocode:** Provides a high-level representation of the code logic to be implemented.
  * **Structure Charts:** Used to depict the hierarchical organisation of modules within a program.
  * **Data Dictionaries:** Essential for defining the data elements and structures used throughout the program.
  * **Data Flow Diagrams:** A Data Flow Diagram (DFD) visually represents how data moves through a system, showing inputs, processes, storage, and outputs.
  * **Class Diagrams:** A class diagram in software design visually represents the structure of a system by showing its classes, attributes, methods, and relationships between objects.
  * **Storyboards:** a visual representation that outlines the sequence of user interactions with a system, typically used to map out user experiences and interface flows.
    {% endhint %}

Each of these documentation types helps to ensure clarity and consistency throughout the development process.
