Jirat (Gino) Chiaranaipanich

Competitive Programming in Thailand

As an international student who competed in the Thai olympiad camps, I found English-language information about the process scarce. This post documents the competitive programming environment and IOI team selection process.

Selection Process

  1. Qualify to take the POSN 1 Entrance exam through TOI-Zero (before mid-June)
  2. Pass the POSN 1 Entrance Exam (signup by late-July, exam is late-August)
  3. Pass the POSN 1 Camp (~50 -> ~30 people per camp, around 32 camps total) (~October)
  4. Pass the POSN 2 Camp (~30 -> 5 or 6 people per camp) (~March)
    1. Note: Passing the POSN 2 Camp guarantees entrance to the computer science department of any Thai university except Chula1
  5. Compete and win a silver/gold medal at the Thailand Olympiad in Informatics (TOI) (~100 -> ~30 people) (April)
    1. Note: Receiving a bronze medal or above guarantees entrance to the computer science department of Chula2
  6. Pass IPST Camp 1 (~30 -> ~20 people) (May)
  7. Pass IPST Camp 2 (~20 -> 4 people) (May/June)

Note: before 2025, the IOI selection process took two years. TOI happened in May, and IPST Camps were run in parallel with POSN camps (October for IPST 1, March for IPST 2). Since 2025, the schedule has been compressed in order for the selection process to only take one year.

Syllabus

Precamp to TOI Syllabus

You can find this syllabus in Thai on the official website: เกี่ยวกับคอมพิวเตอร์โอลิมปิก – มูลนิธิส่งเสริมโอลิมปิกวิชาการและพัฒนามาตรฐานวิทยาศาสตร์ศึกษา (สอวน.) Below is the english version (translated by GPT-4o mini).

TopicPre-Camp 1Camp 1Camp 2TOI
1. Computer Programs & Development
Computer components, software, types of programming languages
Getting started with programming (compiler, IDE, coding)
Basic input/output
2. Programming Language Fundamentals (C/C++)
C/C++ language structure and basics
Data types, variables, constants, operators, expressions, statements
Control structures (if, while, for, etc.)
Structured programming, flowcharts, pseudocode
Arrays and their use in problem-solving
Functions (parameters, return values, scope)
Recursive functions
3. Problem Solving via Programming
Example problems and coding practice
Writing, testing, and judging code (automatic judges)
Basic performance analysis, time-complexity calculation
Sorting algorithms
4. Mathematics for Programming
Logic
Sets
Functions & relations
Basic counting, combinations & permutations
Elementary number theory
Basic matrices
Basic geometry
Trigonometry
Sequences
Series
Equations & inequalities
5. Additional Programming Topics
Pointers
Classes / structs
Debugging basics
6. Graphs, Trees & Networks
Undirected, directed & weighted graphs
Graph types (complete, bipartite), trees, networks
Trees (general)
Binary trees
Spanning trees
7. Data Structures
Array
Stack & queue
Linked lists
Simple sorting (bubble, selection, insertion)
Search (binary search, string search)
Applications of data structures
Associative structures (map, unordered_map)
Priority queue
8. Algorithms & Techniques
Algorithm complexity analysis
Problem modeling
Binary search
2D-array techniques (prefix sums, DFS, BFS, etc.)
State-space / exhaustive search
Basic graph algorithms (DFS, BFS, connectivity, MST, Dijkstra)
9. Advanced Algorithms
Divide & conquer
Dynamic programming
Greedy algorithms

IPST 1 and 2 Syllabus

To my knowledge, the IPST Camps don’t have a public syllabus. These were the recommended topics to study for the 2024-2025 IPST Camps (credit: ttamx). You may notice that there are many parallels to the USACO Gold/Platinum/Advanced topics. Additionally, I haven’t separated topic lists for the two camps because there’s a large amount of overlap in material.

DP Optimization

Data Structures

Graph

Geometry

Decomposition

Techniques

Resources

Thai problems: useful for getting started

  1. programming.in.th one of the most popular
  2. One Tambon One Grader the other most popular
  3. Sheep Grader
  4. GitHub - packmani/toi-posn-com-guide

International problems: these have more problems, higher range of difficulty, and generally higher-quality

  1. Codeforces
  2. AtCoder
  3. USACO
  4. 환영합니다! :: oj.uz (olympiad-style problems, you should start these at ~TOI level)

Topic lists and educational material:

  1. USACO Guide
  2. The Ultimate Topic List
  3. Catalog - Codeforces

Further Reading

A way to Practice Competitive Programming : From Rating 1000 to 2400+

A Highly Experimental Training Plan for Beginners

Enhanced Training roadmap for newcomers


  1. To the best of my knowledge ↩︎

  2. Also to the best of my knowledge ↩︎

#competitive-programming