Competitive programming in C++ for NOI

Ages 13 - 19

Learn C++

National Olympiad in Informatics (NOI) in C++

What is Competitive Programming?

Competitive Programming encapsulates the art of solving problems using computer science (CS) techniques with the spirit of sporting activity.
Participants are required to create programs to solve logical problems according to predetermined set of specifications. The nature of the problems encountered are such that answers can be obtained by having even the most rudimentary programming skills. The challenge, therefore, is in how to solve such problems in the most elegant fashion possible.
Photo by Myburgh Roux from

Elegance in this context, refers to a solution that is designed to obtain the correct output while minimising the time taken, as well as the amount of resources required for the computation. The study of computer science directly addresses problems of this nature.

The National Olympiad in Informatics (NOI)

The National Olympiad of Informatics (NOI) is Singapore's most prestigious annual competitive programming arena organised by the NUS School of Computing that is designed to provide a serious problem-solving challenge to all coders. Participants have to score points by solving problems under a 5-hour time limit, with higher number of points credited for more elegant solutions.
Top NOI winners will also be invited to join the International Olympiad in Informatics (IOI) Training Team to undergo further training. Selected participants will then represent Singapore in the IOI competition.
Students desiring to take part in the NOI will have to register with their school. No exceptions are allowed.
For more information on the NOI, please refer to the official website.

About this Course Series

The courses in this track will train our students to be able to compete in the NOI contest with the overall aim of enabling them to be all-rounder programmers who are better prepared to produce quality software and ready to face hard research problems in Computer Science.
Focus is placed on the study of fundamental computer science competencies such as:
Icon made by Becris from
Data Structures
Icon made by Becris from
Problem Solving
Icon made by Prosymbols from

It is worth noting that the study of the components above is highly specific to the nature of competitive programming. Although the requisite knowledge of algorithms, data structures and problem solving techniques is emphasized in almost all our other courses, this course will take a more rigorous and clinical approach in its discourse of the aforementioned topics - especially with regard to problem solving. On this note, the problem solving techniques that will be discussed refer to CS concepts that are grounded in theory and proofs.
All classes in this track will be conducted in the C++ Programming Language. Although the NOI competition allows for multiple languages (Java, Python, C++) to be used, C++ remains the programming language of choice. Students will be better prepared to understand how to address subtle complexities of coding when programming in C++ due to the rigorous nature of the language.
Find out more about our Competitive Programming with C++ courses below, or please enquire now for more information on our NOI training in C++. Please note that these courses are by invitation only.

Introduction to Competitive Programming for the NOI

Build a strong foundation in the basics of competitive programming through mastery of basic C++ syntax, data structures and problem solving methodology. Students will be also be taken through common algorithms and how best to analyse and apply them to problem sets found on Kattis and internal training problem archives.

Advanced Data Structures, Graphs and Dynamic Programming

Delve deeper into the complexities of competitive programming using advanced techniques and tools. Learn about the general problem solving patterns and apply out-of-the-box adaptations for creative solutions.