Competitive Programming

This is the companion web site for a book: "Competitive Programming 3: The New Lower Bound of Programming Contests" and its two past editions written by myself (Steven Halim - UVa status, Kattis status) and my younger brother (Felix Halim - UVa status) in 2010 - present (2017). This book is used in my course in School of Computing, National University of Singapore: CS3233 - Competitive Programming (2009-present) and available for wider audiences since 2010.


This book contains a collection of relevant data structures, algorithms, and programming tips written for University students who want to be more competitive in the ACM International Collegiate Programming Contest (ICPC), high school students who are aspiring to be competitive in the International Olympiad in Informatics (IOI), coaches for these competitions, those who love problem solving using computer programs, and those who go for interviews in big IT-companies.

"I cannot imagine a better complement for the UVa Online Judge site."

"Competitive Programming is a unique resource that I recommend to any student interested in raising their algorithmic programming skills to the next level. It is packed with insightful tips and techniques that are hard to find elsewhere, and remarkably thorough in its use of examples and references to sample problems."


Our objective in writing this book is similar with the ICPC vision: To further improve humanity by training current students to be more competitive in programming contests. The possible long term effect is future Computer Science researchers who are well versed in problem solving skills. We use both C++ and Java code to illustrate the algorithmic concepts, i.e. we dislike vague pseudo-code commonly found in many other Computer Science textbooks. We also use visualization tool: VisuAlgo to help explain the data structure and algorithm concepts to our audiences and beyond.

Target Audiences