This module aims to help you become a computational problem solver. You’ll learn techniques to solve computational problems efficiently and apply those techniques using Python. You’ll also learn about the limitations of computing: which problems can’t be solved algorithmically or for which no efficient solutions are known. This module is suitable if – whatever your field – you need to design or implement an efficient algorithm or to understand both the power and the limitations of computing. Though the focus is on the underlying ideas, you’ll also work with some mathematical concepts and notation.
What you will study
You’ll learn to state a problem precisely so that it can be solved with a computer. In other words, you’ll learn to express the problem in a way which allows you to write an algorithm for solving it. However, not all algorithms are equally good solutions. For that reason, you’ll also learn how to analyse the speed and efficiency of algorithms and establish whether an algorithm does what it is supposed to do. Finally, you’ll delve into the very foundations of computing. You’ll learn which problems cannot be solved with an algorithm. You’ll also learn the limits on the speed with which algorithms can solve many important practical problems.
The module comprises three parts, each ending with an assessment task:
Part 1
In the first part, you’ll learn basic data structures for organising data, like lists, stacks, queues, dictionaries, and sets. You’ll also learn how to analyse the complexity of an algorithm and how to measure its runtime.
Part 2
The second part covers two non-linear data structures: trees and graphs. The former can represent hierarchical data, and the latter can model social, transport, and other kinds of networks. The main focus of the second part is algorithmic techniques like search (brute-force, breadth-first, and depth-first), divide and conquer, recursion, and greedy algorithms. These are general-purpose techniques for solving a wide range of problems.
Part 3
In the third part, you’ll further develop your understanding of graphs and algorithmic techniques (backtracking, dynamic programming). You’ll also learn about the limitations of computational problem solving (non-computability and the P ≠ NP conjecture).
Entry requirements
You must have passed one of the following modules:
an understanding and experience of programming in Python
some knowledge of mathematics.
Are you ready for M269?
Teaching and assessment
Support from your tutor
You’ll get help and support from an assigned tutor throughout your module.
They’ll help by:
marking your assignments and offering detailed feedback to help you improve
providing individual guidance, whether that’s for general study skills or specific module content
guiding you to additional learning resources
facilitating online discussions between your fellow students in the dedicated forums.
Online tutorials run throughout the module. While they’re not compulsory, we strongly encourage you to participate. Where possible, we’ll make recordings available.
Assessment
Course work includes:
2 Tutor-marked assignments (TMAs)
End-of-module assessment
What's included
You’ll have access to a module website, which includes:
a week-by-week study planner
course-specific materials
audio and video content
assessment details, instructions and guidance
online tutorial access
access to student and tutor group forums.
Additionally, the website includes:
M269 software: Python, Jupyter Lab, and additional libraries
access to the Open Computing Lab
PDF and HTML versions of the module materials
Python code files.
You can work through the module materials online, on the Open Computing Lab (which requires internet access), or offline, on your computer (which requires installing the provided M269 software).
Computing requirements
Primary device – A desktop or laptop computer with at least 8 GB of RAM and a quad-core processor (2.4 GHz minimum speed). It’s possible to access some materials on a mobile phone, tablet or Chromebook; however, they will not be suitable as your primary device.
Peripheral device – Headphones/earphones with a built-in microphone for online tutorials.
Operating systems – Windows 11 or the latest supported macOS.
Internet access – Broadband or mobile connection.
Browser – Google Chrome and Microsoft Edge are recommended; Mozilla Firefox and Safari may be suitable.
Our OU Study app operates on supported versions of Android and iOS.
Software – Any additional software will be provided or is generally available for free.
If you have a disability
The OU strives to make all aspects of study accessible to everyone, and this Accessibility Statement outlines what studying M269 involves. You should use this information to inform your study preparations and any discussions with us about how we can meet your needs.
To find out more about what kind of support and adjustments might be available, contact us or visit our Disability support website.
Future availability
Algorithms, data structures and computability (M269) starts once a year – in October.
It will next start in October 2027.
We expect it to start for the last time in October 2028.