Programming Challenge Packs
100 Python and 100 C# programming challenges across 4 difficulty tiers, from KS3 foundations to A-Level stretch. Every challenge includes hints, mark schemes, and an extension task.
100 Python Programming Challenges
100 challenges · 4 difficulty tiers · Python 3A complete bank of Python challenges from basic input/output up to A-Level difficulty. Each challenge includes a problem statement, example input/output, hints, mark scheme notes, and an extension task.
- Tier 1 Foundation - 25 challenges (KS3 / secondary foundation)
- Tier 2 Intermediate - 30 challenges (core secondary)
- Tier 3 Applied - 25 challenges (upper secondary / A-Level intro)
- Tier 4 Stretch Challenges - 20 challenges (A-Level standard)
- Usage guide: which tiers suit which year groups
- Every challenge includes problem statement, example I/O, hints and mark scheme notes
- Extension task on every challenge to stretch high-attaining students
- Covers all key Python topics: loops, functions, OOP, files, recursion, algorithms
- Compatible with KS3 through A-Level - pick the tiers that suit your class
A separate Teacher Solutions Pack (with multiple approaches per challenge, including non-built-in versions) is sent alongside the main pack.
You'll receive one follow-up email with information about CodeBash. Nothing more unless you choose to hear more.
100 C# Programming Challenges
100 challenges · 4 difficulty tiers · C# 10+The complete 100-challenge bank fully rewritten for C#. Same proven structure as the Python pack - problem statement, example I/O, C#-specific hints, mark scheme, and extension - but using idiomatic C# 10+ top-level statements, LINQ, and .NET standard library features.
- Tier 1 Foundation - 25 challenges (input, loops, selection)
- Tier 2 Intermediate - 30 challenges (OOP, sorting, data structures)
- Tier 3 Applied - 25 challenges (file I/O, recursion, algorithms)
- Tier 4 Stretch - 20 challenges (A-Level standard complexity)
- Hints written for C# - Console.ReadLine, int.Parse, LINQ, etc.
- Teacher solutions pack with syntax-highlighted C# code
- Multiple approaches per challenge (iterative & recursive)
- 20-challenge sample available - no email required
Download the pack to get full details, hints, mark schemes, and extensions.
| # | Challenge Title | Key Skills |
|---|---|---|
| 1 | Hello, Name | Use input() to collect the name |
| 2 | Age Calculator | Use int() to convert input |
| 3 | Area of a Rectangle | Area = length x width |
| 4 | Odd or Even | Use the modulo operator % |
| 5 | Temperature Converter | Use float() for input |
| 6 | Password Checker | Use len() for length |
| 7 | Times Table | Use a for loop with range(1, 13) |
| 8 | Number Guessing Game | Use import random and random |
| 9 | FizzBuzz | Check for multiples of both 3 and 5 first |
| 10 | Shopping Basket Total | Use a while loop |
| 11 | Grade Classifier | Use elif for each range |
| 12 | Factorial | Factorial of n = n x (n-1) x |
| 13 | Countdown Timer | Use a while loop or a for loop with range() in reverse |
| 14 | Sum of Digits | Convert to a string and iterate through characters |
| 15 | Number to Words (1-9) | Use a list indexed from 0 |
| 16 | Average Calculator | Accumulate the total and count separately |
| 17 | Palindrome Checker | Reverse a string using [::-1] |
| 18 | Coin Toss Simulator | Use random |
| 19 | BMI Calculator | Use float() for inputs |
| 20 | Number Pyramid | Outer loop for rows, inner loop for numbers in each row |
| 21 | Leap Year Checker | Check divisibility by 400 first, then 100, then 4 |
| 22 | Word Reverser | Use |
| 23 | Multiplication Quiz | Use random |
| 24 | Currency Converter | Define conversion rates as variables at the top |
| 25 | Prime Number Checker | A prime has no factors other than 1 and itself |
| # | Challenge Title | Key Skills |
|---|---|---|
| 26 | Vowel Counter | Check each character against 'aeiouAEIOU' |
| 27 | List Maximum and Minimum | Store in a list |
| 28 | Student Grade Book | Use two parallel lists or a list of tuples |
| 29 | Caesar Cipher | Use ord() and chr() |
| 30 | Word Frequency Counter | Use a dictionary |
| 31 | Rock Paper Scissors | Use random |
| 32 | Function: Is Prime | Check divisibility from 2 up to int(n**0 |
| 33 | Fibonacci Sequence | Start with [0, 1] |
| 34 | ATM Simulator | Use a while loop with a menu |
| 35 | String Statistics | Use len() for length |
| 36 | Number to Roman Numerals | Use two lists: one for values, one for symbols |
| 37 | Stack Implementation | A stack is Last In, First Out |
| 38 | Queue Implementation | A queue is First In, First Out |
| 39 | Anagram Checker | Sort the letters of both words and compare |
| 40 | Number Base Converter | Use repeated division by the target base |
| 41 | Highest Common Factor | Euclidean algorithm: hcf(a, b) = hcf(b, a % b) until the remainder is 0 |
| 42 | Sentence Scrambler | For each word, keep index 0 and -1 in place |
| 43 | Matrix Addition | Use nested loops to iterate over rows and columns |
| 44 | Bank Account Class | Define the class with __init__ |
| 45 | Linear Search | Loop through each element with its index |
| 46 | Binary Search | Use low, high, and mid pointers |
| 47 | Bubble Sort | Use nested loops |
| 48 | Insertion Sort | For each element, find its correct position in the already-sorted left portion and insert it |
| 49 | Merge Sort | Split the list in half recursively until single elements remain |
| 50 | Username Generator | Use string indexing and slicing |
| 51 | Roman Numeral Validator | Valid Roman numerals follow specific ordering and repetition rules |
| 52 | Temperature Statistics | Store temperatures in a list |
| 53 | Postcode Validator | A valid UK postcode has a specific letter/digit pattern |
| 54 | Hangman | Store guessed letters in a list |
| 55 | Contact Book | Use a dictionary where the key is the name |
| # | Challenge Title | Key Skills |
|---|---|---|
| 56 | File Word Count | Use open() and readlines() |
| 57 | CSV Reader | Use open() and split(',') or the csv module |
| 58 | High Score File | Use append mode ('a') to add scores |
| 59 | Error-Handled Calculator | Use try/except around float conversion and the calculation |
| 60 | Log File Analyser | Read lines and check the start of each |
| 61 | Student Records (OOP) | Define __init__ with name, age, and an empty grades list |
| 62 | Animal Hierarchy (Inheritance) | Use class Dog(Animal): to inherit |
| 63 | Linked List | Node has value and next attributes |
| 64 | Binary Search Tree | Each node has value, left, and right |
| 65 | Hash Table | Use a list of lists |
| 66 | Graph (Adjacency List) | Use a dictionary where keys are node names and values are lists of connected nodes |
| 67 | Dijkstra's Shortest Path | Use a visited set and a distances dictionary |
| 68 | Tower of Hanoi | Base case: move 1 disc directly |
| 69 | Maze Solver | Try moving in each direction recursively |
| 70 | Vigenere Cipher | Each letter is shifted by the corresponding letter in the repeating keyword |
| 71 | API Simulation | Store records in a dictionary keyed by ID |
| 72 | Inventory System | Use a dictionary keyed by item name |
| 73 | String Compression | Loop through characters |
| 74 | Full Number Base Converter | For decimal to other: use repeated division |
| 75 | FCFS Scheduler | Process tasks in arrival order |
| 76 | Phone Number Formatter | Strip all non-digit characters first |
| 77 | Text Adventure Engine | Store room data in a dictionary |
| 78 | Sentiment Analyser | Convert to lowercase and split |
| 79 | Timetable Clash Detector | Use a dictionary keyed by (room, day, period) tuple |
| 80 | Pattern Matcher | Use recursion |
| # | Challenge Title | Key Skills |
|---|---|---|
| 81 | Library Management System | Use a list of dictionaries |
| 82 | Gradebook with File Persistence | Use a list of dictionaries |
| 83 | Train Timetable | Store times as strings in HH:MM format or as integers (minutes since midnight) for easy comparison |
| 84 | Password Manager | Encrypt the password field only |
| 85 | Noughts and Crosses | Use a list of 9 elements for the board |
| 86 | Hospital Priority Queue | Sort by priority first, then by position in queue for equal priorities |
| 87 | Spell Checker | Edit distance: count insertions, deletions, and substitutions needed to transform one word to another |
| 88 | Bank Transaction Processor | Use a dictionary of categories with keyword lists |
| 89 | Cryptarithmetic Solver | Use itertools |
| 90 | Recursive Directory Tree | A directory is a dict; a file is a string |
| 91 | Compression Analysis | Compression ratio = compressed_length / original_length |
| 92 | Supermarket Queue Simulation | Use a queue structure |
| 93 | Polynomial Calculator | Derivative: multiply each coefficient by its power and reduce all powers by 1 |
| 94 | Social Network | Use a dictionary of sets |
| 95 | Text RPG with Save/Load | Use Player and Enemy classes |
| 96 | Web Server Log Analyser | Split each log line by spaces to extract IP, request, and status code |
| 97 | Constraint-Based Timetabler | Use a dictionary keyed by (period, room) |
| 98 | Multi-File OOP School System | Import between files using standard imports |
| 99 | k-Nearest Neighbours | Euclidean distance: square root of the sum of squared differences between features |
| 100 | Project Scoping Exercise | Every success criterion must be testable with a clear pass/fail outcome |
| Year Group | Recommended Tiers |
|---|---|
| KS3 (Year 7-9) | Tier 1 (Foundation), selected Tier 2 (Intermediate) |
| Year 10-11 (Secondary) | Tiers 1-3 (Foundation, Intermediate, Applied) |
| A-Level / Further | Tiers 3-4 (Applied, Stretch Challenges) |
Want these challenges auto-marked for your students?
Run them interactively on CodeBash with automatic marking, student progress tracking, and line-by-line execution feedback.
Start a free trial