La Olimpiada Internacional de Informática (IOI) especifica un currículum de temas necesarios para afrontar la competición.
Uno de los requisitos para competir es tener un conocimiento básico de matemáticas, incluyendo temas como aritmética, geometría, funciones, lógica, combinatoria, grafos y demostraciones. Es necesario hacer hincapié en el tema de demostraciones, pues este tema generalmente no se adquiere en la educación secundaria. Te recomendamos que te pases por nuestra página amiga Olimpiada Matemática Ecuatoriana (OMEC) para empezar tu preparación, haciendo un leve énfasis en temas de matemática discreta: teoría de números, combinatoria, lógica y demostraciones.
En lo que respecta a Ciencias de la Computación, se espera que el estudiante tenga un entendimiento sólido de los conceptos básicos incluyendo:
- Fundamentos de programación: Variables, tipos, expresiones, condicionales, estructuras de control, funciones y parámetros.
- Resolución de problemas: Planear, generalización, especialización, separación de ámbitos, depuración, eficacia y eficiencia de algoritmos.
- Estructuras fundamentales: Tipos primitivos, arreglos, cadenas, estructuras concatenadas, manejo de memoria, punteros y referencias.
- Recursión: funciones recursivas, implementación, divide y vencerás, retroceso recursivo.
- Análisis de algoritmos: Invariantes, notación y análisis asintótico, clases de complejidad, intercambio entre tiempo y espacio, mediciones empíricas de eficiencia.
- Estrategias algorítmicas: bucles, fuerza bruta, algoritmo voraz, programación dinámica.
- Algoritmos: Algoritmos en enteros, manipulación de arreglos, búsqueda en cadenas, búsqueda binaria, selección, ordenamiento, travesía de árboles, componentes conectadas, camino más corto, árbol recubridor mínimo.
- Estructuras de datos: Pilas y colas, montículos, representaciones de grafos, árboles binarios de búsqueda.
- Algoritmos geométricos: Representación de puntos, vectores, rectas y segmentos, colinealidad, paralelismo y ortogonalidad, área de polígonos, envoltura convexa.
Para una introducción básica a estos temas te recomendamos estos artículos de Khan Academy en español. Te recomendamos profundizar más en dichos temas con este fabuloso libro de Luis Vargas.
La Olimpiada Internacional de Informática (IOI) permite el uso de varios lenguajes de programación. Sin embargo, nosotros recomendamos C++ ya que es el estándar en muchas competencias. Para dicho efecto, te invitamos a registrarte en el portal de omegaUp, una plataforma para resolver problemas algorítmicos online. Aquí puedes encontrar una excelente introducción interactiva a C++ y a la plataforma. Si lo deseas ver en formato audiovisual, revisa esta serie de videos del curso. También puedes pasarte por su blog, donde proveen incluso más material de estudio. Una vez que hayas terminado el curso de C++, te recomendamos completar los siguientes cursos de algoritmos I y II, cortesía de omegaUp. La Olimpiada Informática Ecuatoriana provee este curso similar a los cursos expuestos anteriormente, con algunas variaciones. Esta playlist de YouTube contiene sesiones de video correspondientes al curso anteriormente expuesto.
¿Puedes entrenar con herramientas en inglés? La CEMC provee una recopilación de actividades y materiales en matemáticas y ciencias de la computación. Cortesía del Centro para la Educación en Matemáticas y Computación de la Facultad de Matemáticas de la Universidad de Waterloo de Canadá.
Esperamos que luego de leer este artículo, tengas lo necesario para iniciar tu preparación en este emocionante campo de la informática. Entendemos que el currículo es muy extenso, pero esperamos que no te desanimes y perseveres. ¡Recuerda que todo esfuerzo tiene sus frutos!