This repository contains a set of Python exercises that I use for teaching. The exercises are designed in such a way that they can be broken down into smaller steps for students who struggle. Most of these have a section called “extra” which is intended for students who are further along. If you’re looking for my Scratch material for ages 5+, you’re in the wrong place, see here instead.
Exercise | Libraries | Description |
---|---|---|
Basics | - | Some basic exercises for familiarising with IDLE, variables, I/O, data types, and operators |
Password checker | - | A program for checking the strength of an input password using conditional statements and relational operators |
Calculator | - | A simple calculator that applies a chosen mathematical operator to two given numbers |
Grid | turtle | Using imperative programming, the turtle library, and nested loops, we draw a grid |
Polygons | turtle | Using simple geometry and loops, we draw regular polygons |
Checkers | tkinter | Using the graphical library Tkinter, functions, and modular arithmetic, we render a checkerboard |
Paint | tkinter | A simple paint program that introduces event-driven programming using mouse and keyboard events, and a precursor to axis-aligned bounding box collision detection (by checking if a coordinate is contained in a rectangle) |
Animation | tkinter, (random) | Using given code of a render loop, make a square bounce off the corner of the window and change colour |
Snow | tkinter | An animated scene of a parallax snowfall using the random library, lists, and a render loop. Advanced students who have been introduced to object-oriented programming should create a Snow class from the start, otherwise take a data-oriented approach. |
Recursion | - | An introduction to recursion by creating a recursive factorial function |
Name search | - | Read a list of names from a given file into a list and performing a recursive binary search on them |
Binary trees | turtle, (random) | Using recursive functions we draw binary trees with the turtle package |
Card shuffle | - | An introduction into object-oriented programming and algorithm design. Implementing shuffles and sorts with lower computational complexity (linear or logarithmic) is only a requirement for advanced students. |
Card game | tkinter | A simple, mouse-operated card game where you can drag and flip cards |
Ice dodger | tkinter | Combining a range of past skills to create a game where the player must dodge falling objects |
Ball pit | tkinter | Putting Entity-Component Systems into practice and creating a physics engine. OOP is a requirement and students must understand class diagrams |
Waypoints | tkinter, threading | An introduction to parallel programming through multithreading. We separate rendering and logic and have entities follow a random waypoint model of mobility. |
Multiplayer | tkinter, threading, socket | We expand our game engine to communicate with a server that synchronises the positions of all user avatars in the class |
Game.io | tkinter, threading, socket | Using everything we have learned so far, students can recreate the *.io game of their choosing, or invent their own |
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License