Free Resources for CS Teachers
Practical, classroom-tested materials for teaching Python and Computer Science. No login required.
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
A-Level Computer Science: Exam Technique Guide
OCR H446 · AQA 7517 · CIE 9618 · Edexcel 9CS0 · IB CS · FreeA cross-board exam technique guide drawing directly on published examiner reports from OCR, AQA and CIE. Covers the exact command word errors, pseudocode mistakes and precision failures that cost marks every year across all five major A-Level CS specifications.
- Command Words Decoded - State, Describe, Explain, Compare, Evaluate with weak and strong answer pairs
- Pseudocode Discipline - board-by-board syntax, zero-mark traps (CIE = vs ->, OCR for loop bounds, AQA pronouns)
- Real Examiner Report Evidence - direct quotes from OCR 2023, AQA 2023 and CIE published reports
- Question Type Walkthroughs - trace tables, algorithm writing, OOP, calculations, extended response
- The Precision Problem - six worked examples of vague vs precise answers with commentary
- Time Management and What Not To Do sections
- Board Quick Reference - one page per board with paper structure, pseudocode essentials and top warnings
A-Level CS NEA Toolkit
AQA (7517) & OCR (H446) · Teachers & StudentsA comprehensive guide to the A-Level Computer Science Non-Exam Assessment, covering both AQA and OCR. Includes plain-English mark scheme translations, templates, and honest guidance on what moderators actually look for.
- Project selection guide - what raises and limits your ceiling
- Section-by-section guidance: Analysis, Design, Technical Solution, Testing, Evaluation
- Mark scheme translated into plain English for both boards
- 4 templates: project proposal, stakeholder interview, test log, evaluation checklist
- Teacher section: malpractice protection and authentication guidance
- What moderators actually see - honest observations
This resource is being finalised. Check back shortly.
IB DP CS Internal Assessment Guide
IB Diploma Programme · SL & HL · Java & PythonA complete guide to the IB Computer Science Internal Assessment for both SL and HL. Covers all five assessment criteria with mark scheme translations, templates, and honest guidance on what moderators look for - including the Criterion D video submission, which most students handle badly.
- Criterion A: Planning - real client requirements, consultation evidence, writing measurable success criteria
- Criterion B: Solution Overview - Record of Tasks template, UML class diagrams, flowcharts, test plan structure
- Criterion C: Development - annotated code guide, OOP and ADT requirements, citations and sources
- Criterion D: Functionality - video planning, script structure, what moderators look for in 2-7 minutes
- Criterion E: Evaluation - testing against success criteria, collecting client feedback, limitations vs improvements
- Java and Python editions - covers both languages used across IB schools worldwide
This resource is being developed. Check back shortly.
In-depth teaching and learning booklets covering key A-Level Computer Science topics. Each booklet includes theory, worked examples, exam questions with mark schemes, and capstone programs.
OOP Booklet - Python
A-Level · Python 3 · 5 partsA complete OOP teaching and learning resource for A-Level Python. Covers every key concept from classes and constructors through to abstract base classes and magic methods.
- Part 1 - Introduction: what OOP is, why it is used, advantages and disadvantages, OOP vs procedural
- Part 2 - The Four Pillars: encapsulation, inheritance, polymorphism, abstraction (each with code)
- Part 3 - Concepts in depth: 10 topics including properties, super(), ABC, dunder methods
- Part 4 - 12 A-Level exam questions with full mark schemes (2 to 8 marks)
- Part 5 - 3 capstone programs: RPG Combat System, Social Media Simulator, Online Shop
OOP Booklet - C#
A-Level · C# 10+ · 5 partsThe same comprehensive OOP booklet written specifically for C#. Covers C# access modifiers, virtual/override, interfaces vs abstract classes, and operator overloading.
- Part 1 - Introduction: what OOP is, why C# uses it, advantages and disadvantages, OOP vs procedural
- Part 2 - The Four Pillars: all four with C#-specific code and explanation
- Part 3 - Concepts in depth: 10 topics including interfaces, sealed, virtual/override, ToString()
- Part 4 - 12 A-Level exam questions with full mark schemes (2 to 8 marks)
- Part 5 - 3 capstone programs: School Management System, Bank Account System, Blackjack Card Game
Stacks & Queues Booklet - Python
A-Level · Python 3 · OCR H446A complete teaching and learning resource covering all four data structures for OCR H446 A-Level Computer Science, implemented in Python.
- Four structures: Stack, Linear Queue, Circular Queue, Priority Queue
- Step-by-step traced examples for every structure
- Teacher guide with 6-lesson sequence and common misconceptions
- 10 OCR H446-style exam questions with full mark schemes
- 8 directed exercises from Foundation through Extension
- Capstone: Text Editor with Undo (Stack) and Print Spooler (Circular Queue)
This resource is being finalised. Check back shortly.
Stacks & Queues Booklet - C#
A-Level · C# 10+ · OCR H446The same comprehensive booklet written specifically for C#. All four data structures implemented from scratch using arrays, with C#-specific syntax throughout.
- Four structures: Stack, Linear Queue, Circular Queue, Priority Queue
- Array-based implementations (no Stack<T> or Queue<T> shortcuts)
- Step-by-step traced examples for every structure
- Teacher guide with 6-lesson sequence and common misconceptions
- 10 OCR H446-style exam questions with full mark schemes
- 8 directed exercises from Foundation through Extension
This resource is being finalised. Check back shortly.
Browse all 100 challenges. 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