# A cs4fn guide to Secondary School Computing Topics

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.

### 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

##### Activities
• 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 SpeakComparing 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.

### 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.

### 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.

### 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.

### Cyber-security

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.

##### Activities

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.

##### Activities

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.

### 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

### Computational Thinking

Computational Thinking is the transferable problem solving skill underlying computer science. See our separate

# Forthcoming

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.

• Web design (HTML and Javascript)
• 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
• Databases
• Regular expressions,
• syntax and compilers