Home A-Level CS

The Sinclair ZX81

The machine that kickstarted the UK home computer industry.

Installing the Raspberry Pi Camera Module

How to install the Raspberry Pi camera module and take a picture on the command line.

Object Detection with a Raspberry Pi and OpenCV

How to use a deep neural network with OpenCV to recognise objects using a Raspberry Pi camera.

Database Concepts

What are databases and why are they used?

Cambridge A-Level Computer Science Articles

Articles relevant to the Cambridge A-Level and AS-Level secondary school computer science syllabus.

Vector Graphics

What are vector graphics and how is this different to bitmap graphics?

Bitmap Graphics and Colour Depth

An explanation of bitmap graphics and the meaning of the term colour depth.

Exceptions in Programming

What are exceptions and why are they used in programming?

Pseudo Code

What is pseudo code and why is it used?

The EDSAC Valve Computer

The EDSAC was a 1947 valve computer built by Cambridge University.

Binary To Decimal 7-Segment LED Display Project

How to build a single digit 7 segment LED display for the 3-bit binary adder circuit we constructed previously to convert the binary output into a decimal number.

Reverse Polish Notation

What is Reverse Polish Notation (RPN) and why is is used?

Backus–Naur Form (BNF)

How is Backus-Naur Form used to describe programming languages?

Binary Coded Decimal (BCD)

An explanation of Binary Coded Decimal (BCD) as an alternative to floating point binary.

Binary Trees

What is a binary tree data structure and how does the algorithm work?

Abstract Data Types

What are Abstract Data Types?

An Introduction to Protocols

HTTP and SMTP are protocols, but what is a protocol?

How to Build a 3-bit Adder Circuit from Logic Gates

A practical guide to building a circuit to add two 3-bit numbers using 7400 series logic gates using full adders and half adders.

An Introduction to Data Compression

What is data compression and how does it work?

Compilers and Interpreters

What is the difference between compiled and interpreted code and what are the benefits of each approach?

What is a Virtual Machine?

What are Virtual Machines (VMs) and why are they useful?

Static RAM versus Dynamic RAM

What's the difference between static and dynamic memory?

The Merge Sort Algorithm

How does the merge sort algorithm work?

Wireless versus Cabled Internet

Why is internet via cable still used in preference to wireless and what is the difference between fibre optic and copper cables?

Satellite Internet Versus Ground-Based Wireless

What are the advantages of satellite internet versus ground-based cell towers and when is each appropriate?

The Difference between a LAN and a WAN

What is the difference between a Local Area Network (LAN) and and Wide Area Network (WAN)?

Client-Server and Peer-to-Peer Networking

What is the difference between the client-server model of networking and peer-to-peer?

What are Thin Client and Thick Client Systems?

What are thin and thick clients and what are the benefits of each approach?

The Bus Network Topology

What is a bus network?

The Star Network Topology

What is a star network?

Fix Full /boot Partition on Linux Mint

How to solve a full /boot partition on Linux Mint

Understanding Hash Codes and Hash Functions

What are hash codes and how are they useful in programming?

What is Register Transfer Notation?

An introduction to Register Transfer Notation and how it is used to describe the fetch/execute cycle of a CPU.

Sequential and Serial Vs Random File Access

What is the difference between serial, sequential and random file access?

Finding the Version of Raspberry Pi OS Installed

How to determine the version, code name and kernel version of the Raspberry Pi OS that is currently installed using the command line.

What Does GNU/Linux Mean?

What does GNU/Linux mean and how is it different to Linux?

Usage of the Kowo Standing Desk Control Box

Instructions for using the Kowo standing desk control box.

What is Object Oriented Programming?

An explanation of Object Oriented Programming with examples in Python.

Von Neumann Computer Architecture

An explanataion of the Von Neumann computer architecture and how registers are used.

Negative Numbers in Binary: Two's Complement

How are negative numbers represented in binary?

The Difference Between Imperative and Declarative Programming

What's the difference between the imperative and declarative paradigms in programming languages?

Floating Point Numbers in Binary

How real numbers can be represented in binary using floating point with the IEEE 754 standard.

Converting Decimal to Binary Floating Point

How are decimal numbers converted to IEEE 754 standard floating point in binary?

Installing the Raspberry Pi AI Module

Installing the Raspberry Pi Hailo AI accelerator module onto a Raspberry Pi 5.

Configuring Wi-Fi on a Raspberry Pi (Command Line)

How to configure wifi via the command line on a headless Raspberry Pi in the 64-bit bookworm version of Raspberry Pi OS.

Installing the Active Cooler on a Raspberry Pi 5

How to install the active cooler module (heatsink and fan) on a Raspberry Pi 5.

Hello World in Assembly on a Raspberry Pi

How to get started writing 64-bit ARM assembly language using a Raspberry Pi.

Assembly Language Instructions and Addressing Modes

An introduction to assembly language, instructions and addressing modes.

Assembly Language and Machine Code

What is assembly language and how does it relate to machine code?

The Bubble Sort Algorithm

How does the bubble sort algorithm work?

What is an Operating System?

Why does a computer need an operating system (O/S) and what does it do?

How Does an SR Latch Work?

An explanation of how an SR latch logic circuit works in detail.

What are Flip-Flops and Latches?

What are SR and JK flip-flops and latches and how do they work?

What are Linked Lists?

What are linked lists and how are they used?

The Insertion Sort Algorithm

How does the insertion sort algorithm work and how can it be implemented in Python?

Linear Search versus Binary Search

How does the binary search algorithm work and how is it better than a linear search?

How Logic Gates are Built from Transistors

How can transistors be used to build logic gates?

Boolean Algebra and Logic Gates

How is algebra used to represent electronic logic gates and why is this useful?

What do the terms SIMD, MISD, SISD and MIMD mean?

What do the terms SIMD, MISD, MIMD and SISD mean in relation to CPU architecture?

What are RISC and CISC CPUs?

What's the difference between RISC and CISC CPUs?

Web Server to Play a Sound when a URL is Visited

A simple web server in Python that plays a sound file when a URL is visited. This can be used as an alarm or notification.

Understanding the TCP/IP Protocol

TCP/IP is the protocol underpinning the internet. But what is it and what does it do?

Calculations with Logic Gates: Full Adders and Half Adders

How are logic gates used to do calculations?

Fixed Point Numbers

Using fixed point arithmetic to represent real numbers.

Why do Computers use Binary Numbers?

Explaining why computers use binary numbers instead of decimal.

A Solution to Online Game Cheating

A method for handling cheating in online games without invasive anti-cheat software.

An Introduction to Electronic Logic Gates

What are logic gates? What do logic gates do and why are they relevant?

Working with Numpy Arrays in Python

This guide shows various examples of manipulating arrays using Numpy in Python

How to Build a Debian .deb Installer Package

How to create a .deb installer package for Debian and Ubuntu

How to Choose a Linux Distro

What is the difference between Linux distributions? How to choose the distro that's right for you?

Invoking Python with the Shebang in a Portable Way

How to use the shebang line with Python when the interpreter may be at any path.

Starting a Simple SSL/TLS Web Server for Software Development and Testing

Sometimes you need a simple SSL web server for software development or testing and don't want to start up a heavyweight web server.

Controlling LIFX Smart Light Bulbs using Python

How to turn on, off, enumerate and change the colour of LIFX smart light bulbs using Python on the local network.

Playing Audio over Bluetooth From a Raspberry Pi (Command Line)

How to play audio over bluetooth from a Raspberry Pi over the command line.

Beginners Video Encoding Guide using ffmpeg

A beginners guide to encoding video using ffmpeg. How to change the video encoding and select specific audio tracks and subtitles.

Solving First Generation AMD Ryzen Freezes and Reboots in Linux

AMD first generation Ryzen crashes, mouse pointer freezes (black screens) and the machine reboots when used with Linux