4.4.1.
1 Problem-solving
4.4.1.2 Following and writing algorithms
4.4.1.3 Abstraction
4.4.1.4 Information hiding
4.4.1.5 Procedural abstraction
4.4.1.6 Functional abstraction
4.4.1.7 Data abstraction
4.4.1.8 Problem abstraction/reduction
4.4.1.9 Decomposition
4.4.1.10 Composition
4.4.1.11 Automation
4.4.2 Regular languages
4.4.2.1 Finite state machines (FSMs) with and without output)
4.4.2.2 Maths for regular expressions
4.4.2.3 Regular expressions
4.4.2.4 Regular language
4.4.3 Context-free languages
4.4.3.1 Backus-Naur Form (BNF)/syntax diagrams
4.4.4 Classification of algorithms
4.4.4.1 Comparing algorithms
4.4.4.2 Maths for understanding Big-O notation
4.4.4.3 Order of complexity
4.4.4.4 Limits of computation
4.4.4.5 Classification of algorithmic problems
4.4.4.6 Computable and non-computable problems
4.4.4.7 Halting problem
4.4.5 A model of computation
4.4.5.1 Turing machine
4.3.1.1 Simple graph-traversal algorithms
4.3.2 Tree-traversal
4.3.2.1 Simple tree-traversal algorithms
4.3.3 Reverse Polish
4.3.3.1 Reverse Polish – infix transformations
4.3.4 Searching algorithms
4.3.4.1 Linear search
4.3.4.2 Binary search
4.3.4.3 Binary tree search
4.3.5 Sorting algorithms
4.3.5.1 Bubble sort
4.3.5.2 Merge sort
4.3.6 Optimisation algorithms
4.3.6.1 Dijkstra’s shortest path algorithm
4.2.1 Data structures and abstract data types
4.2.1.1 Data structures
4.2.1.2 Single- and multi-dimensional arrays (or equivalent)
4.2.1.3 Fields, records and files
4.2.1.4 Abstract data types/data structures
4.2.2 Queues
4.2.2.1 Queues
4.2.3 Stacks
4.2.3.1 Stacks
4.2.4 Graphs
4.2.4.1 Graphs
4.2.5 Trees
4.2.5.1 Trees (including binary trees)
4.2.6 Hash tables
4.2.6.1 Hash tables
4.2.7 Dictionaries
4.2.7.1 Dictionaries
4.2.8 Vectors
4.2.8.1 Vectors