Author: Kevin Roy Bond
This textbook covers sections 4.1 to 4.4 of AQA's A Level Computer Science specification for first teaching from September 2015. These sections cover the fundamentals of programming, data structures, algorithms, and the theory of computation. Fundamentals of programming: data types, programming concepts, arithmetic operations, relational operators, Boolean operations, constants and varibale, string-handling, random number generatio, exception handling, subroutines, parameters of subroutines, returning a value/values from a subroutine, local variables, global variables, role of stack frames in subroutine calls, recursive techniques, procedural-oriented programming, object-oriented programming. Fundamentals of data structures: data structures, single- and multi-dimensional arrays, fileds, records and files, abstract data types, queues, stacks, graphs, trees, hash tables, dictionaries, vectors. Fundamentals of algorithms: graph traversal (breadth-first, depth-first), tree-traversal (pre-order, in-order, post-order), Reverse Polish, searching algorithms (linear search, binary search, binary tree search), sorting algorithms(bubble sort, merge sort), optimisation algorithms (Dijkstra's shortest path algorithm). Theory of computation: abstraction and automation, following and writing algorithms, information hiding, procedural abstraction, functional abstraction, data abstraction, problem abstraction/reduction, decomposition, composition, automation, regular languages, finitest state machine with and without output, maths for regular expressions, regular expressions, regular language, context-free languages (BNF, syntax diagrams), classification of algorithms, maths for understanding Big-O notation, order of complexity, limits of computation, classification of algortihmic problems, computatble and non-computatable problems, halting problem, Turing machine.