
Before completing this quiz, we invite you to revisit the main Big O Notations used to describe the time complexity and space complexity of an algorithm..
The main Big O Notations this quiz will focus on are:
![]() |
![]() |
![]() |
![]() |
![]() |
Before completing this quiz, we invite you to revisit the main Big O Notations used to describe the time complexity and space complexity of an algorithm..
The main Big O Notations this quiz will focus on are:
![]() |
![]() |
![]() |
![]() |
![]() |
If you have reached this page, you have probably already started to learn to code using a high-level programming language such as Python, JavaScript, C, php or Ruby. But what does “learning a new programming language” involve?
Learning a programming language is, to some extent, like learning a foreign language. It will require you to learn the words this language is made of. The good news is, unlike modern languages such as English, Arabic, French or Mandarin, programming languages have a very limited number of words for you to learn: these are the reserved keywords and built-in functions of the language.
Let’s compare different programming and non-programming languages!
It is believed that to be able to be able to take part in every day conversations in a foreign language, you need to know around 2,000 to 3,000 words. To be fluent in a language, you would need to know between 5,000 to 10,000 words!
Luckily, to become a proficient programmer using a programming language, you do not need to remember that many words!
As you have started to learn Python, you can test yourself to see how many of the reserved keywords and built-in functions you can remember by completing the quiz below!
Python QuizOpen in New Window
A binary watch uses 18 LEDs to give the HH:MM:SS time using three binary numbers each consisting of 6 bits.
The following diagram can help you understand how to work out the time displayed on a binary watch:
Using the above diagram we can work out the actual time being displayed:
![]() |
HH:MM:SS: (view solution) |
![]() |
HH:MM:SS: (view solution) |
![]() |
HH:MM:SS: (view solution) |
Before completing this task, you will need to revisit the main characteristics of the Von Neumann Processor Architecture.
You task is to write a description in your books or on the space provided below to describe, in your own words, how the FDE cycle works. Your description needs to include as many of the following key terms as possible.
Fetch | Instruction | Register |
Decode | Data | Program Counter |
Execute | Memory location | MAR |
Primary Memory | Control Unit | MDR |
RAM | ALU | Accumulator |
Binary | Clock speed | GHz |
Describe, in your own words, how the FDE cycle works within the CPU. Use as many of the keywords provided above as possible.
Computer programs are a set of step-by-step instructions used to teach the computer how to complete a task.
Computer programs are written using a specific programming language. Nowadays, most programmers would write code using a high-level programming language such as Python, C, C#, Java, Ruby or Basic.
If we were to dissect a computer program, we would find the following elements:
Let’s investigate these elements further… Click on the sub sections below to find out more.
Your task is to identify all the different elements of the short program below, and drag them in the corresponding sections.
Anatomy of a Computer Program – Drag and DropOpen in New Window
John Von Neumann (1903-1957) was a Hungarian-American mathematician, physicist and computer scientist and a founding figure in computer science, with significant contributions to computing hardware design.
The Von Neumann architecture refers to a processor architecture which has access to a program stored in primary memory as a set of instructions. A processor based on the Von Neumann architecture can execute these instructions sequentially using the Fetch Decode and Execute cycle (FDE Cycle).
Nowadays most general purpose computers are still relying on the key characteristics of this architecture. Within the Von Neumann architecture the processor consists of a control unit, an arithmetic logic unit (ALU) and some key registers used to store numerical values within the processor. These include a Program Counter (PC), an Accumulator, a Current Instruction Register (CIR), a Memory Data Register (MDR) and a Memory Address Register (MAR). These registers are used during the FDE cycle for the processor to fetch instructions and transfer data (between the processor and primary memory) and to execute these instructions.
The rate at which a processor can perform the FDE cycles to process instructions is called the clock speed. For instance, a processing unit with a 3.5GHz clock speed can process 3,500,000,000 instructions per second.
Recent computers have a high clock speed and more advanced processors may also have multiple cores (dual core, quad core etc.) which enable them to process several FDE cycles simultaneously. They may also contain cache within the CPU which can be used to store (and retrieve at a very fast rate) recently or frequently used instructions or data without the need to retrieve these from primary memory. A Central Processing Unit (CPU) with multiple cores, a certain amount of cache and a high clock speed will lead to an increase of the performance of the CPU.
To celebrate the start of the Winter, we have asked our Artificial Intelligence “AI-101” to generate a poem about the cold winter weather. The AI has generated the following poem which consists of a list of numbers! We believe the poem is in a compressed format. We found within the log of the AI a hash table (codebook) as appearing on the tablet below.
We believe this codebook is the key to uncompress the poem. (Click on the picture below to open full screen)
Use the above codebook and printed poem to reveal the title and 8 verses of this poem.
Implement a recursive algorithm to uncompress this poem using the given hash table by completing the code below.
The aim of this online activity is to sort a set of 8 playing cards randomly picked from a deck of cards based on the following rules:
Your aim is to find a method (algorithm) that works for you and enable you to sort all the cards with a minimum number of swaps.
Playing Cards Sorting ChallengeOpen in New WindowThey are a range of different algorithms that can be used for a computer to sort a list of values. You can investigate some of the most widely used sorting algorithms using the following blog posts:
In this set of challenges, you will design and test some logic gates circuits to control different automated systems used to control the following rides of a Theme park:
A Ferris Wheel automated control system controls whether the wheel should be spinning or should be stopped.
The automated system is based on the following inputs:
Use our logic gates circuit simulator to design and test a circuit for the Ferris Wheel automated control system. (Click on picture below)
To join the queue to get on board the Drop Tower, the passengers must comply with some safety rules. A control panel is available to control a gate to let a passenger join the queue. The control panel has 3 switches as follows:
For the gate to open to let the passenger join the queue for the ride, the rules are as follow:
Click on the picture below to design and test the logic gates circuit to control the gate, so that if a passenger is allowed to get on board the Drop Tower, the gate is “on”, but if not the gate is “off“.
An emergency stopping system controls whether a signal should be sent to the train of a roller coaster to stop it, in case of an emergency. The system is based on the following inputs:
Use our logic gates circuit simulator to design and test a circuit for the Roller Coaster Emergency Stopping System.
The two Python scripts above were created by an IT manager of a school and are performing exactly the same task: to generate a username based on the student’s firstname, lastname and year group. Compare both of these scripts and identify what was done to the code to make it easier to understand, maintain and re-use in future projects?
The IT manager would like to make this program more robust by adding a validation check on the year group. The school only has students in year 7 to year 13. How could the IT manager change the code above to make sure the user can only enter a value between 7 and 13 for the year group?
The IT manager would like to test his new validation check on the year group. Identify 4 pieces of test data that the IT manager should use to perform a normal/valid test, an invalid test, a boundary test and an erroneous test?