Materiales extra

En este apartado encontrarás una serie de recursos extra que recomendamos como apoyo o extensión de nuestros cursos.

Materiales para aprender C++ y Python

Antes de aprender algoritmia, es recomendable coger algo de confianza con uno de los lenguajes admitidos en la competición. Python es algo más sencillo de aprender, pero C++ tiene la ventaja de que es el admitido en las olimpiadas internacionales (incluida la Europea Femenina) y por tanto podrás aprovechar lo aprendido en el caso de clasificarte, en vez de tener que empezar con otro lenguaje.

Para aprender Python
  • CS Dojo: Lista de reproducción que te guiará a través del proceso de aprender Python de una forma amena pero detallada.
  • CodingBat: Problemas de iniciación creados para practicar Python desde la comodidad de tu buscador. Recibirás feedback instántaneo sobre tu solución.
  • Sección de Python de los manuales de las Olimpiadas: Artículos cortos de Python para aprender lo necesario del lenguaje de cara a empezar a competir.
Para aprender C++
  • Tutorial Programiz: Tutorial online muy intuitivo y con bastantes ejemplos. Bueno para empezar.
  • A Tour of C++: Guía del creador del lenguaje para quien quiera profundizar más. Tened en cuenta que el foco de la OIFem es mucho en los algoritmos y la forma de resolver el problema, pero suele requerir un nivel no muy avanzado del lenguaje en cuestión. No obstante, puede ser útil para quien quiera un conocimiento más a fondo.
  • Sección de C++ de los manuales de las Olimpiadas: Artículos cortos de C++ para aprender lo necesario del lenguaje de cara a empezar a competir.

Materiales para aprender algoritmia

En cuanto estés a gusto programando en el lenguaje que vayas a usar, toca empezar a resolver problemas del estilo de la OIFem, para ir haciéndote a ellos. Estos se encuentran en jueces online, que son unas plataformas con problemas de varias dificultades que te corrigen la solución al momento. Para poder resolver estos problemas, te hacen falta una serie de conocimientos previos de algoritmia. Para obtener esos conocimientos, están muy bien los siguientes recursos:

  • CodeMonk: Serie de problemas en HackerEarth con tutoriales y partidos por tema. Los temas que explica son bastante similares a los que entran en la final de la OIFem, por lo que si superas todos los niveles ¡tendrás poco más por aprender!
  • Algorithms Illuminated: Serie de cursos online con su correspondiente colección de libros. Muy recomendable para aprender a analizar la corrección y eficiencia de los algoritmos.
  • Competitive Programming 4: La referencia por excelencia de programación competitiva. Acompaña al juez online de UVa, sugiriendo problemas que resolver para repasar el contenido de cada capítulo. Además, los autores han preparado un repositorio de GitHub con sus implementaciones de los algoritmos que explican.
  • An Introduction to the USA Computing Olympiad: libro de texto para empezar con programación competitiva. Muy detallado y recomendado, pero la materia que explica pronto se queda escasa. De todas formas, muy bueno para los primeros meses/primer año que aprendáis algoritmia.
  • Apuntes de algoritmia del curso de Skiena en Stony Brook: Resumen de los principales algoritmos usados en programación competitiva.
  • Sección de algoritmia de los manuales de las Olimpiadas: Explicaciones de los algoritmos con problemas de Olimpiadas variadas de otros años.
  • USACO Guide: Guía con los temas más frecuentes en Olimpiadas, con links a problemas de competiciones anteriores para practicar. Hace fácil medir tu progreso.
  • Competitive Programmer's Handbook: Guía abierta online sobre programación competitiva, con una serie de 200 problemas para repasar la implementación de estos algoritmos y estructuras.

Materiales para aprender matemáticas

En concursos de programación competitiva es probable que encuentres algún problema que se facilite sabiendo más sobre teoría de números, teoría de grafos o teoría de juego, por ejemplo. En el curso avanzado de la OIFem aprenderemos sobre estos temas, pero aquí tienes unos recursos extra:

  • Mathematics for Computer Science: libro online para aprender sobre la intersección entre estos dos campos. Especialmente recomendadas las secciones de grafos y teoría de números para bordar esos problemas.
  • Problems in Elementary Number Theory: libro online con numerosos problemas de teoría de números que puede ser útil para familiarizarse con este campo y ganar destreza resolviendo problemas algorítmicos de esta índole.
  • Project Euler: web con problemas en la intersección entre las matemáticas y la programación. Útil para hacer problemas que requieran matemáticas pero no necesariamente un gran dominio sobre un lenguaje de programación concreto.

Problemas de concurso

Además de los problemas de los concursos y entrenamientos organizados por la OIFem, existen numerosos jueces online. Para tener éxito en la OIFem recomendamos los siguientes:

  • Problemas de ediciones anteriores de la OIE.
  • ¡Acepta el reto!: Muchos problemas (y en español) a resolver online en C, C++ o Java. Contiene problemas de ediciones anteriores de concursos como AdaByron o Las 12 Uvas.
  • Jutge: Juez online con miles de problemas organizados y lecciones para que aprendas y practiques con ellos.
  • Codeforces: Tiene problemas de todos los niveles, organiza competiciones online con mucha frecuencia y ayuda a medir tu progreso a través del sistema de "rating".
  • oj.uz y DMOJ: Plataformas con problemas de ediciones pasadas de Olimpiadas de otros países y de la IOI. Son problemas bastante difíciles por regla general, así que es mejor probar con estos tras cierta experiencia con problemas de los otros links, especialmente de la OIE.
  • UVa Online Judge: Juez online muy conocido y que acompaña al libro citado en el párrafo anterior: CP4. Tiene varias carpetas con problemas organizados por categoría.
  • OmegaUp: Juez online utilizado en la Olimpiada Iberoamericana de Informática que contiene lecciones de C++, Python y algoritmia, además de problemas de olimpiadas de años anteriores.
  • HackerRank: Juez online utilizado durante la OIFem.