In this cs4fn guide we provide links to a variety of fun/inspiring secondary school computing topics (and will be adding to these resources over time).
The cs4fn articles we suggest as reading also put them in the context of leading edge research and non-computing contexts, explaining concepts through analogy.
Our unplugged activities give physical activities away from computers using games, puzzles, magic, role playing computation to both inspire and help you and your students understand the concepts in a memorable and deep way.
What is an algorithm
Programs are algorithms, but what is an algorithm? A series of steps to follow to get something done. Guaranteed.
- Invisible Palming: a magic trick that is also an algorithm
- The Intelligent Piece of Paper
- The teleporting robot: a magic trick that is only 3 simple steps
Efficiency of an algorithm / complexity
Can there be more than one algorithm to do any particular thing? Yes, so how do you choose between them? One way is to count the steps involved. Algorithms that follow particular patterns can be massively more efficient
- The swap puzzle: Different algorithms to do the same thing need different numbers of steps
- Paper Halving: Explore how small steps can make big differences to a problem’s complexity
- Searching To Speak: Comparing different algorithms to help someone with locked-in syndrome communicate
Introductory programming: assignment, selection, iteration
Programs are written in very precisely defined languages. The basic concepts at the foundation of programming include how you manipulate and store data, how you choose between different courses of action and how you do things repeatedly.
- Box Variables: How variables and assignment work
- The Assignment Dry Run Activity
- Imp Computers: if statements
- A recipe for programming : how are programs structured
- Who wants to be the weakest millionaire? – using game shows to understand what a program is
- Computing Without Computers: Chapter 1-6
Data representation: number systems
Data representation: binary
Ultimately everything a computer stores is represented as binary: sequences of 1s and 0s. The starting point is to represent numbers as binary (and then anything else can be represented as numbers)
Data representation: text
How you represent data matters just as much as having a good algorithm to process it – ultimately everything is represented as binary so essentially numbers. Compression algorithms then allow the same text to be stored or transmitted with fewer numbers.
- Letters from the Victorian Fog: Braille – the first useful use of binary for characters
- Little Data: Compressing Vicky Pollard
- A (com)pressing problem
Data representation: images
Images can be represented as bitmap images: a little like a colour-by-number grid with a number representing the colour at each point or pixel. Compression algorithms allow the same information to be stored with few numbers. An alternate way of storing images is as vector drawings as instructions for drawing lines or shapes. The image is stored as an algorithm for recreating it. One advantage of this is that images can be drawn larger or smaller without losing accuracy just by scaling the numbers in the instructions. They also tend to use far less space than bitmap images
Data representation: sound
Sound can be represented with numbers too … and then all the same tricks can be pulled.
Algorithms for searching
Searching is something we do a lot on a computer and in life. Search algorithms provide a examples of how there can be many algorithms to do the same thing with massively differing properties.
- The Locked In Activity
- The 20 Questions Activity
- The Australian Magicians Dream: a magic trick about searching
- Searching To Speak: How understanding search algorithms might help someone with locked-in syndrome
- Computing Without Computers: Chapter 13 (The Search is on)
Algorithms for sorting
Another fundamental things we do with data is sort it: put it in to order, not least as it helps us search. There are all sorts of sort algorithms and the differences show how inventing algorithms needs a lot of creative thinking and ingenuity.
- The Bubblesort and Sort Dance Activities
- The Divide and Conquer Sorting Activity
- The Punch Card Sorting Activity
- Bubblesort Debugging Spot-the-difference
Keeping safe online matters, but its hard. There are many threats to counter. Encryption is just one of the tools for keeping safe.
Ethics, Computers and Society
Computer science is changing the way we do everything. Understanding the effects of technology on society and people matters. Just because we can do things, doesn’t mean we should and computer scientists need a strong ethical basis for what they do.
Advanced programming: objects
Object-oriented programming is a way of thinking of programs as being made up of objects that communicate with each other to get things done. It gives a powerful way to structure programs.
Advanced programming: recursion
Recursion provides an alternative and powerful way to get a program to repeat things. It forms the basis of a way of programming (a paradigm) called functional programming. It is mathematically very clean making it easier to reason about what a program does, and that can make it easier to get a program right.
- Sorry to Bug You: Grace Hopper inventing the compiler
- Smart translation: Fran Allen inventing better compilers
Finite State Machines
Limits of computation
Computers are not all powerful. There are some things they cannot do even if they had all the time before the universe ends to do it.
Big Data and Machine Learning
Big Data is all about collecting as much data as possible on something so that computers can number crunch and somehow draw knowledge and wisdom from it. The nurse Florence Nightingale was the original pioneer of Big Data! Now one of the keys to it is to create algorithms that can learn: machine learning
- Florence Nightingale: Rebel with a cause – pioneer of big data and data visualisation
- Machine Learning for Fun
- The Sweet Computer: building a brain that can learn out of sweets
- How to build an artificial brain
- How to teach a neuron to do things
Computational Thinking is the transferable problem solving skill underlying computer science. See our separate guide to computational thinking through cs4fn articles.
We hope to provide links to resources on the following topics over time. Let us know of any others it would be useful to cover.
- CPU architecture, fetch, execute and machine language
- Computer memory and storage
- Computer networks and the Internet
- Physical Computing (e.e., BBC micro:bits)
- Operating system and system software
- Using pseudocode and flowcharts
- Introducing programming: visual languages
- Intermediate programming: arrays, files and functions / procedures
- Software design, debugging and testing
- Truth tables and logical expressions
- Data representation: binary arithmetic
- Regular expressions,
- syntax and compilers