Computer coding, also known as computer programming, is giving a computer instructions to tell it what to do.
These instructions are written in a coding 'language', which has grammar and syntax just as other kinds of languages do.
Your code, written in a particular language, is then converted into binary (ones and zeroes), which is the only way a computer can understand the instructions.
Our Introduction to coding workshop looks in more depth at what coding is, how to think like a computer, and some key concepts that are useful for learning any coding language.
See our Forthcoming training sessions for the next face to face Introduction to coding session.
Our lives are becoming more and more digitally focused. There are applications now that can do many amazing things, but there are still plenty of times you'll need a solution for which there isn't an application. Being able to code increases what you can do with technology and helps you understand what might be possible.
Computers and programming are good for:
Forthcoming sessions on :
There's more training events at:
Which coding language should you learn? The answer really depends on what you would like to achieve. Most programming languages were designed with some purpose in mind, so it follows that some languages are better than others for certain tasks.
You might choose a language in a particular domain, or choose one by its popularity, what it can do for you, or how much someone with skills in that language can earn. Most languages use similar building blocks, so learning one will give you transferable skills to use for other purposes.
Our resources for learning various coding languages might be a useful starting point for looking at different coding languages and seeing what they can do.
If you're not sure what kind of coding is for you, here's some more details about the choices available.
Block-based coding is when you use a jigsaw-like interface to drag and drop sections of coding together from a selection of pieces. These tools allow you to focus on creating cool games and apps without having to type code, and introduce you to key areas of syntax using colour conventions.
Some common block-based coding tools are Scratch, which allows you to create animations and games using 'sprites' that you can control with code, and Thunkable, which allows you to create simple apps using built-in components that utilise device features such as text to speech and image recognition.
The ability to make and edit websites is often a common goal when learning to code. HTML, or HyperText Markup Language, is how the web is structured, and CSS (Cascading Style Sheets) is how the website is then made to look good.
You will often find guides and tutorials to HTML and CSS together as they work together to display web pages in your web browser.
If you want to learn coding so you can work with data or analyse research, one common coding language is Python. Python is often recommended for beginners as it is a general coding language that you can use for data analysis but also creating apps and learning key concepts in coding.
If you're working with statistics, you might learn R, a coding language designed for statistics and graphical plotting.
There's a wealth of free resources online for learning different coding languages, including tutorials, written guides, and courses. We have also run workshops on creative coding in good tools for beginners to start learning coding with.
Here you'll find our resources from these sessions and our suggestions for external resources that might be useful.
These resources might cover a range of coding languages, help you with general concepts, or offer suggestions for what you learn.
Codecademy is a popular site for learning coding, with free courses (though for some features you have to pay). It also has a 'sorting quiz' to try and match you to coding mindsets and languages you might want to start learning.
If you want something with a course structure, you might want to try a free course on a site like FutureLearn, edX, or ,Open Learn. There are often introductory coding courses that combine videos, articles, and practical exercises, and allow you to learn alongside other people.
Scratch is a block based coding tool designed for beginners and education contexts, which allows you to create games, animations, and interactive stories.
Coding with Scratch exercises (to go with slides)
Thunkable is a block-based coding tool for creating simple interactive apps
There is also an extensive Sonic Pi tutorial on the Sonic Pi website that goes through the audio and coding knowledge to take you from beginner to expert (it has quite a steep learning curve).
Processing is a coding language designed for creating visualisations, animations, and art.
Our Getting started with coding in Python session introduces you to key concepts in coding using Python and has a hands-on workbook to get to grips with these features.
The page also has a range of suggestions for other Python resources and courses you can take.
We think all coding is fun, but sometimes you might want something more focused on play or discovery. Whether it's to relax, think in a different way, or learn with children, here's our suggestions for playful activities that develop coding skills.
Scratch is a great way to learn block-based coding whilst creating fun animations and games. You can start by having a go at building something, or by trying out other people's projects and then looking at the code that runs them. There is also a ScratchJr app with a simpler interface.
If you want to learn Scratch for yourself or to help learn with young people, we have a Coding with Scratch session consisting of slides you can work through, exercises to get familiar with Scratch, and a selection of Scratch examples
Hour of Code has a list of free hour-long activities and games that teach different elements of coding and coding skills. These are aimed at different age groups and skill levels, but are great resources for anyone to try out. You can make games based on well-known characters, create art and drawings, and learn the basics of coding in inventive ways.