You are viewing information for England.

# Algorithms, data structures and computability

Qualification dates
Start End

The aim of this module is to help you become a computational thinker. Formulating a problem for efficient solution by computers is an extremely important skill. In this module, you will hone this skill: exploring a range of computing concepts; applying these to a variety of problems; and, in the process, becoming familiar with the popular Python programming language. This is the module for you if you are specialising in computing or if – whatever your field – you need to understand both the power and the limitations of computing. Though the focus is on the underlying ideas, you will also need to work with some mathematical concepts and notation.

## What you will study

You will learn to take a problem and state it precisely in order that it can be solved with a computer. In other words, you will 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 will also learn how to analyse the speed and efficiency of algorithms, and establish whether an algorithm really does what it is supposed to do. Finally, you will delve into the very foundations of computing. You’ll learn which problems cannot be solved with an algorithm. You will also learn what the limits are on the speed with which algorithms can solve many important practical problems.

Throughout the module you’ll encounter activities and visualisations that bring to life the concepts that are at the heart of this module. You will gain an understanding of the basic principles behind the answers to a wide range of questions including:

• How could algorithmic knowledge of sorting help a hospital during the devastation following a natural disaster such as the Haiti earthquake?
• How can companies like Amazon and Facebook sort petabyte data sets within seconds, for further analysis?
• How can a bank locate a single customer record within a few milliseconds, from within a database of many millions of records?
• How can a forensic laboratory locate a distinct sequence of base pairs speedily within a DNA molecule containing over three billion such pairs?
• How can the millions of operations involved in the production process for an advanced aircraft be scheduled to give maximum efficiency and minimum cost and time span?
• How can a computer be programmed to beat human chess players of grandmaster standard?
• In a telecommunications network, how can the data packets being transferred from sender to destination be routed through a series of hundreds of switches to minimise delay and network congestion, as the patterns of network activity change constantly?
• Can a compiler tell you whether your program will ever finish running?

### You will learn

The module comprises three parts.

Firstly, you are introduced to the concept of computational thinking. In particular, you will consider the question ’What is it to compute?’. A number of key concepts are defined – such as computational problem, algorithm and abstraction – and their application is illustrated. You will be given examples of computational problems and their solutions in a wide variety of fields, ranging from physics and biology to economics and sports. You will also start using the Python programming language.

Secondly, you’re introduced to tools and techniques for:

• creating abstractions that represent a problem
• devising algorithms that solve a problem efficiently.

A range of standard data structures and algorithms for sorting, searching and optimisation will be covered and illustrated with practical examples. You will also encounter notions such as Big-O notation, induction and recursion.

The first two parts include introductions to sets, functions, logic and proofs. In the third part, you will further develop your understanding of these concepts. In particular, some of the ideas – that you will have been introduced to informally – will now be presented using formal mathematical notation. This will be in the context of concrete applications, such as databases. At this point, you’ll also learn about the limitations of computational problem solving (non-computability and computational complexity) and recent developments in computing, such as quantum computing.

## Entry requirements

To enrol on M269 to start in October, you must either have:

1. passed Object-oriented Java programming (M250) (or be enrolled on it to start in October)
2. passed Introduction to computing and IT 2 (TM112) (or be enrolled on it and have started it in April).

You need an understanding or experience of computing; an understanding and experience of programming; and some knowledge of mathematics – check if you’re ready for M269, with our self-assessed quiz.

## What's included

The module uses both online and printed material in combination with a book. Electronic copies of printed materials, other documents, software, programming activities, and online forums will be available via the module website.

### Computing requirements

A computing device with a browser and broadband internet access is required for this module. Any modern browser will be suitable for most computer activities. Functionality may be limited on mobile devices.

Any additional software will be provided, or is generally freely available. However, some activities may have more specific requirements. For this reason, you will need to be able to install and run additional software on a device that meets the requirements below.

A desktop or laptop computer with either:

• Windows 7 or higher
• Mac OS X 10.7 or higher

The screen of the device must have a resolution of at least 1024 pixels horizontally and 768 pixels vertically.

To join in the spoken conversation in our online rooms we recommend a headset (headphones or earphones with an integrated microphone).

Our Skills for OU study website has further information including computing skills for study, computer security, acquiring a computer and Microsoft software offers for students.

## Teaching and assessment

You will have a tutor who will help you with the study material and mark and comment on your written work, and who you can ask for advice and guidance. Your tutor will support you by email and telephone, and the tutorials offered will be a blend of online and face-to-face tutor group meetings, the balance of which may be subject to tutor/regional variation. Additional support may be found through the module discussion forums, with which your peers, tutor and forum moderator can interact.

Contact us if you want to know more about study with The Open University before you register.

### Assessment

The assessment details for this module can be found in the facts box above.

You must use the online eTMA system to submit your tutor-marked assignments (TMAs).

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

## Future availability

Algorithms, data structures and computability (M269) starts once a year – in October. This page describes the module that will start in October 2019. We expect it to start for the last time in October 2024.

### Course work includes:

2 Tutor-marked assignments (TMAs)
7 Interactive computer-marked assignments (iCMAs)
Examination
No residential school

### Student Reviews

See what other students thought.

### Course satisfaction survey

See the satisfaction survey results for this course.