Intermediate Class:

The intermediate class is intended for people who can program but are not completely comfortable with algorithms. Ideally, you should attend every lecture as this class follows a curriculum.

Held in CS302 from 4:30PM to 6:00PM.

First Term:

  • 24/02 - Recursion 1
  • 03/03 - Sorting and Searching
  • 10/03 - Basic Asymptotic Analysis
  • 17/03 - Basic Data Structures and when to use them
  • 24/03 - Linked Lists, Stacks and Queues

Second Term:

  • 07/04 - Basic Number Theory
  • 14/04 - Recursion 2 (and Brute Force)
  • 21/04 - Greedy Strategies
  • 28/04 - More Advanced Asymptotic Analysis
  • 05/05 - Basic DP
  • 12/05 - Basic combinatorics

Third and Fourth Term:

More Recurrences, Graph Theory and other odds and ends.

Advanced Class:

The advanced class is more interest-based and is intended for people who have a firm grasp of the material covered by the intermediate classes. Lectures are mostly independent of each other, so you can safely choose to attend individual lectures.

Held in CS2A from 4:30PM to 6:00PM.

First Term:

Second Term:

Third and Fourth Term:

TBA - If you have any topics that you would be interested in being covered please email admins@algorithm.cs.uct.ac.za with your ideas.

Haskell Course:

Sometimes the topics we want to teach don't fit into the format of a weekly 90 minute class. This semester we're planning to hold a Haskell course. Haskell is a functional programming language, making it fundamentally different from many other languages which you are likely to have used (Java, Python and C++).

We have tentatively scheduled the course over two Saturdays: the 5th and 19th of March. With 2 weeks in between to give you time to practice the material from the first section of the course.

If you're interested in the course but can't make the given days, please email admins@algorithm.cs.uct.ac.za and we'll see if we can make a plan.