MA314      Half Unit
Algorithms and Programming

This information is for the 2019/20 session.

Teacher responsible

Prof Konrad Swanepoel


This course is available on the BSc in Business Mathematics and Statistics, BSc in Management, BSc in Mathematics and Economics, BSc in Mathematics with Economics, BSc in Mathematics, Statistics, and Business and BSc in Statistics with Finance. This course is available as an outside option to students on other programmes where regulations permit. This course is available with permission to General Course students.


Introduction to Abstract Mathematics (MA103), or an equivalent course giving a background in rigorous mathematics.

Course content

Introduction to theory of algorithms and basics of Python programming. Algorithmic thinking: Do you know how to multiply integers? Basic toolkit for the design and analysis of algorithms, and an in-depth study of sorting algorithms: Running time, Recurrence relations, Big-O notation, Correctness, Finite induction, Loop invariants. Optimal comparison sorts, and sorting in linear time. Tour of the most important data structures, fundamental algorithms, and algorithm design techniques: Lists, Stacks, Queues, Hashing. Breadth-first search, Depth-first search, Prim's algorithm, Dijkstra's algorithm, Maximum Flow. Incremental and recursive algorithms, Divide-and-Conquer, Greedy algorithms. A few highlight applications: Web search and PageRank, cryptocurrencies and Bitcoin.


20 hours of lectures and 10 hours of classes in the MT. 2 hours of lectures in the ST.

Formative coursework

Written answers to set problems will be expected on a weekly basis.

Indicative reading

T H Cormen, C E Leiserson & R L Rivest, Introduction to Algorithms, MIT Press 1990 (or 2nd edn, 2001 or 3rd edn, 2009)


Exam (80%, duration: 2 hours) in the summer exam period.
Coursework (20%) in the MT.

Key facts

Department: Mathematics

Total students 2018/19: 61

Average class size 2018/19: 15

Capped 2018/19: No

Value: Half Unit

Guidelines for interpreting course guide information

Personal development skills