UCT Algorithm Circle

The UCT Algorithm Circle is an outreach programme for high school and university students offered to those identified as having an aptitude for computer programming or those who are already strong at computer programming and want to go beyond what is taught at school and university lectures. We focus on developing problem solving skills, rather than solving routine questions as is the focus at high school. We emphasise an understanding of programming and algorithms rather than pure memorisation and cover advanced material not covered in the high school curriculum.

The mission of the Algorithm Circle is to provide the opportunity for talented students to learn the basics and advanced topics in computer programming. The opportunity is extended to those unable, or too young to take IT at school. We wish to increase the number of younger students achieving in the South African Computer Olympiad and UCT's performance in the ACM International Collegiate Programming Contest. The success of the Algorithm Circle is measured by the results of its members in the South African Computer Olympiad, the International Olympiad in Informatics and the ACM International Collegiate Programming Contest.

The current committee is:

  1. Chairperson: Tslil Clingman
  2. Vice chairperson: Kieren Davies
  3. Treasurer: Peter Faul
  4. Secretary: Katlego Moukangwe


The classes are held weekly on Thursdays from 16:30-18:00 in the Computer Science building at the University of Cape Town. There are currently two classes:

  1. The intermediate class is targeted at those who have a decent grounding of programming wanting to learn introductory algorithms and data structures. Classes start with a lecture in room 302 (level 3), followed by a practical session in The Shuttleworth Lab (ground level).
  2. The advanced class is targeted at those who have a firm grounding of programming and mathematics wanting to learn advanced algorithms. Classes consist of a full 90 minute lecture in room CS2A (level 3).

The 2009 classes began on 29 January with an introduction to programming using Python, to allow those with no programming experience to attend. From 26 February we started introducing basic algorithms, introducing an advanced class at the same time. From 26 March, the two classes were completely split to allow the juniors to focus on understanding core programming and algorithmic principles while stimulating the advanced class with advanced algorithms.

On 31 July and 1 August we ran a course "Introduction to Programming Using Python". The top pupils were invited to join the weekly junior class. This has expanded into a separate initiative, Umonya, which is currently funded by Google and is spreading across South Africa.

Advanced algorithms that are covered include, but are not limited to:

Example problems we teach how to solve on a computer:

  1. What is the cheapest way to travel between two cities?
  2. How many different ways can we tile a 1×N floor using 1×2 and 1×3 tiles? How about a 2×N floor?
  3. What is the total area covered by a number of overlapping rectangles?

Video Recordings

We recently began recording some of our classes. You can download the videos here. You probably want to follow the appropriate slides.


Membership of the UCT Algorithm Circle is open to school learners, university students and anyone else with an interest in algorithms and is free of charge. If you would like find out more, you may email the admins at admins AT algorithm.cs.uct.ac.za Or you can just attend the next class.

For those unable to attend, the slides and other resources will be posted online and you are welcome to join in on the IRC channel (#algorithm on Shadowfire) to discuss these topics and more.


The admins can be contacted at admins AT algorithm.cs.uct.ac.za. Discussions are largely held in the IRC Channel, #algorithm on Shadowfire. Most of the members are GMT+02, and are avaliable throughout the day.