Text-based programming resources 

Practice challenges 

Students can use the practice challenges on our challenges page for both the Navgiators and Trailblazers challenges. 

Note: The pathfinder group has been removed from the 2026 Coding challenge.

If you are a teacher, you have access to additional questions in the quiz menu of the teacher admin system

Skills list 

For each text-based challenge, students should have an understanding of the skills listed below: 

Skill Navigator Trailblazer
Input and output
Reading input
Reading structured input (multiple values / lines)  
Converting data between types (e.g. string and integer)
Producing output that exactly matches a given specification
Variables and data
Using variables to store data
Updating variable values during program execution
Storing and updating state across iterations  
Selection (Decision making)
Using IF / ELSE / ELSEIF statements
Using comparison operators
Using logical operators (AND, OR, NOT)
Applying multiple rules to validate data  
Iteration (Repetition)
Using count-controlled loops (FOR)
Using condition-controlled loops (WHILE)
Controlling when a loop starts and stops
Repeating a process until a condition is met  
Arithmetic and logic
Using arithmetic operators
Using modulo to test divisibility
Using counters and running totals
Calculating differences and averages  
String handling
Finding the length of a string
Accessing and extracting parts of a string
Joining strings together
Reordering characters based on position  
Checking for specific characters or patterns
Lists / arrays
Accessing items by position
Finding the length of a list
Iterating through a list
Comparing neighbouring values in a list  
Tracking patterns across a sequence  
Two-dimensional data
Representing data in rows and columns  
Accessing values using coordinates  
Checking boundaries in a grid  
Processing connected areas of data  
Databases / SQL
Writing a basic SELECT query   Trailblazer
Filtering records using WHERE   Trailblazer
Sorting results using ORDER BY   Trailblazer
Selecting specific columns from a table   Trailblazer

 

For a PDF version of the list for printing please download this here

Help sheets 

Trailblazer- SQL hints and tips 

Trailblazer - Python hints and tips 

Navigator - Python hints and tips 

 

Using the code grader

Adding code to the editor

When entering code into the editor do not include any extra printed messages or input prompts in your submission code: your only output must be the requested result.

Testing code 

Students can use the sandbox to test code without it being part of the submissions. Testing code does not count towards marks. 

Submitting code for grading

Code snippets 

All of these examples show the answer in different languages to the first question of the Navigators specimen challenge, full name. 

The examples take two lines of input; the first line will contain a first name and the second line will contain a last name.

The output is a single line containing the two names separated by a space.

For languages such as Java/C# which require a class definition, the main class should be called: solution.

Python 

#Get input
fname = input()
lname = input()
# output
print(fname, lname)

C#

using System;

class solution
{
    static void Main()
    {
        Console.Write("");
        string firstName = Console.ReadLine(); // Input

        Console.Write("");
        string surname = Console.ReadLine(); // Input

        string fullName = firstName + " " + surname; // Processing
        Console.WriteLine(fullName); // Output
    }
}

Java

import java.util.Scanner;

public class solution {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        System.out.print("");
        String firstName = scanner.nextLine(); // Input
        
        System.out.print("");
        String surname = scanner.nextLine(); // Input
        
        String fullName = firstName + " " + surname; // Processing
        System.out.println(fullName); // Output

VB

Module Module1
    Sub Main()
        Console.Write("")
        Dim firstName As String = Console.ReadLine() 
        
        Console.Write("")
        Dim surname As String = Console.ReadLine()         
        Dim fullName As String = firstName & " " & surname 
        Console.WriteLine(fullName)
    End Sub
End Module

Javascript (node.js)

process.stdin.setEncoding('ascii');

var stdin = "";
var stdin_arr;
var prompt = () => stdin_arr.pop();

process.stdin.on('data', (data) => { stdin += data; });

process.stdin.on('end', () => {
    stdin_arr = stdin.split("\n"); // Split input into array (line by line)
    stdin_arr.reverse(); // Reverse to use `.pop()` in order
    main(); // Call main function after input is received
});

process.stdin.resume();

function main() {
    let firstName = prompt();  // Get first input
    let lastName = prompt();   // Get second input
    console.log(firstName + " " + lastName); // Output full name
}


The Raspberry Pi Foundation runs the UK Bebras Challenge. Discover free teaching resources, tools, and expert support for computing education at raspberrypi.org.