├── .gitignore ├── Paper 2 ├── 4.11 Big Data │ └── 4.11.1 Big Data.md ├── 4.5 Fundamentals of data representation │ ├── 4.5.4 Binary number system │ │ ├── 4.5.4.5 Rounding errors.md │ │ ├── 4.5.4.4 Numbers with a fractional part.md │ │ ├── 4.5.4.6 Absolute and relative errors.md │ │ ├── 4.5.4.1 Unsigned binary.md │ │ ├── 4.5.4.7 Range and precision.md │ │ ├── 4.5.4.9 Underflow and overflow.md │ │ ├── 4.5.4.8 Normalisation of floating point form.md │ │ ├── 4.5.4.2 Unsigned binary arithmetic.md │ │ └── 4.5.4.3 Signed binary using two’s complement.md │ ├── 4.5.5 Information coding systems │ │ ├── 4.5.5.2 ASCII and Unicode.md │ │ ├── 4.5.5.1 Character form of a decimal digit.md │ │ └── 4.5.5.3 Error checking and correction.md │ ├── 4.5.6 Representing images, sound and other data │ │ ├── 4.5.6.10 Encryption.md │ │ ├── 4.5.6.5 Vector graphics.md │ │ ├── 4.5.6.9 Data compression.md │ │ ├── 4.5.6.2 Analogue and digital.md │ │ ├── 4.5.6.4 Bitmapped graphics.md │ │ ├── 4.5.6.3 Analogue-digital conversion.md │ │ ├── 4.5.6.7 Digital representation of sound.md │ │ ├── 4.5.6.6 Vector graphics versus bitmapped graphics.md │ │ ├── 4.5.6.1 Bit patterns, images, sound and other data.md │ │ └── 4.5.6.8 Musical Instrument Digital Interface (MIDI).md │ ├── 4.5.1 Number systems │ │ ├── 4.5.1.4 Irrational numbers.md │ │ ├── 4.5.1.2 Integer numbers.md │ │ ├── 4.5.1.1 Natural numbers.md │ │ ├── 4.5.1.3 Rational numbers.md │ │ ├── 4.5.1.7 Counting and measurement.md │ │ ├── 4.5.1.5 Real numbers.md │ │ └── 4.5.1.6 Ordinal numbers.md │ ├── 4.5.3 Units of information │ │ ├── 4.5.3.1 Bits and bytes.md │ │ └── 4.5.3.2 Units.md │ └── 4.5.2 Number bases │ │ └── 4.5.2.1 Number base.md ├── 4.6 Fundamentals of computer systems │ ├── 4.6.1 Hardware and software │ │ ├── 4.6.1.3 System software.md │ │ ├── 4.6.1.2 Classification of software.md │ │ ├── 4.6.1.4 Role of an operating system (OS).md │ │ └── 4.6.1.1 Relationship between hardware and software.md │ ├── 4.6.5 Boolean algebra │ │ └── 4.6.5.1 Using Boolean algebra.md │ ├── 4.6.3 Types of program translator │ │ └── 4.6.3.1 Types of program translator.md │ ├── 4.6.2 Classification of programming languages │ │ └── 4.6.2.1 Classification of programming languages.md │ └── 4.6.4 Logic gates │ │ ├── resources │ │ ├── AND.gif │ │ ├── NAND.png │ │ ├── NOR.png │ │ ├── NOT.gif │ │ ├── OR.gif │ │ ├── XOR.png │ │ ├── full-adder.png │ │ ├── half-adder.png │ │ ├── edge-trigger.png │ │ └── edge-trigger-neg.png │ │ └── 4.6.4.1 Logic gates.md ├── 4.9 Fundamentals of communication and networking │ ├── 4.9.2 Networking │ │ ├── 4.9.2.1 Network topology.md │ │ ├── 4.9.2.2 Types of networking between hosts.md │ │ └── 4.9.2.3 Wireless networking.md │ ├── 4.9.3 The Internet │ │ ├── 4.9.3.2 Internet security.md │ │ ├── resources │ │ │ ├── packet.gif │ │ │ └── routing.png │ │ └── 4.9.3.1 The Internet and how it works.md │ ├── 4.9.4 The Transmission Control Protocol-Internet Protocol (TCP-IP) protocol │ │ ├── 4.9.4.1 TCP-IP.md │ │ ├── 4.9.4.4 Subnet masking.md │ │ ├── 4.9.4.5 IP standards.md │ │ ├── 4.9.4.9 Port forwarding.md │ │ ├── 4.9.4.3 IP address structure.md │ │ ├── 4.9.4.6 Public and private IP addresses.md │ │ ├── 4.9.4.8 Network Address Translation (NAT).md │ │ ├── 4.9.4.11 Thin- versus thick-client computing.md │ │ ├── 4.9.4.2 Standard application layer protocols.md │ │ ├── 4.9.4.7 Dynamic Host Configuration Protocol (DHCP).md │ │ └── 4.9.4.10 Client server model.md │ └── 4.9.1 Communication │ │ ├── 4.9.1.2 Communication basics.md │ │ └── 4.9.1.1 Communication methods.md ├── 4.13 Systematic approach to problem solving │ └── 4.13.1 Aspects of software development │ │ ├── 4.13.1.2 Design.md │ │ ├── 4.13.1.4 Testing.md │ │ ├── 4.13.1.5 Evaluation.md │ │ ├── 4.13.1.3 Implementation.md │ │ └── 4.13.1.1 Analysis.md ├── 4.8 Consequences of uses of computing │ └── 4.8.1 Individual (moral), social (ethical), legal and cultural issues and opportunities.md ├── 4.7 Fundamentals of computer organisation and architecture │ ├── 4.7.2 The stored program concept │ │ └── 4.7.2.1 The meaning of the stored program concept.md │ ├── 4.7.3 Structure and role of the processor and its components │ │ ├── 4.7.3.2 The Fetch-Execute cycle and the role of registers within it.md │ │ ├── 4.7.3.7 Factors affecting processor performance.md │ │ ├── 4.7.3.3 The processor instruction set.md │ │ ├── 4.7.3.5 Machine-code assembly language operations.md │ │ └── 4.7.3.1 The processor and its components.md │ └── 4.7.1 Internal hardware components of a computer │ │ └── 4.7.1.1 Internal hardware components of a computer.md ├── 4.10 Fundamentals of databases │ ├── 4.10.1 Conceptual data models and entity relationship modelling │ │ └── 4.10.1.1 Conceptual data models and entity relationship modelling.md │ ├── 4.10.5 Client server databases │ │ └── 4.10.5.1 Client server databases.md │ ├── 4.10.2 Relational databases │ │ └── 4.10.2.1 Relational databases.md │ ├── 4.10.3 Database design and normalisation techniques │ │ └── 4.10.3.1 Database design and normalisation techniques.md │ └── 4.10.4 Structured Query Language (SQL) │ │ └── 4.10.4.1 SQL.md ├── 4.12 Fundamentals of functional programming │ ├── 4.12.1 Functional programming paradigm │ │ ├── 4.12.1.3 Function application.md │ │ ├── 4.12.1.2 First-class object.md │ │ ├── 4.12.1.5 Composition of functions.md │ │ ├── 4.12.1.4 Partial function application.md │ │ └── 4.12.1.1 Function type.md │ ├── 4.12.2 Writing functional programs │ │ └── 4.12.2.1 Functional language programs.md │ └── 4.12.3 Lists in functional programming │ │ └── 4.12.3.1 List processing.md └── Definitions.md ├── Makefile ├── Paper 1 ├── 4.2 Fundamentals of data structures │ ├── 4.2.4 Graphs │ │ └── 4.2.4.1 Graphs.md │ ├── 4.2.8 Vectors │ │ └── 4.2.8.1 Vectors.md │ ├── 4.2.7 Dictionaries │ │ └── 4.2.7.1 Dictionaries.md │ ├── 4.2.5 Trees │ │ ├── resources │ │ │ ├── binary-tree.png │ │ │ └── non-rooted-tree.png │ │ └── 4.2.5.1 Trees (including binary trees).md │ ├── 4.2.1 Data structures and abstract data types │ │ ├── resources │ │ │ └── 7F130E02A33C129A9075688992AD984A.jpg │ │ ├── 4.2.1.1 Data structures.md │ │ ├── 4.2.1.2 Single- and multi-dimensional arrays.md │ │ └── 4.2.1.4 Abstract data types-data structures.md │ ├── 4.2.3 Stacks │ │ └── 4.2.3.1 Stacks.md │ ├── 4.2.6 Hash tables │ │ └── 4.2.6.1 Hash tables.md │ └── 4.2.2 Queues │ │ └── 4.2.2.1 Queues.md ├── 4.3 Fundamentals of algorithms │ ├── 4.3.5 Sorting algorithms │ │ ├── 4.3.5.1 Bubble sort.md │ │ └── 4.3.5.2 Merge sort.md │ ├── 4.3.4 Searching algorithms │ │ ├── 4.3.4.1 Linear search.md │ │ ├── 4.3.4.2 Binary search.md │ │ └── 4.3.4.3 Binary tree search.md │ ├── 4.3.2 Tree-traversal │ │ ├── resources │ │ │ ├── in-order.png │ │ │ ├── pre-order.png │ │ │ └── post-order.png │ │ └── 4.3.2.1 Simple tree-traversal algorithms.md │ ├── 4.3.3 Reverse Polish │ │ ├── resources │ │ │ └── RPN-stack.png │ │ └── 4.3.3.1 Reverse Polish – infix transformations.md │ └── 4.3.1 Graph-traversal │ │ └── 4.3.1.1 Simple graph-traversal algorithms.md ├── 4.4 Theory of computation │ ├── 4.4.4 Classification of algorithms │ │ ├── 4.4.4.7 Halting problem.md │ │ ├── 4.4.4.3 Order of complexity.md │ │ ├── 4.4.4.4 Limits of computation.md │ │ ├── 4.4.4.2 Maths for understanding Big-0 notation.md │ │ ├── 4.4.4.5 Classification of algorithmic problems.md │ │ ├── 4.4.4.6 Computable and non-computable problems.md │ │ ├── resources │ │ │ └── growth-of-function.png │ │ └── 4.4.4.1 Comparing algorithms.md │ ├── 4.4.2 Regular languages │ │ ├── resources │ │ │ ├── state.png │ │ │ ├── acceptstate.png │ │ │ ├── inputoutput.png │ │ │ ├── startstate.png │ │ │ ├── inputoutput.svg │ │ │ ├── state.svg │ │ │ ├── startstate.svg │ │ │ └── acceptstate.svg │ │ ├── 4.4.2.1 Finite state machines (FSMs) with and without output.md │ │ ├── 4.4.2.2 Maths for regular expressions.md │ │ └── 4.4.2.3 Regular expressions.md │ ├── 4.4.5 A model of computation │ │ ├── resources │ │ │ ├── UTM.png │ │ │ ├── turingtape.png │ │ │ ├── turingtape2.png │ │ │ └── statetransition.png │ │ └── 4.4.5.1 Turing machine.md │ └── 4.4.3 Context-free languages │ │ ├── resources │ │ ├── ellipse.png │ │ ├── rectangle.png │ │ ├── repeating.png │ │ └── Old Spec Languages.pdf │ │ └── 4.4.3.1 Backus-Naur Form (BNF)-syntax diagrams.md ├── Definitions.md └── 4.1 Fundamentals of Programming │ ├── 4.1.2 Programming paradigms │ └── 4.1.2.3 Object-oriented programming.md │ └── 4.1.1 Programming │ └── 4.1.1.1 Data Types.md ├── LICENSE ├── Useful Links.md ├── tools └── table.py └── Readme.md /.gitignore: -------------------------------------------------------------------------------- 1 | *DS_STORE* 2 | -------------------------------------------------------------------------------- /Paper 2/4.11 Big Data/4.11.1 Big Data.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | main: 2 | ./tools/table.py Readme.md; 3 | -------------------------------------------------------------------------------- /Paper 1/4.2 Fundamentals of data structures/4.2.4 Graphs/4.2.4.1 Graphs.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 1/4.2 Fundamentals of data structures/4.2.8 Vectors/4.2.8.1 Vectors.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 1/4.2 Fundamentals of data structures/4.2.7 Dictionaries/4.2.7.1 Dictionaries.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 1/4.3 Fundamentals of algorithms/4.3.5 Sorting algorithms/4.3.5.1 Bubble sort.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 1/4.3 Fundamentals of algorithms/4.3.5 Sorting algorithms/4.3.5.2 Merge sort.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 1/4.3 Fundamentals of algorithms/4.3.4 Searching algorithms/4.3.4.1 Linear search.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 1/4.3 Fundamentals of algorithms/4.3.4 Searching algorithms/4.3.4.2 Binary search.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 1/4.3 Fundamentals of algorithms/4.3.4 Searching algorithms/4.3.4.3 Binary tree search.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 1/4.4 Theory of computation/4.4.4 Classification of algorithms/4.4.4.7 Halting problem.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 1/4.4 Theory of computation/4.4.4 Classification of algorithms/4.4.4.3 Order of complexity.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 1/4.4 Theory of computation/4.4.4 Classification of algorithms/4.4.4.4 Limits of computation.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 2/4.5 Fundamentals of data representation/4.5.4 Binary number system/4.5.4.5 Rounding errors.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 2/4.6 Fundamentals of computer systems/4.6.1 Hardware and software/4.6.1.3 System software.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 2/4.6 Fundamentals of computer systems/4.6.5 Boolean algebra/4.6.5.1 Using Boolean algebra.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 2/4.9 Fundamentals of communication and networking/4.9.2 Networking/4.9.2.1 Network topology.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 2/4.9 Fundamentals of communication and networking/4.9.3 The Internet/4.9.3.2 Internet security.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 2/4.13 Systematic approach to problem solving/4.13.1 Aspects of software development/4.13.1.2 Design.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 2/4.13 Systematic approach to problem solving/4.13.1 Aspects of software development/4.13.1.4 Testing.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 2/4.13 Systematic approach to problem solving/4.13.1 Aspects of software development/4.13.1.5 Evaluation.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 2/4.5 Fundamentals of data representation/4.5.5 Information coding systems/4.5.5.2 ASCII and Unicode.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 2/4.6 Fundamentals of computer systems/4.6.1 Hardware and software/4.6.1.2 Classification of software.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 1/4.4 Theory of computation/4.4.4 Classification of algorithms/4.4.4.2 Maths for understanding Big-0 notation.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 1/4.4 Theory of computation/4.4.4 Classification of algorithms/4.4.4.5 Classification of algorithmic problems.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 1/4.4 Theory of computation/4.4.4 Classification of algorithms/4.4.4.6 Computable and non-computable problems.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 2/4.13 Systematic approach to problem solving/4.13.1 Aspects of software development/4.13.1.3 Implementation.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 2/4.5 Fundamentals of data representation/4.5.4 Binary number system/4.5.4.4 Numbers with a fractional part.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 2/4.5 Fundamentals of data representation/4.5.4 Binary number system/4.5.4.6 Absolute and relative errors.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 2/4.5 Fundamentals of data representation/4.5.6 Representing images, sound and other data/4.5.6.10 Encryption.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 2/4.6 Fundamentals of computer systems/4.6.1 Hardware and software/4.6.1.4 Role of an operating system (OS).md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 2/4.6 Fundamentals of computer systems/4.6.3 Types of program translator/4.6.3.1 Types of program translator.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 2/4.5 Fundamentals of data representation/4.5.6 Representing images, sound and other data/4.5.6.5 Vector graphics.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 2/4.5 Fundamentals of data representation/4.5.6 Representing images, sound and other data/4.5.6.9 Data compression.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 2/4.5 Fundamentals of data representation/4.5.5 Information coding systems/4.5.5.1 Character form of a decimal digit.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 2/4.5 Fundamentals of data representation/4.5.6 Representing images, sound and other data/4.5.6.2 Analogue and digital.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 2/4.5 Fundamentals of data representation/4.5.6 Representing images, sound and other data/4.5.6.4 Bitmapped graphics.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 2/4.6 Fundamentals of computer systems/4.6.1 Hardware and software/4.6.1.1 Relationship between hardware and software.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 2/4.5 Fundamentals of data representation/4.5.6 Representing images, sound and other data/4.5.6.3 Analogue-digital conversion.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 2/4.5 Fundamentals of data representation/4.5.6 Representing images, sound and other data/4.5.6.7 Digital representation of sound.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 2/4.8 Consequences of uses of computing/4.8.1 Individual (moral), social (ethical), legal and cultural issues and opportunities.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 2/4.6 Fundamentals of computer systems/4.6.2 Classification of programming languages/4.6.2.1 Classification of programming languages.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 2/4.5 Fundamentals of data representation/4.5.6 Representing images, sound and other data/4.5.6.6 Vector graphics versus bitmapped graphics.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 2/4.5 Fundamentals of data representation/4.5.6 Representing images, sound and other data/4.5.6.1 Bit patterns, images, sound and other data.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 2/4.5 Fundamentals of data representation/4.5.6 Representing images, sound and other data/4.5.6.8 Musical Instrument Digital Interface (MIDI).md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 2/4.9 Fundamentals of communication and networking/4.9.4 The Transmission Control Protocol-Internet Protocol (TCP-IP) protocol/4.9.4.1 TCP-IP.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 2/4.9 Fundamentals of communication and networking/4.9.4 The Transmission Control Protocol-Internet Protocol (TCP-IP) protocol/4.9.4.4 Subnet masking.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 2/4.9 Fundamentals of communication and networking/4.9.4 The Transmission Control Protocol-Internet Protocol (TCP-IP) protocol/4.9.4.5 IP standards.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 2/4.9 Fundamentals of communication and networking/4.9.4 The Transmission Control Protocol-Internet Protocol (TCP-IP) protocol/4.9.4.9 Port forwarding.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 2/4.9 Fundamentals of communication and networking/4.9.4 The Transmission Control Protocol-Internet Protocol (TCP-IP) protocol/4.9.4.3 IP address structure.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 2/4.9 Fundamentals of communication and networking/4.9.4 The Transmission Control Protocol-Internet Protocol (TCP-IP) protocol/4.9.4.6 Public and private IP addresses.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 2/4.9 Fundamentals of communication and networking/4.9.4 The Transmission Control Protocol-Internet Protocol (TCP-IP) protocol/4.9.4.8 Network Address Translation (NAT).md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 2/4.9 Fundamentals of communication and networking/4.9.4 The Transmission Control Protocol-Internet Protocol (TCP-IP) protocol/4.9.4.11 Thin- versus thick-client computing.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 2/4.9 Fundamentals of communication and networking/4.9.4 The Transmission Control Protocol-Internet Protocol (TCP-IP) protocol/4.9.4.2 Standard application layer protocols.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 2/4.9 Fundamentals of communication and networking/4.9.4 The Transmission Control Protocol-Internet Protocol (TCP-IP) protocol/4.9.4.7 Dynamic Host Configuration Protocol (DHCP).md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Paper 1/4.4 Theory of computation/4.4.2 Regular languages/resources/state.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mhoare/compsci-notes/HEAD/Paper 1/4.4 Theory of computation/4.4.2 Regular languages/resources/state.png -------------------------------------------------------------------------------- /Paper 1/4.2 Fundamentals of data structures/4.2.5 Trees/resources/binary-tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mhoare/compsci-notes/HEAD/Paper 1/4.2 Fundamentals of data structures/4.2.5 Trees/resources/binary-tree.png -------------------------------------------------------------------------------- /Paper 1/4.4 Theory of computation/4.4.5 A model of computation/resources/UTM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mhoare/compsci-notes/HEAD/Paper 1/4.4 Theory of computation/4.4.5 A model of computation/resources/UTM.png -------------------------------------------------------------------------------- /Paper 2/4.6 Fundamentals of computer systems/4.6.4 Logic gates/resources/AND.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mhoare/compsci-notes/HEAD/Paper 2/4.6 Fundamentals of computer systems/4.6.4 Logic gates/resources/AND.gif -------------------------------------------------------------------------------- /Paper 2/4.6 Fundamentals of computer systems/4.6.4 Logic gates/resources/NAND.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mhoare/compsci-notes/HEAD/Paper 2/4.6 Fundamentals of computer systems/4.6.4 Logic gates/resources/NAND.png -------------------------------------------------------------------------------- /Paper 2/4.6 Fundamentals of computer systems/4.6.4 Logic gates/resources/NOR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mhoare/compsci-notes/HEAD/Paper 2/4.6 Fundamentals of computer systems/4.6.4 Logic gates/resources/NOR.png -------------------------------------------------------------------------------- /Paper 2/4.6 Fundamentals of computer systems/4.6.4 Logic gates/resources/NOT.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mhoare/compsci-notes/HEAD/Paper 2/4.6 Fundamentals of computer systems/4.6.4 Logic gates/resources/NOT.gif -------------------------------------------------------------------------------- /Paper 2/4.6 Fundamentals of computer systems/4.6.4 Logic gates/resources/OR.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mhoare/compsci-notes/HEAD/Paper 2/4.6 Fundamentals of computer systems/4.6.4 Logic gates/resources/OR.gif -------------------------------------------------------------------------------- /Paper 2/4.6 Fundamentals of computer systems/4.6.4 Logic gates/resources/XOR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mhoare/compsci-notes/HEAD/Paper 2/4.6 Fundamentals of computer systems/4.6.4 Logic gates/resources/XOR.png -------------------------------------------------------------------------------- /Paper 1/4.3 Fundamentals of algorithms/4.3.2 Tree-traversal/resources/in-order.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mhoare/compsci-notes/HEAD/Paper 1/4.3 Fundamentals of algorithms/4.3.2 Tree-traversal/resources/in-order.png -------------------------------------------------------------------------------- /Paper 1/4.3 Fundamentals of algorithms/4.3.2 Tree-traversal/resources/pre-order.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mhoare/compsci-notes/HEAD/Paper 1/4.3 Fundamentals of algorithms/4.3.2 Tree-traversal/resources/pre-order.png -------------------------------------------------------------------------------- /Paper 1/4.3 Fundamentals of algorithms/4.3.3 Reverse Polish/resources/RPN-stack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mhoare/compsci-notes/HEAD/Paper 1/4.3 Fundamentals of algorithms/4.3.3 Reverse Polish/resources/RPN-stack.png -------------------------------------------------------------------------------- /Paper 1/4.4 Theory of computation/4.4.2 Regular languages/resources/acceptstate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mhoare/compsci-notes/HEAD/Paper 1/4.4 Theory of computation/4.4.2 Regular languages/resources/acceptstate.png -------------------------------------------------------------------------------- /Paper 1/4.4 Theory of computation/4.4.2 Regular languages/resources/inputoutput.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mhoare/compsci-notes/HEAD/Paper 1/4.4 Theory of computation/4.4.2 Regular languages/resources/inputoutput.png -------------------------------------------------------------------------------- /Paper 1/4.4 Theory of computation/4.4.2 Regular languages/resources/startstate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mhoare/compsci-notes/HEAD/Paper 1/4.4 Theory of computation/4.4.2 Regular languages/resources/startstate.png -------------------------------------------------------------------------------- /Paper 1/4.2 Fundamentals of data structures/4.2.5 Trees/resources/non-rooted-tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mhoare/compsci-notes/HEAD/Paper 1/4.2 Fundamentals of data structures/4.2.5 Trees/resources/non-rooted-tree.png -------------------------------------------------------------------------------- /Paper 1/4.3 Fundamentals of algorithms/4.3.2 Tree-traversal/resources/post-order.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mhoare/compsci-notes/HEAD/Paper 1/4.3 Fundamentals of algorithms/4.3.2 Tree-traversal/resources/post-order.png -------------------------------------------------------------------------------- /Paper 1/4.4 Theory of computation/4.4.3 Context-free languages/resources/ellipse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mhoare/compsci-notes/HEAD/Paper 1/4.4 Theory of computation/4.4.3 Context-free languages/resources/ellipse.png -------------------------------------------------------------------------------- /Paper 1/4.4 Theory of computation/4.4.3 Context-free languages/resources/rectangle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mhoare/compsci-notes/HEAD/Paper 1/4.4 Theory of computation/4.4.3 Context-free languages/resources/rectangle.png -------------------------------------------------------------------------------- /Paper 1/4.4 Theory of computation/4.4.3 Context-free languages/resources/repeating.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mhoare/compsci-notes/HEAD/Paper 1/4.4 Theory of computation/4.4.3 Context-free languages/resources/repeating.png -------------------------------------------------------------------------------- /Paper 1/4.4 Theory of computation/4.4.5 A model of computation/resources/turingtape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mhoare/compsci-notes/HEAD/Paper 1/4.4 Theory of computation/4.4.5 A model of computation/resources/turingtape.png -------------------------------------------------------------------------------- /Paper 1/4.4 Theory of computation/4.4.5 A model of computation/resources/turingtape2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mhoare/compsci-notes/HEAD/Paper 1/4.4 Theory of computation/4.4.5 A model of computation/resources/turingtape2.png -------------------------------------------------------------------------------- /Paper 2/4.6 Fundamentals of computer systems/4.6.4 Logic gates/resources/full-adder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mhoare/compsci-notes/HEAD/Paper 2/4.6 Fundamentals of computer systems/4.6.4 Logic gates/resources/full-adder.png -------------------------------------------------------------------------------- /Paper 2/4.6 Fundamentals of computer systems/4.6.4 Logic gates/resources/half-adder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mhoare/compsci-notes/HEAD/Paper 2/4.6 Fundamentals of computer systems/4.6.4 Logic gates/resources/half-adder.png -------------------------------------------------------------------------------- /Paper 2/4.6 Fundamentals of computer systems/4.6.4 Logic gates/resources/edge-trigger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mhoare/compsci-notes/HEAD/Paper 2/4.6 Fundamentals of computer systems/4.6.4 Logic gates/resources/edge-trigger.png -------------------------------------------------------------------------------- /Paper 1/4.4 Theory of computation/4.4.5 A model of computation/resources/statetransition.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mhoare/compsci-notes/HEAD/Paper 1/4.4 Theory of computation/4.4.5 A model of computation/resources/statetransition.png -------------------------------------------------------------------------------- /Paper 2/4.6 Fundamentals of computer systems/4.6.4 Logic gates/resources/edge-trigger-neg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mhoare/compsci-notes/HEAD/Paper 2/4.6 Fundamentals of computer systems/4.6.4 Logic gates/resources/edge-trigger-neg.png -------------------------------------------------------------------------------- /Paper 1/4.4 Theory of computation/4.4.3 Context-free languages/resources/Old Spec Languages.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mhoare/compsci-notes/HEAD/Paper 1/4.4 Theory of computation/4.4.3 Context-free languages/resources/Old Spec Languages.pdf -------------------------------------------------------------------------------- /Paper 2/4.9 Fundamentals of communication and networking/4.9.3 The Internet/resources/packet.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mhoare/compsci-notes/HEAD/Paper 2/4.9 Fundamentals of communication and networking/4.9.3 The Internet/resources/packet.gif -------------------------------------------------------------------------------- /Paper 2/4.9 Fundamentals of communication and networking/4.9.3 The Internet/resources/routing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mhoare/compsci-notes/HEAD/Paper 2/4.9 Fundamentals of communication and networking/4.9.3 The Internet/resources/routing.png -------------------------------------------------------------------------------- /Paper 1/4.4 Theory of computation/4.4.4 Classification of algorithms/resources/growth-of-function.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mhoare/compsci-notes/HEAD/Paper 1/4.4 Theory of computation/4.4.4 Classification of algorithms/resources/growth-of-function.png -------------------------------------------------------------------------------- /Paper 2/4.5 Fundamentals of data representation/4.5.1 Number systems/4.5.1.4 Irrational numbers.md: -------------------------------------------------------------------------------- 1 | # Irrational Numbers 2 | 3 | An irrational number is any number which *cannot* be written as a fraction. 4 | 5 | Examples include: 6 | 7 | * sqrt(2) 8 | * Pi 9 | * e 10 | 11 | 12 | -------------------------------------------------------------------------------- /Paper 2/4.5 Fundamentals of data representation/4.5.1 Number systems/4.5.1.2 Integer numbers.md: -------------------------------------------------------------------------------- 1 | # Integer Numbers 2 | 3 | > Be familiar with the concept of an integer and the 4 | > set ℤ of integers. 5 | 6 | Integers are both positive and negative numbers and zero. 7 | 8 | > ℤ = { ..., -3, -2, -1, 0, 1, 2, 3, ... } 9 | -------------------------------------------------------------------------------- /Paper 1/4.2 Fundamentals of data structures/4.2.1 Data structures and abstract data types/resources/7F130E02A33C129A9075688992AD984A.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mhoare/compsci-notes/HEAD/Paper 1/4.2 Fundamentals of data structures/4.2.1 Data structures and abstract data types/resources/7F130E02A33C129A9075688992AD984A.jpg -------------------------------------------------------------------------------- /Paper 2/4.5 Fundamentals of data representation/4.5.1 Number systems/4.5.1.1 Natural numbers.md: -------------------------------------------------------------------------------- 1 | # Natural Numbers 2 | 3 | ## What are natural numbers? 4 | 5 | > Be familiar with the concept of a natural number 6 | > and the set ℕ of natural numbers (including zero). 7 | 8 | Natural numbers are all the positive integers and zero. 9 | 10 | N = {0, 1, 2, 3, 4, ...} 11 | -------------------------------------------------------------------------------- /Paper 2/4.5 Fundamentals of data representation/4.5.1 Number systems/4.5.1.3 Rational numbers.md: -------------------------------------------------------------------------------- 1 | # Rational Numbers 2 | 3 | > Be familiar with the concept of a rational number 4 | > and the set ℚ of rational numbers, and that this 5 | > set includes the integers. 6 | 7 | A rational number is any number that can be written as a fraction. These include the positive and negative integers since they can be written as a fraction over 1. 8 | -------------------------------------------------------------------------------- /Paper 2/4.5 Fundamentals of data representation/4.5.1 Number systems/4.5.1.7 Counting and measurement.md: -------------------------------------------------------------------------------- 1 | # Counting and measurement 2 | 3 | > Be familiar with the use of: 4 | > * natural numbers for counting 5 | > * real numbers for measurement. 6 | 7 | The natural numbers are used for counting, i.e. 1,2,3,4,5... 8 | 9 | The real numbers are used for measurement since most values that are measured are decimal or in terms of irrational numbers. 10 | -------------------------------------------------------------------------------- /Paper 2/4.5 Fundamentals of data representation/4.5.1 Number systems/4.5.1.5 Real numbers.md: -------------------------------------------------------------------------------- 1 | # Real Number 2 | 3 | > Be familiar with the concept of a real number and 4 | > the set ℝ of real numbers, which includes the 5 | > natural numbers, the rational numbers and the 6 | > irrational numbers. 7 | 8 | A real number is any number which can be represented in the real world. These include the rationals, irrationals, integers and natural numbers. 9 | 10 | **Additional Information** 11 | > ℝ is the set of all 'possible real world quantities'. 12 | -------------------------------------------------------------------------------- /Paper 2/4.5 Fundamentals of data representation/4.5.4 Binary number system/4.5.4.1 Unsigned binary.md: -------------------------------------------------------------------------------- 1 | # Unsigned Binary 2 | 3 | > Know the difference between unsigned binary and 4 | > signed binary. 5 | 6 | > Know that in unsigned binary the minimum and 7 | > maximum values for a given number of bits, n, 8 | > are 0 and 2n -1 respectively. 9 | 10 | Unsigned binary is used to represent only positive numbers, there is no sign included and therefore the minimum and maximum values which can be stored for *n* bits are 0 and 2n - 1. 11 | -------------------------------------------------------------------------------- /Paper 1/4.2 Fundamentals of data structures/4.2.1 Data structures and abstract data types/4.2.1.1 Data structures.md: -------------------------------------------------------------------------------- 1 | # Data structures 2 | 3 | > Be familiar with the concept of data structures 4 | 5 | ## What is a data structure? 6 | 7 | A data structure is the name given to any method used to store data in an organised and accessible format. 8 | 9 | ## Common data structures 10 | 11 | Common data structures include but are not limited to: 12 | * Single-dimensional Arrays 13 | * Multi-dimensional Arrays 14 | * Fields 15 | * Records 16 | * Files 17 | 18 | -------------------------------------------------------------------------------- /Paper 2/4.5 Fundamentals of data representation/4.5.4 Binary number system/4.5.4.7 Range and precision.md: -------------------------------------------------------------------------------- 1 | # Range and precision 2 | 3 | ## Fixed point 4 | | Advantages | Disadvantages | 5 | | :--------- | :------------ | 6 | | Numbers are represented exactly | Provides a very limited range | 7 | | Faster processing times compared with floating point numbers | | 8 | 9 | ## Floating point 10 | | Advantages | Disadvantages | 11 | | :--------- | :------------ | 12 | | Provides a very large range | Rounds off large numbers | 13 | | | Slower processing times | 14 | -------------------------------------------------------------------------------- /Paper 2/4.7 Fundamentals of computer organisation and architecture/4.7.2 The stored program concept/4.7.2.1 The meaning of the stored program concept.md: -------------------------------------------------------------------------------- 1 | # The stored program concept 2 | > Be able to describe the stored program concept: 3 | Machine code instructions stored in main memory are fetched and executed serially by a processor that performs arithmetic and logical operations. 4 | 5 | * The program must be resident in main memory to be executed. 6 | * The program is processed by fetching machine-code instructions in sequence from main memory and executing them, one at a time, in processor. 7 | -------------------------------------------------------------------------------- /Paper 2/4.5 Fundamentals of data representation/4.5.1 Number systems/4.5.1.6 Ordinal numbers.md: -------------------------------------------------------------------------------- 1 | # Ordinal Numbers 2 | 3 | > Be familiar with the concept of ordinal numbers 4 | > and their use to describe the numerical positions 5 | > of objects. 6 | 7 | Ordinal numbers are used to describe the position of an item in a set. For example: 8 | * 1st 9 | * 2nd 10 | * 3rd 11 | * ... 12 | 13 | **Additional Information** 14 | > When objects are placed in order, ordinal 15 | > numbers are used to tell their position. For 16 | > example, if we have a well-ordered set S = {‘a’, 17 | > ‘b’, ‘c’, ‘d’}, then ‘a’ is the 1st object, ‘b’ the 2nd, 18 | > and so on. 19 | -------------------------------------------------------------------------------- /Paper 2/4.5 Fundamentals of data representation/4.5.4 Binary number system/4.5.4.9 Underflow and overflow.md: -------------------------------------------------------------------------------- 1 | # Underflow and overflow 2 | 3 | > Explain underflow and overflow and describe the 4 | > circumstances in which they occur. 5 | 6 | ## Underflow 7 | 8 | Underflow is when a number is too small to be represented in the given number of bits. Usually occurs when a very small number is subtracted from a very large number, or a large number is divided by a much larger number. 9 | 10 | ## Overflow 11 | 12 | Overflow is when a number is too large to be represented in the given number of bits. Usually occurs when two large numbers are added together. 13 | -------------------------------------------------------------------------------- /Paper 2/4.10 Fundamentals of databases/4.10.1 Conceptual data models and entity relationship modelling/4.10.1.1 Conceptual data models and entity relationship modelling.md: -------------------------------------------------------------------------------- 1 | # Data models and Entity Relationship Modelling 2 | 3 | > Produce a data model from given data 4 | > requirements for a simple scenario involving 5 | > multiple entities. 6 | 7 | ## Entity Relationship diagrams (ERD) 8 | 9 | > Produce entity relationship diagrams representing 10 | > a data model and entity descriptions in the form: 11 | > Entity1 (Attribute1, Attribute2, .... ). 12 | 13 | ### *Additional Information* 14 | > Underlining can be used to identify the attribute(s) 15 | > which form the entity identifier (primary key) 16 | -------------------------------------------------------------------------------- /Paper 2/4.12 Fundamentals of functional programming/4.12.1 Functional programming paradigm/4.12.1.3 Function application.md: -------------------------------------------------------------------------------- 1 | # Function Application 2 | 3 | > Know that function application means a function 4 | > applied to its arguments. 5 | 6 | ## What is function application? 7 | 8 | Function application is the the process of giving particular inputs to a function. 9 | 10 | ## Example 11 | 12 | ``` 13 | add (x, y) 14 | 15 | add (3,4) 16 | ``` 17 | 18 | In the above example, the add function is *applied* to the arguments `3` and `4`. 19 | 20 | #### *Additional Information* 21 | 22 | > Although we would say that function `add` takes two 23 | > arguments, in fact it takes only one argument, 24 | > which is a pair, for example (3,4). 25 | -------------------------------------------------------------------------------- /Paper 2/4.12 Fundamentals of functional programming/4.12.2 Writing functional programs/4.12.2.1 Functional language programs.md: -------------------------------------------------------------------------------- 1 | # Functional Programs 2 | 3 | > Show experience of constructing simple 4 | > programs in a functional programming 5 | > language. 6 | 7 | ## Higher order functions 8 | 9 | A function is higher-order if it takes a function as an 10 | argument or returns a function as a result, or does 11 | both. 12 | 13 | ### Examples of higher order functions 14 | 15 | | Function | Use | Example | 16 | | :------: | :-: | :------ | 17 | | map | Applying a function to every element in a list | `map (+2) [1..10]` - adds two to every element | 18 | | filter | Filtering a list based on a provided function | `filter (<5) [1..10]` - returns elements less than 5 | 19 | | reduce / fold | Reduces a list of values to a single value by applying a combining function to the list | | 20 | -------------------------------------------------------------------------------- /Paper 2/4.5 Fundamentals of data representation/4.5.3 Units of information/4.5.3.1 Bits and bytes.md: -------------------------------------------------------------------------------- 1 | # Bits and bytes 2 | 3 | > Know that: 4 | > * the bit is the fundamental unit of information 5 | > * a byte is a group of 8 bits. 6 | 7 | A bit is the fundamental unit of information and is represented as either a `0` or `1`. A group of 8 bits is called a byte. 8 | 9 | ## Values which can the be represented 10 | 11 | > Know that the 2n 12 | > different values can be 13 | > represented with n bits. 14 | 15 | 2n different values can be represented using n bits 16 | however the maximum value is 2n - 1. 17 | 18 | **Example** 19 | 20 | The 8 values which can be represented using 3 bits are: 21 | 22 | | Value | Binary | 23 | | :---: | :----: | 24 | | 0 | 000 | 25 | | 1 | 001 | 26 | | 2 | 010 | 27 | | 3 | 011 | 28 | | 4 | 100 | 29 | | 5 | 101 | 30 | | 6 | 110 | 31 | | 7 | 111 | 32 | -------------------------------------------------------------------------------- /Paper 2/4.5 Fundamentals of data representation/4.5.4 Binary number system/4.5.4.8 Normalisation of floating point form.md: -------------------------------------------------------------------------------- 1 | # Normalisation of floating point form 2 | 3 | > Know why floating point numbers are normalised 4 | > and be able to normalise un-normalised 5 | > floating point number with positive and negative 6 | > mantissas. 7 | 8 | ## Why are fp numbers normalised? 9 | 10 | Normalisation of floating point numbers is the process of moving the binary digit so that the first digit after the point is a significant digit. 11 | This maximises precision in a given number of bits. 12 | The bits before and after the binary point will be different in a normalised floating point number. 13 | 14 | **Example** 15 | 16 | A negative number in floating point representation will have a mantissa starting with: 17 | ``` 18 | 1.0..... 19 | ``` 20 | 21 | and a positive number will start with: 22 | ``` 23 | 0.1............. 24 | ``` 25 | -------------------------------------------------------------------------------- /Paper 2/4.10 Fundamentals of databases/4.10.5 Client server databases/4.10.5.1 Client server databases.md: -------------------------------------------------------------------------------- 1 | # Client server databases 2 | 3 | > Know that a client server database system 4 | > provides simultaneous access to the database for 5 | > multiple clients. 6 | 7 | ## Concurrent Access 8 | > Know how concurrent access can be controlled to 9 | > preserve the integrity of the database. 10 | 11 | Concurrent access can result in the problem of 12 | updates being lost if two clients edit a record at 13 | the same time. This problem can be managed by 14 | the use of: 15 | * record locks 16 | * serialisation 17 | * timestamp ordering 18 | * commitment ordering 19 | 20 | ### Record Locks 21 | Information about which records are currently being accessed will be maintained. 22 | When a user tries to access a record, check this information and only permit access if the record is not currently being used. 23 | 24 | ### Transaction queueing 25 | Database changes are grouped as transactions and queued. 26 | Database software processes the queue (FIFO). 27 | -------------------------------------------------------------------------------- /Paper 2/4.5 Fundamentals of data representation/4.5.3 Units of information/4.5.3.2 Units.md: -------------------------------------------------------------------------------- 1 | # Units 2 | 3 | > Know that quantities of bytes can be described 4 | using binary prefixes representing powers of 2 or 5 | using decimal prefixes representing powers of 10, 6 | eg one kibibyte is written as 1KiB = 210B and one 7 | kilobyte is written as 1kB = 103B. 8 | 9 | ## Names and symbols for powers of 2 10 | 11 | | Name | Symbol | Power | 12 | | :--: | :----: | :---: | 13 | | kibi | Ki | 210 | 14 | | mebi | Mi | 220 | 15 | | gibi | Gi | 230 | 16 | | tebi | Ti | 240 | 17 | 18 | ## Names and symbols for powers of 10 19 | 20 | | Name | Symbol | Power | 21 | | :--: | :----: | :---: | 22 | | kilo | k | 103 | 23 | | mega | M | 106 | 24 | | giga | G | 109 | 25 | | tera | T | 1012 | 26 | 27 | **Additional Information** 28 | 29 | > Historically the terms kilobyte, megabyte, etc 30 | have often been used when kibibyte, mebibyte, 31 | etc are meant. 32 | -------------------------------------------------------------------------------- /Paper 1/4.4 Theory of computation/4.4.2 Regular languages/4.4.2.1 Finite state machines (FSMs) with and without output.md: -------------------------------------------------------------------------------- 1 | # Finite State Machines (FSM) 2 | 3 | > Be able to draw and interpret simple state 4 | > transition diagrams and state transition tables 5 | > for FSMs with no output and with output (Mealy 6 | > machines only). 7 | 8 | ## What is a Finite State Machine? 9 | 10 | A finite state machine is an abstract machine which can be in exactly one of a *finite* number of *states* at any given time. 11 | 12 | ## What are the uses of FSM? 13 | 14 | ## Outputs 15 | 16 | FSMs can have outputs but this is not required. Those that do not have outputs are known as **Finite State Automata** (FSA). 17 | 18 | ## Mealy Machines 19 | 20 | ## Non-deterministic FSA 21 | 22 | ## Symbols 23 | 24 | | Name | Symbol | 25 | | :--: | :----: | 26 | | State | ![](resources/state.svg)| 27 | | Start State | ![](resources/startstate.svg)| 28 | | Accept / End State | ![](resources/acceptstate.svg)| 29 | | Transition where `i` is input and `j` is output | ![](resources/inputoutput.svg)| 30 | -------------------------------------------------------------------------------- /Paper 1/4.3 Fundamentals of algorithms/4.3.1 Graph-traversal/4.3.1.1 Simple graph-traversal algorithms.md: -------------------------------------------------------------------------------- 1 | # Simple graph-traversal algorithms 2 | 3 | > Be able to trace breadth-first and depth-first 4 | > search algorithms and describe typical 5 | > applications of both. 6 | 7 | ## Bredth-first 8 | 9 | ### Tracing breadth-first 10 | 11 | ### Applications of bredth-first search 12 | 13 | * Shortest Path and Minimum Spanning Tree for unweighted graph 14 | * P2P networks - used to find all neighbour nodes 15 | * Social Networking Websites - finding people who are *k* away from you (friend of a friend etc) 16 | 17 | ## Depth-first 18 | 19 | ### Tracing depth-first 20 | 21 | ### Applications of depth-first search 22 | 23 | * Solving puzzles with only one solution - e.g. mazes 24 | * Detecting cycle in a graph - A graph has cycle if and only if we see a back edge during DFS. So we can run DFS for the graph and check for back edges. 25 | 26 | ### *Additional information* 27 | > Breadth-first: shortest path for an unweighted 28 | > graph. 29 | > Depth-first: Navigating a maze. 30 | -------------------------------------------------------------------------------- /Paper 2/4.10 Fundamentals of databases/4.10.2 Relational databases/4.10.2.1 Relational databases.md: -------------------------------------------------------------------------------- 1 | # Relational Databases 2 | 3 | > Explain the concept of a relational database. 4 | 5 | A relational database is a database where data is structured 6 | as a series of related tables or entities. 7 | 8 | ## Examples of relational databases include: 9 | 10 | * A student timetable app - where each student has many lessons 11 | * A booking system - where each booking has a single time but one person may have many bookings 12 | 13 | ## Definitions 14 | 15 | > Be able to define the terms: 16 | > * attribute 17 | > * primary key 18 | > * composite primary key 19 | > * foreign key 20 | 21 | | Key term | Definition | 22 | | :------: | :--------- | 23 | | Attribute | An attribute describes the facts, details or characteristics of an entity | 24 | | Primary Key | An attribute that uniquely identifies a record | 25 | | Composite Primary Key | A set of attributes which *together* uniquely identify a record | 26 | | Foreign Key | An attribute of one table which is the primary key of another | 27 | -------------------------------------------------------------------------------- /Paper 1/Definitions.md: -------------------------------------------------------------------------------- 1 | # Definitions 2 | 3 | Useful definitions 4 | 5 | | Name | Definition | Additional info | 6 | | :----: | :---------- | :--------------- | 7 | | Heap | A pool of unused memory, used to allocate space for new data items | Allows more efficient use of memory when dealing with data of an unknown and changing size | 8 | | Stack Frame | The area where all parameters and local variables are stored until the end of the routine. | | 9 | | Call stack | A special type of stack used to store information about active subroutines and functions. | The function is called and data passed to it. The return address is placed on the stack so that when the function is finished, it will look to the return address so it knows where to return to.
The subroutine is running using local variables.
When a function is called, the current position is saved in the stack as a saved frame pointer. | 10 | | Enqueue | Add an element to a queue | | 11 | | Dequeue | Remove an element from a queue | | 12 | | Regular Languages | A regular language is any language which can be accepted by and FSM. | | 13 | -------------------------------------------------------------------------------- /Paper 2/4.12 Fundamentals of functional programming/4.12.1 Functional programming paradigm/4.12.1.2 First-class object.md: -------------------------------------------------------------------------------- 1 | # First-class Objects 2 | 3 | > Know that a function is a first-class object in 4 | > functional programming languages and in 5 | > imperative programming languages that support 6 | > such objects. This means that it can be an 7 | > argument to another function as well as the result 8 | > of a function call. 9 | 10 | When calling a function, the name given to a type of object which can be passed in or returned is *first-class object*. 11 | 12 | A first class object is any object / value which may: 13 | * appear in expressions 14 | * be assigned to a variable 15 | * be assigned as arguments 16 | * be returned in function calls 17 | 18 | ## Examples of First Class Objects 19 | 20 | 1. Integer 21 | 2. Floating-point values 22 | 3. Characters 23 | 4. Strings 24 | 25 | ## First Class Objects in Functional Programming 26 | 27 | In functional languages, functions are treated as first class objects. 28 | 29 | This is what enables ideas such as *currying* and *partial application* to become reality. 30 | -------------------------------------------------------------------------------- /Paper 2/4.12 Fundamentals of functional programming/4.12.1 Functional programming paradigm/4.12.1.5 Composition of functions.md: -------------------------------------------------------------------------------- 1 | # Function Composition 2 | 3 | ## What is meant by function composition? 4 | 5 | > Know what is meant by composition of 6 | > functions. 7 | 8 | Function composition is the process of combining a series of functions into a single function. 9 | 10 | It is exactly the same as function composition in maths. 11 | 12 | ## Example 13 | 14 | ``` 15 | f( x ) = 2x + 3 16 | 17 | g( x ) = 4x 18 | 19 | g( f( x ) ) = g . f = 4( 2x + 3 ) 20 | ``` 21 | 22 | #### *Additional Information* 23 | 24 | > The operation functional composition combines two 25 | > functions to get a new function. 26 | > 27 | > Given two functions 28 | > f: A -> B 29 | > g: B -> C 30 | > 31 | > function g . f, called the composition of g and f, is a 32 | > function whose domain is A and co-domain is C. 33 | > 34 | > If the domain and co-domains of f and g are real, and 35 | > f(x) = (x + 2) and g(y) = y^3. Then 36 | > 37 | > g . f = (x + 2)^3 38 | > 39 | > f is applied first and then g is applied to the result 40 | > returned by f. 41 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017-present Matthew Hoare 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Paper 1/4.2 Fundamentals of data structures/4.2.5 Trees/4.2.5.1 Trees (including binary trees).md: -------------------------------------------------------------------------------- 1 | # Trees 2 | 3 | ## What is a tree? 4 | > Know that a tree is a connected, undirected graph 5 | > with no cycles. 6 | 7 | > *Note that a tree does not have to have a root.* 8 | 9 | Example of a tree without a root: 10 | 11 | ![](resources/non-rooted-tree.png) 12 | 13 | > Know that a rooted tree is a tree in which one 14 | > vertex has been designated as the root. A rooted 15 | > tree has parent-child relationships between 16 | > nodes. The root is the only node with no parent 17 | > and all other nodes are descendants of the root. 18 | 19 | > Know that a binary tree is a rooted tree in which 20 | > each node has at most two children. 21 | 22 | > *A common application of a binary tree is as a 23 | > binary search tree.* 24 | 25 | Example of a binary tree: 26 | ![](resources/binary-tree.png) 27 | 28 | ## Uses of rooted trees 29 | 30 | > Be familiar with typical uses for rooted trees. 31 | 32 | * To store data which has an inherent hierarchical structure (e.g. file system) 33 | * To search and sort data 34 | * To process the syntax of statements in natural and programming languages for compiling programming code 35 | -------------------------------------------------------------------------------- /Paper 2/4.9 Fundamentals of communication and networking/4.9.4 The Transmission Control Protocol-Internet Protocol (TCP-IP) protocol/4.9.4.10 Client server model.md: -------------------------------------------------------------------------------- 1 | # Client Server Model 2 | 3 | ## The Client Server Model 4 | 5 | > Be familiar with the client server model. 6 | 7 | 8 | ####*Additional Information* 9 | > Client sends a request message to server, server 10 | > responds to request by replying with a response 11 | > message to client. 12 | 13 | ## Websockets 14 | 15 | > Be familiar with the Websocket protocol and know 16 | > why it is used and where it is used. 17 | 18 | ## REST and CRUD 19 | 20 | ### Relationships between CRUD, HTTP and SQL 21 | 22 | | HTTP Method | CRUD Method | SQL Function | 23 | | :---------: | :---------: | :----------: | 24 | | GET | Retreive | `SELECT` | 25 | | POST | Create | `INSERT` | 26 | | PUT | Update | `UPDATE` | 27 | | DELETE | Delete | `DELETE` | 28 | 29 | ####*Additional Information* 30 | > The Websocket specification defines an API 31 | > (Application Programming Interface) establishing 32 | > a full-duplex 'socket' connection between a web 33 | > browser and a server over TCP. This means that 34 | > there is a persistent connection between client 35 | > and server, allowing both parties to send data at 36 | > any time. 37 | -------------------------------------------------------------------------------- /Paper 1/4.2 Fundamentals of data structures/4.2.1 Data structures and abstract data types/4.2.1.2 Single- and multi-dimensional arrays.md: -------------------------------------------------------------------------------- 1 | # Single and Multi-dimensional arrays 2 | 3 | > Use arrays (or equivalent) in the design of solutions 4 | to simple problems 5 | 6 | ## What is an array? 7 | An array is a collection of data items of the same data type. 8 | Each item can be accessed directly via it's index (position in the array). 9 | 10 | Array access is very fast as each element can be accessed directly. 11 | 12 | ## What is a multi-dimensional array? 13 | A multi-dimensional array is an array with more than one dimension. Think of it as a series of arrays inside of eachother. 14 | 15 | An *n*-dimensional array can be represented mathematically as an *n*-dimensional matrix. 16 | 17 | ### Uses of a multi-dimensional array 18 | A multi-dimensional array may be used when representing a matrix. 19 | 20 | ## *Additional information* 21 | 22 | > A one-dimensional array is a useful way of 23 | > representing a vector. A two-dimensional array 24 | > is a useful way of representing a matrix. More 25 | > generally, an n-dimensional array is a set of 26 | > elements with the same data type that are 27 | > indexed by a tuple of n integers, where a tuple is 28 | > an ordered list of elements. 29 | -------------------------------------------------------------------------------- /Paper 2/4.5 Fundamentals of data representation/4.5.2 Number bases/4.5.2.1 Number base.md: -------------------------------------------------------------------------------- 1 | # Number Bases 2 | 3 | > Be familiar with the concept of a number base, in 4 | > particular: 5 | > * decimal (base 10) 6 | > * binary (base 2) 7 | > * hexadecimal (base 16). 8 | 9 | Binary is base 2 meaning that only a `0` or a `1` can be used to represent numbers. 10 | 11 | Decimal is base 10, meaning the numbers 0-9 are used to represent numbers (this is the standard base). 12 | 13 | Hexadecimal is base 16, since there are only 10 numbers the final 16 must be made up using letters. The set used to represent hexadecimal is as follows: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} 14 | 15 | ## Converting 16 | 17 | > Convert between decimal, binary and hexadecimal number bases. 18 | 19 | | Start Base | Final Base | How to | Example | 20 | | :--------- | :--------- | :----- | :------ | 21 | | Decimal | Binary | Remove the largest power of two possible and place a 1 in that column in the binary number.
Then remove the largest power of two and do the same, repeat until the number has been fully represented. | 176 to binary
Step 1: `176 - 128` = 48, Binary: `1 0000000`.
Step 2: `48 - 32 = 16`, Binary: `1 0 1 00000`
Step 3: `16 - 16 = 0`, Binary: `1 0 1 1 0 0 0 0`
176 = `10110000` | 22 | | Binary to Hex | | | 23 | | Hex to Binary | | | 24 | -------------------------------------------------------------------------------- /Paper 1/4.2 Fundamentals of data structures/4.2.3 Stacks/4.2.3.1 Stacks.md: -------------------------------------------------------------------------------- 1 | # Stacks 2 | 3 | > Be able to describe and apply the following operations: 4 | > * Push 5 | > * Pop 6 | > * Peek / Top 7 | > * Test for empty stack 8 | > * Test for stack full 9 | 10 | ## Operations and descriptions 11 | 12 | | Operation | Description | 13 | | :-------: | :---------- | 14 | | Push | Adds a new item to the top of the stack | 15 | | Pop | Removes the top item from the stack | 16 | | Peek / Top | Returns the top item of the stack *but* does not remove it | 17 | 18 | ## Pseudocode 19 | 20 | ### Push 21 | 22 | ```scala 23 | IF Stack is full THEN 24 | Error 25 | ELSE 26 | Stack.top = Stack.top + 1 27 | Stack[Stack.top] = "Ian" 28 | END IF 29 | ``` 30 | 31 | ### Pop 32 | 33 | ```scala 34 | IF Stack is empty THEN 35 | Error 36 | ELSE 37 | Stack[Stack.top] = NULL 38 | Stack.top = Stack.top - 1 39 | END IF 40 | ``` 41 | 42 | ### Testing for an empty stack 43 | 44 | ```scala 45 | IF Stack.top == -1 THEN 46 | return true 47 | ELSE 48 | return false 49 | END IF 50 | ``` 51 | 52 | ### Testing for full stack 53 | 54 | ```scala 55 | IF Stack.top == Stack.size THEN 56 | return true 57 | ELSE 58 | return false 59 | END IF 60 | ``` 61 | 62 | 63 | ### *Additional information* 64 | 65 | > Peek or top returns the value of the top element 66 | > without removing it. 67 | -------------------------------------------------------------------------------- /Paper 2/4.7 Fundamentals of computer organisation and architecture/4.7.3 Structure and role of the processor and its components/4.7.3.2 The Fetch-Execute cycle and the role of registers within it.md: -------------------------------------------------------------------------------- 1 | # The Fetch-Execute Cycle 2 | 3 | > Explain how the Fetch-Execute cycle is used to execute machine code programs including the stages in the cycle (fetch, decode, execute) and details of registers used. 4 | 5 | ## Fetch: 6 | 1. Contents of Program Counter transferred to Memory Address Register 7 | * Address bus used to transfer this address to main memory 8 | 2. Contents of addressed memory location loaded into the Memory Buffer Register 9 | * Transfer of content uses the data bus 10 | 3. Increment contents of Program Counter 11 | * Increment Program Counter and fetch simultaneously 12 | 4. Transfer content of Memory Buffer Register to the Current Instruction Register 13 | 14 | ## Decode: 15 | 5. Decode instruction held by the Current Instruction Register 16 | 6. The control unit decodes the instruction 17 | 7. Instruction split into opcode and operand 18 | 19 | ## Execute: 20 | 8. If necessary, data is fetched 21 | * The opcode identifies the type of instruction it is 22 | 7. Execute instruction by relevant part of processor 23 | * Result stored in accumulator 24 | 8. Status register updated; 25 | * If jump / branch instruction Program Counter is updated 26 | -------------------------------------------------------------------------------- /Paper 2/4.9 Fundamentals of communication and networking/4.9.1 Communication/4.9.1.2 Communication basics.md: -------------------------------------------------------------------------------- 1 | # Communication basics 2 | 3 | > Define: 4 | * baud rate 5 | * bit rate 6 | * bandwidth 7 | * latency 8 | * protocol 9 | 10 | | Term | Definition | 11 | | --- | --- | 12 | | Baud rate | Number of signal changes per second. | 13 | | Bit rate | Number of bits transferred per second | 14 | | Bandwidth | A range of frequencies within a given band used for transmission of a signal | 15 | | Latency | Time delay between the moment something is initiated and the moment its effect begins | 16 | | Protocol | A set of rules about the way devices communicate. Needed to ensure successful transmission between different computers. | 17 | 18 | > Differentiate between baud rate and bit rate. 19 | 20 | Bit rate can be higher than baud rate if more than one bit is encoded in each signal change. 21 | * Bit rate is **number of bits transferred per second.** 22 | * Baud rate is **number of signal changes per second.** 23 | 24 | >Understand the relationship between bit rate and 25 | bandwidth. 26 | 27 | * Bit rate and bandwidth are directly proportional. 28 | * The greater the bandwidth, the higher the bit rate. 29 | 30 | ## Additional information 31 | * The bandwidth is usually double the bit rate so the relationship can be seen as 2:1 as a ratio. 32 | -------------------------------------------------------------------------------- /Paper 1/4.2 Fundamentals of data structures/4.2.6 Hash tables/4.2.6.1 Hash tables.md: -------------------------------------------------------------------------------- 1 | # Hash Tables 2 | 3 | ## What is a hash table 4 | 5 | > Be familiar with the concept of a hash table and 6 | > its uses. 7 | 8 | A hash table is a data structure that creates a 9 | mapping between keys and values. 10 | 11 | A hash function takes a key and performs a series of operations on it to produce a hash. The value is then stored against this hash in the table. 12 | 13 | ## Uses of hash tables 14 | 15 | Hash tables are often used to implement other in memory data structures such as associative arrays. Additionally they are used a lot in database indexing and caching. 16 | 17 | ## Exam 18 | 19 | > Be able to apply simple hashing algorithms. 20 | 21 | ## Collisions 22 | 23 | > Know what is meant by a collision and how 24 | > collisions are handled using rehashing. 25 | 26 | A collision occurs when two key values compute 27 | the same hash. 28 | 29 | ### Rehashing 30 | 31 | Rehashing is when a new, larger, table is created and the values are hashed into that table. The new table must use a new hash function. 32 | 33 | 1. Make larger table 34 | 2. Go through old hash table ignoring empty slots 35 | 3. Recompute the hash value and put in new position in new table 36 | 37 | ### Linear Probing 38 | 39 | In linear probing, after a collision has occurred, the table is scanned until the next available slot is found. Then the value is stored against that key. 40 | -------------------------------------------------------------------------------- /Paper 2/4.7 Fundamentals of computer organisation and architecture/4.7.3 Structure and role of the processor and its components/4.7.3.7 Factors affecting processor performance.md: -------------------------------------------------------------------------------- 1 | # Factors affecting processor performance 2 | > Explain the effect on processor performance of: 3 | * multiple cores 4 | * cache memory 5 | * clock speed 6 | * word length 7 | * address bus width 8 | * data bus width. 9 | 10 | Multiple cores 11 | * Increase in processing power as instructions can be executed in parallel and does not have same power requirements as 1 large core. 12 | 13 | Cache memory 14 | * More data can be stored closer to the CPU so instructions are executed faster. 15 | 16 | Clock speed 17 | * The frequency at which a clock pulse occurs, increasing the clock speed will increase the speed at which instructions are executed. 18 | 19 | Word length 20 | * Increases the number of bits of information that a processor can process at one time. 21 | 22 | Address bus length 23 | * Increases the number of memory addresses possible e.g. from 24 bits to 32 bits. Determines the maximum possible memory capacity of the system. 24 | 25 | Data bus length 26 | * Increasing the width increases the number of bits that can be transferred at one time. 27 | 28 | ## Additional information 29 | * A word is a fixed size group of digits which is handled as a unit by the processor and different types of process have different word sizes. Each word in memory has its own specific address. 30 | -------------------------------------------------------------------------------- /Paper 1/4.4 Theory of computation/4.4.4 Classification of algorithms/4.4.4.1 Comparing algorithms.md: -------------------------------------------------------------------------------- 1 | # Comparing algorithms 2 | 3 | > Understand that algorithms can be compared by 4 | > expressing their complexity as a function relative 5 | > to the size of the problem. Understand that the 6 | > size of the problem is the key issue. 7 | 8 | 9 | ## Efficiency 10 | > Understand that some algorithms are more 11 | > efficient: 12 | > * time-wise than other algorithms 13 | > * space-wise than other algorithms. 14 | 15 | When comparing an algorithm that has time complexity O( n ) and space complexity O( n2) with another algorithm which has time complexity O( n2 ) and space complexity O( n ), it is clear to see that the first is more time efficient whereas the second is more space efficient. 16 | 17 | There are benefits to improving time complexity and space complexity and some algorithm prefer to improve space complexity over time complexity. 18 | 19 | ![](resources/growth-of-function.png) 20 | 21 | As the above diagram shows, some more complex algorithms may be more efficient than less complex algorithms for small input sizes, however once a certain size is surpassed, the functions diverge rapidly. 22 | 23 | #### *Additional information* 24 | 25 | > Efficiently implementing automated abstractions 26 | > means designing data models and algorithms to 27 | > run quickly while taking up the minimal amount of 28 | > resources such as memory. 29 | -------------------------------------------------------------------------------- /Paper 1/4.2 Fundamentals of data structures/4.2.2 Queues/4.2.2.1 Queues.md: -------------------------------------------------------------------------------- 1 | # Queues 2 | 3 | > Be able to describe and apply the following 4 | > to linear queues, circular queues and priority 5 | > queues: 6 | > * add an item 7 | > * remove an item 8 | > * test for an empty queue 9 | > * test for a full queue 10 | 11 | ## Operations and descriptions 12 | 13 | | Operation | Description | 14 | | :-------: | :---------- | 15 | | Add (Enqueue) | Adds a new item to the *rear* of the queue | 16 | | Remove (Dequeue) | Removes an item from the *front* of the queue | 17 | 18 | ## Pseudocode 19 | 20 | ### Add an item 21 | 22 | #### Linear Queue 23 | 24 | ```scala 25 | IF Queue is FULL THEN 26 | Error 27 | ELSE 28 | Queue[Queue.size + 1] = "Ian" 29 | Queue.size += 1 30 | END IF 31 | ``` 32 | 33 | #### Circular 34 | 35 | ```scala 36 | IF Queue is FULL THEN 37 | Error 38 | ELSE 39 | position = (Queue.size + 1) % Queue.max 40 | Queue[position] = "Ian" 41 | Queue.size += 1 42 | END IF 43 | ``` 44 | 45 | #### Priority 46 | 47 | ### Remove an item 48 | 49 | #### Linear Queue 50 | 51 | #### Circular 52 | 53 | ```scala 54 | IF Queue is FULL THEN 55 | Error 56 | ELSE 57 | position = Queue.size % Queue.max 58 | Queue[position] = null 59 | Queue.size -= 1 60 | END IF 61 | ``` 62 | 63 | #### Priority 64 | 65 | 66 | ### Testing for an empty queue 67 | 68 | #### Linear Queue 69 | 70 | #### Circular 71 | 72 | #### Priority 73 | 74 | ### Testing for a full queue 75 | 76 | #### Linear Queue 77 | 78 | #### Circular 79 | 80 | #### Priority 81 | 82 | 83 | -------------------------------------------------------------------------------- /Paper 2/4.9 Fundamentals of communication and networking/4.9.2 Networking/4.9.2.2 Types of networking between hosts.md: -------------------------------------------------------------------------------- 1 | # Types of networking between hosts 2 | 3 | > Explain the following and describe situations where they might be used: 4 | * peer-to-peer networking 5 | * client-server networking. 6 | 7 | ## Peer-to-peer networking 8 | * No dedicated servers 9 | * All computers have equal status 10 | * Each computer functions as both a client and server 11 | * User at each computer acts as both a user and an administrator 12 | * determining what data, disk space and peripherals on their computer get shared on the network 13 | 14 | ## Client-server networking 15 | * A network methodology where one computer has the main processing power and storage - the server. 16 | * The other computers act as clients requesting services from the server e.g. email, printing and files. 17 | 18 | ## Additional information 19 | >In a peer-to-peer network, each computer has 20 | equal status. In a client-server network, most 21 | computers are nominated as clients and one or 22 | more as servers. The clients request services 23 | from the servers, which provide these services, 24 | for example file server, email server. 25 | 26 | Client-server based networking is better than peer-to-peer for things like an office school network because: 27 | * System will be storing confidential data 28 | * There is centralised administration 29 | * Harder for users to change settings 30 | * Centralised backup 31 | * Running database from a server will avoid concurrency issues 32 | -------------------------------------------------------------------------------- /Useful Links.md: -------------------------------------------------------------------------------- 1 | # Useful Links 2 | | Link Description | Link URL | 3 | | :--------------- | :------- | 4 | | AQA CS Specification 7516/7517 | | 5 | | Videos of Data Structures | | 6 | | Explanation of Public Key Encryption | | 7 | | Videos for algorithms | | 8 | | Videos for networks | | 9 | | Repository of Haskell Examples | | 10 | | Explanation of Stacks with interactive demo | | 11 | | Assembly language game | | 12 | | Normalisation example walk through | | 13 | | Programming Information | | 14 | | Regex Tester | | 15 | | Old Spec Languages Info | [PDF](Paper%201/4.4%20Theory%20of%20computation/4.4.3%20Context-free%20languages/resources/Old%20Spec%20Languages.pdf) | 16 | | Video for Turing Machines | | 17 | | Video for Halting Problem | | 18 | | Hashing | | 19 | | Checksum Video | | 20 | -------------------------------------------------------------------------------- /Paper 1/4.4 Theory of computation/4.4.2 Regular languages/resources/inputoutput.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /Paper 2/4.7 Fundamentals of computer organisation and architecture/4.7.3 Structure and role of the processor and its components/4.7.3.3 The processor instruction set.md: -------------------------------------------------------------------------------- 1 | # The processor instruction set 2 | 3 | > Understand the term ‘processor instruction set’ 4 | and know that an instruction set is processor 5 | specific. 6 | 7 | The instruction set of a typical computer includes the following types of instructions: 8 | * Data transfer such as `LOAD` and `STORE` 9 | * Arithmetic operations such as `ADD` and `SUBTRACT` 10 | * Comparison operators such as equal, greater than, less than 11 | * Logical operations `AND`, `OR`, `NOT` and `XOR` 12 | * Branching conditional and unconditional 13 | * Logical shift bits left or right 14 | 15 | > Know that instructions consist of an opcode and 16 | one or more operands (value, memory address or 17 | register). 18 | 19 | Opcode 20 | * The part of a machine code instruction, that represents a basic machine operation. 21 | 22 | Operand 23 | * The part of the machine code instruction that contains an item of binary data or address in which the binary data is stored 24 | * Operands can have immediate and direct addressing modes 25 | * Immediate – actual datum value in operand is operated on. `e.g. #5 means the number 5 is operated on` 26 | * Direct - holds the memory address of the datum value to be operated on. `e.g. 5 means memory address 5 is operated on` 27 | 28 | ## Additional Information 29 | > Students will not be expected to define 30 | opcode, only interpret opcodes in the given 31 | context of a question 32 | 33 | * Logic shift can be used for multiplication/division by any power of 2. 34 | -------------------------------------------------------------------------------- /Paper 2/4.7 Fundamentals of computer organisation and architecture/4.7.3 Structure and role of the processor and its components/4.7.3.5 Machine-code assembly language operations.md: -------------------------------------------------------------------------------- 1 | # Machine code / Assembly Language 2 | 3 | > Understand and apply the basic machine-code 4 | > operations of: 5 | > * load 6 | > * add 7 | > * subtract 8 | > * store 9 | > * branching (conditional and unconditional) 10 | > * compare 11 | > * logical bitwise operators (AND, OR, NOT, XOR) 12 | > * logical shift right 13 | > * logical shift left 14 | > * halt 15 | 16 | | Operation | AQA Assembly Instruction | Explanation | 17 | | :-------: | :----------------------- | :---------- | 18 | | Load | `LDR Rd, ` | Load the data in the specified location into register `d` | 19 | | Add | `ADD Rd, Rn, ` | Add the value in register `n` to the value of the operand (may be a decimal value or a memory location), and store the result in register `d` | 20 | | Subtract | `SUB Rd, Rn, ` | Subtract the value specified by `` to the value in register `n` and store the result in register `d` | 21 | | Store | `STR Rd, ` | Store the value of register `d` in the specified memory address | 22 | | Branch (Unconditional) | `B