← Back to courses
Programming Fundamentals

Data Structures and Algorithms

The structures and methods behind efficient programs, in Python

A classroom course in solving problems efficiently. The topics are those of MIT's published Introduction to Algorithms syllabus (6.006): modelling computational problems and measuring performance; the data structures dynamic arrays, hash tables, heaps and balanced binary search trees; and the algorithmic approaches sorting, graph searching and dynamic programming. Problems are solved in Python. This course is not affiliated with MIT and prepares for no exam.

10Modules
IntermediateLevel
3 monthsDuration
COURSE THUMBNAIL

What you will be able to do

Analyse how the running time of a program grows with its input
Choose the right data structure for a problem
Implement and compare sorting algorithms
Solve problems on graphs with breadth-first and depth-first search
Recognise and solve dynamic programming problems

Course outline

01
Computational problems and measuring performance
02
Dynamic arrays and sequences
03
Sorting
04
Hash tables
05
Heaps and priority queues
06
Binary search trees and balancing
07
Graphs and graph searching: breadth-first and depth-first
08
Dynamic programming
09
Common algorithmic paradigms compared
10
Problem-solving practice

Tools you will use

PythonVisual Studio CodeGit

What you need

Working knowledge of Python (Python Programming or equivalent)
School-level mathematics

Related courses