Computer Science - Year 11

Computer Science Overview

Term 1 (2022 intake): Producing robust programs

In this unit students will be introduced to the issues a programer should consider to ensure that a program caters for all likely input values and how to deal with invalid data entry through input validation and authentication techniques. Students will be able to identify the purpose the difference between iterative and final/terminal testing as well as creating a suitable test plan using suitable test data (normal, boundary, invalid/erroneous).

  1. Students sit an assessment comprising questions similar to those found on the GCSE exam paper
Defensive design

The practice of planning for contingencies in the design stage of a project.

Anticipating misuse

Considering how an end user might accidentally or deliberately break a program and writing additional code to handle these situations.

Authentication

Verifying a user’s identity before they can use a system. Strong passwords over a certain length with symbols and mixed-case letters are advised.

Input validation

Ensuring data input by a user meets specific criteria before processing. Range check (e.g., 1 – 31); type check (e.g., a number, not a symbol); presence check (e.g., data has been input); format check (e.g., a postcode is written LLN(N) NLL).

Maintainability

Techniques and methods that make code easier to debug, update and maintain.

Naming conventions

Many programmers use defined naming conventions for variables, contents and procedures. Camel case is a popular one used in the industry where the first word of an identifier uses all lower case and all subsequent words start with a capital letter – e.g., studentsFirstName.

Indentation

Makes it easier to see where structures begin and end. Conditions, iterations and code inside procedures and functions should be indented.

Commenting

Used to explains sections of code. Ignored by the compiler.

Testing

Assessing the performance and functionality of a program under various conditions to make sure it works. Programmers need to consider all the devices the program could be used on and what might cause it to crash.

Iterative testing

Each module of a program is tested as it is developed.

Final/terminal testing

Checking that all the modules of a program work together as expected and the program meets the expectations of users with real data.

Syntax error

Rules of the language have been broken, so the program will not run. Variables not being declared before use. Incompatible variable types (e.g., sum = A); using assignments incorrectly (e.g., 2 + 2 = x); keywords misspelt (e.g., PRNT(Hello)).

Logical error

The program runs but does not give the expected output. Division by zero. Infinite loop. Memory full. File not found.

Test data

Values used to test a program – normal, boundary and erroneous.

Test data: Normal

Data supplied to a program that is expected. Using a program written to average student test scores as an example, if allowed scores are 0 – 100, normal test data would include all the numbers within that range.

Test data: Boundary

Data supplied to a program designed to test the boundaries of a problem. Using a program written to average student test scores as an example, if allowed scores are 0 – 100, boundary test data could be -1, 0, 1, 99, 100 and 101.

Test data: Invalid

Data of the correct type but outside accepted validation limits. Using a program written to average student test scores as an example, if allowed scores are 0 – 100, invalid test data could be -5, 150, etc.

Test data: Erroneous

Data of the incorrect type that should be rejected. Using a program written to average student test scores as an example, if allowed scores are 0 – 100, erroneous data might be the string hello, the real number 3.725, etc.

  • Spiritual
  • Moral
  • Social
  • Cultural
Develop the individual:

Create a supportive community:

Term 2 (2022 intake): Boolean logic

In this topic, students will learn about a form of algebra called Boolean logic where all values are either True of False. These values are then used to test the conditions that selection and iteration are based around. Students will learn the binary logic of logic gate (AND, OR, NOT) and transistors in a computer systems and learn how to use algebra and truth tables to describe logical expressions.

Logic diagram

A method of expression Boolean logic in a diagram using a set of standard symbols that represent the various logic gates – AND, NOT, OR, NAND, etc.

Logic gate

A symbol in a logic diagram that represents a single gate – e.g., AND, OR, NOT.

Logic gate: AND

Accepts two inputs and produces one output. Both inputs must be TRUE (1) for the output to be TRUE (1) – otherwise, the output will be FALSE (0).

Logic gate: OR

Accepts two inputs and produces one output. At least one input must be TRUE (1) for the output to be TRUE (1) – otherwise, the output will be FALSE (0).

Logic gate: NOT

Accepts one input and produces one output. If the input is TRUE (1), the output will be FALSE (0). If the input is FALSE (0), the output will be TRUE (1).

Truth table

A notation used in Boolean algebra to define the output of a logic gate or logic circuit for all possible combinations of inputs.

  • Spiritual
  • Moral
  • Social
  • Cultural
Develop the individual:

Create a supportive community:

Term 3 (2022 intake): Programming languages and IDEs

In this unit students will learn about the characteristics and purpose of both high and low level languages. Students will learn about the purpose of translators and the differents, benefits and drawback of using a compiler or an interpreter. This uit will also cover the tools and facilities available in an Integrated Development Environment (IDE) including editors, error diagnostics, run-time environment and translators and how each can be used to help a programmer develop a program.

  1. Students sit an assessment test comprising questions similar to those found on the GCSE exam paper
High-level language

Designed to allow the expression of a computer program in a way that reflects the problem being solved rather than the details of how the solution is produced. One-to-many.

Low-level language

Close to machine code and closely related to the design of the machine. One-to-one.

Translator

Takes a program written in one programming language and converts it to another.

Compiler

Translates high-level language source code into a computer’s machine code.

Interpreter

Translates and executes a program one statement at a time.

IDE

Integrated Develop Environment: A software application that provides comprehensive facilities for software development. Normally consists of a source code editor, build automation tools and a debugger.

IDE: Error diagnostics

IDE tools that provide detailed feedback on errors in code.

IDE: Run-time environment

A configuration of hardware and software. Includes the CPU type, operating system and any runtime engines or system software required by a particular category of application.

  • Spiritual
  • Moral
  • Social
  • Cultural
Develop the individual:

Create a supportive community:

Terms 3 & 4: Practical programming project

Students will undertake a practical programming project in the Python language allowing them to develop and demonstrate skills in designing, writing, testing and refining a program. This project will include a peer-review process. Practical programming skills will be assessed in paper 2 of the qualification.

  • Spiritual
  • Moral
  • Social
  • Cultural
Develop the individual:

Create a supportive community:

Term 5: Exam revision

Revision for GCSE exams.

  1. Paper 1: Computer systems - 1 hour 30 minutes, 80 marks (50% of total GCSE) || Paper 2: Computational thinking, algorithms and programming - 1 hour 30 minutes, 80 marks (50% of total GCSE)
  • Spiritual
  • Moral
  • Social
  • Cultural
Develop the individual:

Create a supportive community:

Term 1 (2021 intake): Programming fundamentals

In this unit students will demonstrate an understanding of and appropriate use of variables, constants, operators, inputs, outputs and assignment. Students will be able to recognise and use the common arithmetic, comparison and Booleans operators AND, OR and NOT. Students will be able to identify and apply the three basic programming constructs used to control the flow of a program: sequence, selection and iteration (count and condition controlled loops. Students will be able to choose suitable data types for data in a given scenario and understand that data types may be temporarily changed through casting. The unit ends with consideration of further programming techniques including string manipulation, file I/O, SQL, random number generation, the use of sub programs (functions and procedures) and both one-dimensional and two dimensional arrays.

  1. Students sit an assessment comprising questions similar to those found on the GCSE exam paper

Variable

A value that can change depending on conditions or information passed to the program.

Constant

A value that cannot be altered by the program during normal execution.

Operator

Tells a program how to manipulate or interpret values. Categories of operators you need to know about are arithmetic, Boolean and comparison.

Assignment

Giving a variable or constant a value (e.g., counter = 0).

Programming construct

Lines/blocks of code that perform a certain function. The three basic programming constructs are sequence, selection and iteration.

Sequence

One of the three basic programming constructs. Instructions that are carried one after the other in order.

Selection

One of the three basic programming constructs. Instructions that can evaluate a Boolean expression and branch off to one or more alternative paths.

Count-controlled iteration

An iteration that loops a fixed number of times. A count is kept in a variable called an index or counter. When the index reaches a certain value (the loop bound) the loop will end. Count-controlled repetition is often called definite repetition because the number of repetitions is known before the loop begins executing.

Condition-controlled iteration

A way for computer programs to repeat one or more steps depending on conditions set either a) initially by the programmer or b) by the program during execution.

Arithmetic operator

+ - / * ^ Used in mathematical expressions (e.g., num1 + num2 = sum).

Boolean operator: AND

A logical operator used within a program. Only returns TRUE if both values being compared are TRUE.

Boolean operator: OR

A logical operator used within a program. Returns TRUE as long as either value being compared is TRUE.

Boolean operator: NOT

A logical operator used within a program. Returns FALSE if the input is TRUE and returns TRUE if the input is FALSE.

Comparison operator: ==

Equal to.

Comparison operator: !=

Not equal to.

Comparison operator: <

Less than.

Comparison operator: <=

Less than or equal to.

Comparison operator: >

Greater than.

Comparison operator: >=

Greater than or equal to.

Arithmetic operator: +

Addition.

Arithmetic operator: -

Subtraction.

Arithmetic operator: *

Multiplication.

Arithmetic operator: /

Real division.

Arithmetic operator: MOD

Integer division. MOD outputs the remainder left over after division – e.g., 10 MOD 3 = 1.

Arithmetic operator: DIV

Integer division: DIV outputs the number of times a number fits into another number – e.g., 10 DIV 3 = 3.

Arithmetic operator: ^

Exponent.

Data type

The basic data types provided as building blocks by a programming language. Most languages allow for more complicated, composite types to be constructed from basic types recursively – e.g., char, integer, float, Boolean. As an extension, a string data type is constructed behind the scenes of many char data types.

Integer

A data type used to store positive and negative whole numbers.

Real

A data type used to store an approximation of a real number in a way that can support a trade-off between range and precision. Typically, a number is represented approximately to a fixed number of significant digits and scaled using an exponent.

Boolean

Used to store logical conditions – e.g., TRUE/FALSE, ON/OFF, YES/NO, etc.

Character

A single alphanumeric symbol.

String

A sequence of alphanumeric characters and/or symbols – e.g., a word or sentence.

Casting

Converting a variable from one data type to another. For example, a variable entered as a string needs to be an integer for calculation – age = INPUT(Enter your age: ) age = INT(age).

String manipulation

Commands and techniques that allow you to alter and extract information from textual strings – e.g., .length .substring(x, i) .left(i) .right(i) .upper .lower ASC(…) CHR(…).

File handling: Open

File handling is the process of dealing with input to and from files. Files first have to be opened, creating a handle to the file and allowing reading and writing.

File handling: Read

Once a file has been opened, it is possible to use commands to read its contents and return them to a program.

File handling: Write

Once a file has be opened it is possible to use commands to write data to the file from a program.

File handling: Close

When a file is no longer in use, closing it releases the file handle and breaks the connection between the file and a program.

Record

A data structure consisting of a collection of elements, typically in fixed number and sequence and indexed by name. Elements of records may be called fields. The record is a data type that describes such values and variables. Most modern languages allow programmers to define new record types, as well as specifying the data type of each field and an identifier by which it can be accessed.

SQL

The language and syntax used to write and run database queries.

SQL command: SELECT

A SQL keyword used query (retrieve) data.

SELECT Name, Age, Class

FROM Students_table

WHERE Gender = Male

SQL command: FROM

A SQL keyword used to signify which table(s) are included in a query.

SELECT Name, Age, Class

FROM Students_table

WHERE Gender = Male

SQL command: WHERE

A SQL keyword used to filter query results.

SELECT Name, Age, Class

FROM Students_table

WHERE Gender = Male

Array

A set of data items of the same type grouped together using a single identifier. Each item is addressed by its variable name and a subscript.

Sub-programs

A block of code given a unique identifiable name within a program. Supports code reuse and good programming technique.

Procedure

A block of code within a program that is given a unique, identifiable name. Can take upwards of zero parameters when it is called. Should be designed and written to perform a task or action that is clearly indicated by its name.

Function

A block of code within a program that is given a unique identifiable name. Can take upwards of zero parameters when it is called and should return a value. Should be designed and written to perform a task or action that is clearly indicated by its name.

Random number generation

Most programming languages have built-in functions or libraries that allow you to easily generate random numbers. Creating truly random numbers is actually rather difficult for a computer, and these algorithms are quite complex.

  • Spiritual
  • Moral
  • Social
  • Cultural
Develop the individual:

Create a supportive community:

Term 2 (2021 intake): Algorithms

In this unit students will learn what an algorithm is and be able to create algorithms to solve specific problems using sequence, selection and iteration. Students will learn how to express algorithms using flow diagrams and pseudocode, using suitable variables and arithmetic, relational and Boolean operators. They will also be able to analyse, assess and compare different algorithms for given scenarios.

  1. Students sit an assessment comprising questions similar to those found on the GCSE exam paper

Computational thinking

The thought processes behind formulating a problem and expressing its solution(s) so that a human or machine can effectively carry it out.

Abstraction

The process of separating ideas from specific instances of those ideas at work. Computational structures are defined by their meanings while hiding away the details of how they work. Abstraction tries to factor out details from a common pattern so programmers can work close to the level of human thought, leaving out details that matter in practice but are immaterial to the problem being solved.

Decomposition

The process by which a complex problem or system is broken down into parts that are easier to conceive, understand, program and maintain.

Algorithmic thinking

A way of getting to a solution by identifying the steps required.

Problem inputs

Any information or data that is fed into a system.

Problem processes

Anything that happens to data while a system is running – e.g., calculations.

Problem outputs

Any information or data that leaves a system.

Structure diagram

A diagram that looks like an upside-down tree with one node at the top (root) and many below. Used when designing solutions to problems to help break a large problem down into a number of smaller parts.

Pseudocode

A language-independent description of the steps of an algorithm. Intended for humans to express and design algorithms before coding.

Flowchart

A method of designing algorithms using symbols before coding.

Trace table

A technique used to test algorithms and ensure that no logical errors occur while the algorithm is being processed. The table usually has a column for each variable. Each row shows how the various values change as the algorithm runs.

Searching algorithms

An algorithm that attempts to find a specific value in a data set.

Binary search

Efficient search method that only works if a file’s records are arranged in sequence. Involves accessing the middle record in the file, determining whether the target record has been found and, if not, whether the target record is before or after the mid-point. The process is repeated on the part of the file where the target record is expected to be until it is found.

Linear search

Examining each entry in a file in turn until the target record is found or the end of the file is reached. Unless the file is arranged in a useful order, a serial search must be used.

Sorting algorithm

An algorithm that attempts to sort an unordered set of values.

Bubble sort

Simple and popular with inexperienced programmers but inefficient for sorting large amounts of data, as the length of time it takes to execute correlates to the square of the number of items – e.g., if a list of 10 items takes 1ms to sort, 100 items will take 100ms.

Merge sort

Divide-and-conquer algorithm created by John von Neumann. First, the list is divided into the smallest unit, known as an element. Each element is compared with the adjacent list with a view to sorting the records and merging the two lists back together.

Insertion sort

A simple sorting algorithm that builds the final sorted array/list one item at a time. Less efficient with large lists than advanced algorithms like quicksort, heapsort or merge sort.

  • Spiritual
  • Moral
  • Social
  • Cultural
Develop the individual:

Create a supportive community:

Term 2-3 (2021 intake): Producing robust programs

In this unit students will be introduced to the issues a programer should consider to ensure that a program caters for all likely input values and how to deal with invalid data entry through input validation and authentication techniques. Students will be able to identify the purpose the difference between iterative and final/terminal testing as well as creating a suitable test plan using suitable test data (normal, boundary, invalid/erroneous).

  1. Students sit an assessment comprising questions similar to those found on the GCSE exam paper

Defensive design

The practice of planning for contingencies in the design stage of a project.

Anticipating misuse

Considering how an end user might accidentally or deliberately break a program and writing additional code to handle these situations.

Authentication

Verifying a user’s identity before they can use a system. Strong passwords over a certain length with symbols and mixed-case letters are advised.

Input validation

Ensuring data input by a user meets specific criteria before processing. Range check (e.g., 1 – 31); type check (e.g., a number, not a symbol); presence check (e.g., data has been input); format check (e.g., a postcode is written LLN(N) NLL).

Maintainability

Techniques and methods that make code easier to debug, update and maintain.

Naming conventions

Many programmers use defined naming conventions for variables, contents and procedures. Camel case is a popular one used in the industry where the first word of an identifier uses all lower case and all subsequent words start with a capital letter – e.g., studentsFirstName.

Indentation

Makes it easier to see where structures begin and end. Conditions, iterations and code inside procedures and functions should be indented.

Commenting

Used to explains sections of code. Ignored by the compiler.

Testing

Assessing the performance and functionality of a program under various conditions to make sure it works. Programmers need to consider all the devices the program could be used on and what might cause it to crash.

Iterative testing

Each module of a program is tested as it is developed.

Final/terminal testing

Checking that all the modules of a program work together as expected and the program meets the expectations of users with real data.

Syntax error

Rules of the language have been broken, so the program will not run. Variables not being declared before use. Incompatible variable types (e.g., sum = A); using assignments incorrectly (e.g., 2 + 2 = x); keywords misspelt (e.g., PRNT(Hello)).

Logical error

The program runs but does not give the expected output. Division by zero. Infinite loop. Memory full. File not found.

Test data

Values used to test a program – normal, boundary and erroneous.

Test data: Normal

Data supplied to a program that is expected. Using a program written to average student test scores as an example, if allowed scores are 0 – 100, normal test data would include all the numbers within that range.

Test data: Boundary

Data supplied to a program designed to test the boundaries of a problem. Using a program written to average student test scores as an example, if allowed scores are 0 – 100, boundary test data could be -1, 0, 1, 99, 100 and 101.

Test data: Invalid

Data of the correct type but outside accepted validation limits. Using a program written to average student test scores as an example, if allowed scores are 0 – 100, invalid test data could be -5, 150, etc.

Test data: Erroneous

Data of the incorrect type that should be rejected. Using a program written to average student test scores as an example, if allowed scores are 0 – 100, erroneous data might be the string hello, the real number 3.725, etc.

  • Spiritual
  • Moral
  • Social
  • Cultural
Develop the individual:

Create a supportive community:

Term 3 (2021 intake): Boolean logic

In this topic, students will learn about a form of algebra called Boolean logic where all values are either True of False. These values are then used to test the conditions that selection and iteration are based around. Students will learn the binary logic of logic gate (AND, OR, NOT) and transistors in a computer systems and learn how to use algebra and truth tables to describe logical expressions.

  1. Students sit an assessment test comprising questions similar to those found on the GCSE exam paper
Logic diagram

A method of expression Boolean logic in a diagram using a set of standard symbols that represent the various logic gates – AND, NOT, OR, NAND, etc.

Logic gate

A symbol in a logic diagram that represents a single gate – e.g., AND, OR, NOT.

Logic gate: AND

Accepts two inputs and produces one output. Both inputs must be TRUE (1) for the output to be TRUE (1) – otherwise, the output will be FALSE (0).

Logic gate: OR

Accepts two inputs and produces one output. At least one input must be TRUE (1) for the output to be TRUE (1) – otherwise, the output will be FALSE (0).

Logic gate: NOT

Accepts one input and produces one output. If the input is TRUE (1), the output will be FALSE (0). If the input is FALSE (0), the output will be TRUE (1).

Truth table

A notation used in Boolean algebra to define the output of a logic gate or logic circuit for all possible combinations of inputs.

  • Spiritual
  • Moral
  • Social
  • Cultural
Develop the individual:

Create a supportive community:

Term 3-4 (2021 intake): Programming languages and IDEs

In this unit students will learn about the characteristics and purpose of both high and low level languages. Students will learn about the purpose of translators and the differents, benefits and drawback of using a compiler or an interpreter. This uit will also cover the tools and facilities available in an Integrated Development Environment (IDE) including editors, error diagnostics, run-time environment and translators and how each can be used to help a programmer develop a program.

  1. Students sit an assessment test comprising questions similar to those found on the GCSE exam paper
High-level language

Designed to allow the expression of a computer program in a way that reflects the problem being solved rather than the details of how the solution is produced. One-to-many.

Low-level language

Close to machine code and closely related to the design of the machine. One-to-one.

Translator

Takes a program written in one programming language and converts it to another.

Compiler

Translates high-level language source code into a computer’s machine code.

Interpreter

Translates and executes a program one statement at a time.

IDE

Integrated Develop Environment: A software application that provides comprehensive facilities for software development. Normally consists of a source code editor, build automation tools and a debugger.

IDE: Error diagnostics

IDE tools that provide detailed feedback on errors in code.

IDE: Run-time environment

A configuration of hardware and software. Includes the CPU type, operating system and any runtime engines or system software required by a particular category of application.

  • Spiritual
  • Moral
  • Social
  • Cultural
Develop the individual:

Create a supportive community: