Computational thinking
Decomposition: Breaking a problem down into smaller manageable tasks
Abstraction: Removing unnecessary details from a problem
Algorithmic thinking: Creates a set of rules to automate instructions
Flowcharts
Rectangle with curved corners: Terminal
Rectangle: Process
Diamond: Decision
Parallelogram: Input/output
AND OR NOT Gates
^ : AND
v : OR
¬ : NOT
Bubble sort
Easy to code, Efficient for small lists, Slow for long lists
Merge sort
Efficient for large lists, Require lots of memory, Difficult to code
Insertion sort
Efficient for mostly sorted lists, Easy to code, Inefficient for long lists
Programming constructs
Sequence: Executing one instruction after another
Selection: Program branching based on a condition like an if statement
Iteration: Program looping based on a count or condition control loop
Defensive design considerations
Anticipating misuse: Predicts users will find ways to break program
Authentication
Input validation: Tyra proudly ran, leaping over foxes (format)
Maintainability
The ease with which code can be read and modified including:
Comments, Indentation, Subprograms, Suitable names
Iterative vs final testing
Iterative testing works on a small section of code whilst it is still being developed
Types of input
Normal, Boundary, Invalid, Erroneous
High level vs low level languages
Source code which is written in high level languages can be translated or compiled to machine code and executed. Low level languages like assembly code are translated to machine code using assemblers
IDEs
Software used for writing code including:
Editors (Colour codes, bracket matching, Auto complete)
Error diagnostics (Break points, syntax)
Runtime environment (Interpreter)
Navigation (Dedicated panels for files)
Ut