De acuerdo al temario de la Olimpiada Internacional de Informática (IOI), los conocimientos que deben tener los concursantes en la etapa nacional se dividen en tres áreas: matemáticas, fundamentos de programación (Karel y C++) y un poco de ingeniería de software, de la siguiente manera:
- Matemáticas
- Teoría de números
- Geometría
- Conjuntos
- Relaciones
- Funciones
- Lógica proposicional
- Lógica de predicados
- Prueba de teoremas (sobre todo las relacionadas con algoritmos)
- Inducción matemática
- Recursividad
- Permutaciones
- Combinaciones
- Grafos y árboles
- Programación
- Datos, variables,, tipos de datos
- Expresiones
- Instrucciones
- Estructuras de control secuencial
- Estructuras de control de selección
- Estructuras de control iterativo
- Funciones
- Descomposición estructurada
- Tipos de datos estructurados
- Arreglos
- Registros
- Cadenas de caracteres
- Pilas y colas
- Grafos y árboles
- Funciones recursivas
- Especificación de algoritmos
- Precondiciones
- Postcondiciones
- Invariantes
- Recorridos de árboles
- Recorrido en amplitud y profundidad
- Trayectorias más cortas de un grafo
- Algoritmos de fuerza bruta
- Algoritmos codiciosos
- Programación dinámica
- Dividir y conquistar
- Árboles de expansión mínima
- Algoritmos de ordenamiento
- Algoritmos de búsqueda
- Gramáticas y autómatas sencillos
- Ingeniería de software
- Diseño estructurado
- Uso de la biblioteca estándar del lenguaje (standard library)
- Uso del ambiente integrado de desarrollo (IDE, por sus siglas en inglés): CodeBlocks