## Abstraction in Programming: A Beginner’s Guide

Abstraction is a powerful concept that helps us understand complex ideas by focusing on the essential aspects and ignoring unnecessary details. It allows us to simplify the world around us, making it...

## Python Anagrams Challenge

Checking whether two strings are anagrams of each other is a fairly common coding challenge or kata. At a local meetup recently, we looked at an extended version of the challenge: not...

## Thinking about Thinking – Recommended Books

Studying algorithms and algorithmic thinking is not only helpful for the the direct application of their concepts and techniques. It is also a way to develop thinking skills per se. A bit...

## Power Sets with Python

A power set is the set of all possible subsets of a set. For example, if we have a set containing [A, B, C] the possible subsets are: [[], ['A'], ['B'], ['A',...

## Python Challenge – 7 Puzzle

Here’s a fun little puzzle for you, which lends itself well to a Python coding solution. Find a two-digit positive integer that becomes 7 times smaller when its leftmost digit is removed....

## PYTHON LOOP INVARIANTS

Writing robust code is always a good idea, but is particularly important for mission critical contexts, such as where safety is an issue. There are several historical examples of where faulty code...

## Selection Sort with Python

In this article we are going to learn how to implement Selection Sort with Python. Selection Sort is a simple and intuitive sorting algorithm. It can be performed using an auxiliary array...

## Algorithm Animations

If a picture is worth 1000 words, an animation is worth even more! Fully understanding an algorithm can be hard, and it is helpful to be able to reason about it in...

## How to Trace Python Algorithms with a Visualisation Tool

Understanding all the details of how an algorithm works can be challenging, and it is helpful to be able to perceive what is happening from multiple angles. One particularly useful tool to...