Skip to content

Bjarki Ágúst Guðmundsson Posts

Featured Post

T-414-ÁFLV: A Competitive Programming Course (2016 edition)

We will be holding our course about Competitive Programming for the second time during the three weeks from April 25th to May 13th. The format will be similar as before, but hopefully with a fresh set of problems.

Note: The course material is now accessible on Github. Contributions are welcome.
Warmup problems
Lecture 1: Introduction
Lecture 2: Data structures and libraries
Lecture 3: Data structures
Lecture 4: Problem solving paradigms
Lecture 5: Greedy algorithms
Problem session 1
Lecture 6: Dynamic programming
Lecture 7: Unweighted graphs
Lecture 8: Graphs
Lecture 9: Mathematics
Problem session 2
Lecture 10: Network flow
Lecture 11: Strings
Lecture 12: Geometry
Final exam

My favorite bug

It was early November 2013, and me and a friend of mine, Helgi, were preparing to compete in our annual ACM-ICPC regional contest. We had been adding various algorithms and data structures to our code library, which we were allowed to bring with us to the contest. He had recently taken an Operating Systems course, where he had implemented a Skip list for use in a memory allocator. To my knowledge, Skip lists have not been used much in programming contests, but since it is a relatively simple (to code) data structure that supports the same operations as balanced binary search trees with the same (expected) time complexity, we thought it might be a good idea to add it to our library. (Note that C++, which was our programming language of choice, already provides a balanced binary search tree through its standard library, but it doesn’t support augmentation, which is something that is frequently needed in programming contests.)

T-414-ÁFLV: A Competitive Programming Course

I held a course about Competitive Programming at Reykjavik University on the fall semester of 2014. It was three-week long with a fresh lecture and problem set each day. There were almost 90 students registered and it turned out to be a big success, although some students complained about heavy workload. For me it was a very rewarding experience.

Below you may find the lecture slides (including LaTeX sources), the problem sets, and other supporting material. All problems are available on the Open Kattis online judge.

Note: The course material is now accessible on Github. Contributions are welcome.
Lecture 1: Introduction
Lecture 2: Data structures and libraries
Lecture 3: Data structures
Lecture 4: Problem solving paradigms
Lecture 5: Greedy algorithms
Problem session 1
Lecture 6: Dynamic programming
Lecture 7: Mathematics
Lecture 8: Unweighted graphs
Lecture 9: Graphs
Lecture 10: Network flow
Problem session 2
Lecture 11: Strings
Lecture 12: Geometry
Final exam