Intended educational outcomes (this page will later be updated with references to the UK computer science GCSE curriculum, and maybe others):
- Get comfortable reading code. The project will involve reading a Python web browser containing about 100 lines of code. It will be covered in comments and won't assume more than basic Python knowledge - but still, reading large amounts of code is a skill in itself. There will be games based on finding the right place to add small new features, which will be mostly about figuring out where to add them.
- Understand encryption. We'll demonstrate, using a Python web browser and a Python web server, how unencrypted HTTP traffic can be intercepted, and how HTTPS can't.
- Understand networking. We'll see the requests and responses flowing back and forth between the web browser and web server.
- Understand security bugs. There are games to find some hidden security bugs in the web server.
Because this involves a web server and a web browser, these exercises can't
be run on an online Python REPL. The kids will need a real computer capable
of running Python locally, and they'll need to be able to install a few Python
libraries using pip
. You should carefully run through the setup requirements
before deciding if this project is right for you.
You may find solutions at this page.