Olimpiada Potosina de Informática
La Olimpiada Potosina de Informática es una competencia a nivel estatal, en la cual pueden participar estudiantes de preparatoria y de secundaria. En esta competencia se resuelven problemas matemáticos y lógicos utilizando lenguajes de programación. Este es un evento que antecede y selecciona a los competidores que participarán en la Olimpiada Mexicana de Informática.
Esta competencia es coordinada por el Comité de la Olimpiada Potosina de Informática, en el estado de San Luis Potosí, México.
Por el momento no hemos comenzado con el proceso estatal rumbo a la OMI 2020.
Medios de contacto:
- En Facebook - Olimpiada Potosina de Informática OPI
- Correo electrónico.
10 pasos para comenzar en la OPI
Si quieres participar en la Olimpiada Potosina de Informática debes saber que estos son los 10 pasos principales que deberás hacer para comenzar:
- Estás inscrito(a) en una competencia, eso significa que quieres aprender y ganar, por lo tanto vas a entrenar mucho. Aquí entrenar se traduce como sentarse, leer y resolver muchos problemas.
- Necesitas crear una cuenta en https://omegaup.com
- Has saber tu nombre de usuario (el que escogiste en la plataforma) al comité del concurso y rellena todos los datos de tu perfil de omegaUp (https://omegaup.com/profile/)
- Lee la guía de omegaUp sobre cómo usar el sitio (https://blog.omegaup.com/category/omegaup/omegaup-101/)
- En la sección de Escuelas (parte superior del sitio principal) deberás encontrar un curso que en el nombre tiene OPI y el año del proceso actual (no disponible por ahora)
- Dentro del curso encontrarás dos tareas, una con Karel en el nombre (es para secundarias) la otra con C++ en el nombre (para prepas). Ve a la tarea correspondiente
- Si no tienes idea de cómo programar, porque eres nuevo (muy válido) ve al temario (https://olimpiada-potosina-de-informatica.github.io)
- Ahora en la sección correspondiente del temario (secundaria o prepa) busca el nivel en el que te ubicas según lo que sabes, si estás en ceros entonces en la sección elemental
- Dentro de la sección comienza con el primer tema (si vas de ceros entonces “Conocimiento del lenguaje” para C++, “Concepto de programación” para Karel), ahí abre cualquiera de los links que sugerimos como fuente de información. Personalmente sugiero utilizar la primera opción “En #iP”, pues los temas van ligados y guiados uno detrás del otro
- Has lo posible por asistir a los cursos presenciales
Recursos principales de estudio
La página oficial de la OMI
La página oficial de la OMI alberga además de datos sobre la competencia algunos recursos para estudio. Lo relevante a preparatorias se encuentra en la sección general de OMI. Lo relevante a secundarias se encuentra en la sección de material de estudio para OMIS.
También está el sitio oficial de la OMIPS en donde se pueden consultar exámenes pasados de la competencia nacional. Puede ser un buen recurso en niveles más avanzados del aprendizaje.
Karelotitlán
Karelotitlán es una plataforma que tiene una enorme y muy bien hecha colección de problemas de Karel el robot en la pestaña de “Problemas Karel”, desde los más sencillos en la sección Introducción para irse habituando con el lenguaje, los Básicos para ir poniendo en práctica los conceptos principales, Recursión para empezar con la siguiente etapa de dificultad, Recursión con parámetros que es un nivel más alto todavía y finalmente Búsquedas.
Al final está la sección de problemario que abarca una gran diversidad de problemas no clasificados para no tener un spoiler de las herramientas que se recomienda utilizar para resolver cada problema. Una guía más completa de como utilizar la plataforma de Karelotitlán se encuentra en este vínculo.
Esta plataforma resulta útil especialmente para los participantes en categoría de secundarias.
omegaUp
omegaUp es una plataforma especializada en el jueceo de problemas de programación. En ella se hospedan muy grandes competencias como la Olimpiada Mexicana de Informática y la Competencia Iberoamericana de Informática por Correspondencia. De la misma forma, muchos estados realizan sus exámenes y procesos estatales en esta plataforma.
En la OPI manejamos las Escuelas de omegaUp para llevar a cabo el seguimiento del avance de los chicos en la competencia estatal, a su vez el comité nacional (COMI) lo utiliza para llevar registro de los chicos preseleccionados a la competencia internacional (IOI).
En esta plataforma se encuentra una gran variedad de problemas de Karel el Robot (ideal para competidores de categoría de secundarias) y también una gran variedad de problemas que puedes resolver utilizando muchos lenguajes de programación, como C
, C++
, Java
, Python
entre otros, por lo que es doblemente útil.
Es requisito que los competidores tengan una cuenta en omegaUp, pues se utilizará a lo largo del proceso.
Include Poetry
Para aprender los conceptos, familiarizarse con el lenguaje y con la idea de programar está el sitio especialmente construido para este fin. En Include Poetry - Code están los recursos de los temas más relevantes para la OMI, OMIP y OMIS, por lo que el sitio es muy útil durante el proceso estatal en la OPI.
Es importante recordar que para secundarias únicamente se utiliza el lenguaje de Karel. Hay dos formas de programar a Karel, uno es con la sintaxis de Pascal y la otra es la de Java, ambas son válidas y utilizadas en la competencia, en #iP ya puedes encontrar material en ambas modalidades.
Para ver los temas de Karel, hay que abrir el menú del sitio en la esquina superior derecha, de ahí a la pestaña de “Karel”. Los temas idealmente deben ser vistos de izquierda a derecha, por lo que primero habría que ver los temas de la sección “Para empezar” (también recomendado de izquierda a derecha, es decir, primero “Karel el Robot” -> “Mundo de Karel” -> “Zumbadores” etc).
Para ver los temas pertinentes a la categoría de preparatoria, hay que dirigirse a la pestaña de C++ en el menú. Como ya se había mencionado se pueden abordar los problemas utilizando una gran diversidad de lenguajes, en #iP se enfocan en el lenguaje C++, que es además el más utilizado en esta competencia. Al igual que los temas de Karel, los temas de C++ deben ser vistos de izquierda a derecha.
Al final de cada artículo (en el pie del documento) hay un menú para ir al tema anterior o al tema siguiente. También puede valerse del buscador del sitio para dar seguimiento a algún concepto o función.
Todos los temas que están en el sitio deben ser de conocimiento de los competidores a la Olimpiada Méxicana de Informática tanto en la categoría de secundarias como de preparatoria, por lo tanto, idealmente el temario son cada uno de los temas que están en cada sección según corresponda.
Es importante remarcar que para la competencia nacional hacen falta algunos temas extras, pero para la competencia estatal están sobrados los contenidos que se encuentran en el sitio, en ambas categorías.
Libro: Problemas y Algoritmos de Luis E. Vargas Azcona
Un libro que ningún participante y aspirante a la Olimpiada Mexicana de Informática se puede perder, este libro se encuentra de forma gratuita en la página oficial de omegaup, lo puedes descargar en directo desde este vínculo.
Temario para secundarias
Independientemente de la modalidad de Karel (Pascal o Java) y cualquiera que sea la fuente de la información, los temas que recomiendo se revisen son los siguientes (se adjuntan un par de links a artículos que lo abarquen):
Elemental
- Concepto de programación - En #iP - En Karelotitlán
- Entorno de Karel - En #iP - En Karelotitlán
- Concepto de Zumbadores - En #iP
- Funciones lineales - En #iP - En Karelotitlán
- Avanzar
- Gira a la izquierda
- Coger un zumbador
- Dejar un zumbador
- Apagarse
- Instrucciones condicionales - En #iP - En Karelotitlán
- Declaración de la sentencia
- Condiciones disponibles
- Bloques de instrucciones
- Condiciones agrupadas
- Instrucciones repetitivas o cíclicas - En #iP - En Karelotitlán
- Declaración y manejo de funciones - En #iP - En Karelotitlán
- Función principal
- Funciones secundarias
A este nivel los competidores deberán ser capaces de resolver los problemas de la sección de “Introducción” de Karelotitlán, también la mayoría de los de la sección “Básico” de la misma página (aunque idealmente lograrán resolver ambas secciones por completo).
Nivel experimentado
Todas las herramientas principales se abarcan en el nivel anterior, lo que sigue es manejar conceptos cada vez más abstractos pero que siempre utilizan lo que es indispensable.
- Recursión - En #iP - En Karelotitlán
- Concepto de la recursión
- Concepto de pila de llamadas
- Declaración de recursión en Karel
En Karelotitlán está la sección de “Recursión” donde los conocimientos hasta aquí obtenidos deberán bastar para solucionar estos problemas.
Nivel avanzado
En el siguiente nivel de complejidad tenemos:
- Recursión con parámetros - En #iP - En Karelotitlán
- Concepto de variable
- Concepto de parámetros como variables de Karel
- Expresión sucede (sumar)
- Expresión precede (restar)
- Expresión para igualar a cero
- Expresión para distinguir de cero
Recursión con parámetros también tiene su propia sección en los problemas de Karelotitlán.
Nivel experto
Para dominar Karel solamente faltaría el tema:
- Búsquedas
- Concepto de búsqueda - En #iP
- Búsquedas en Karel
- Búsquedas con parámetros
- Corrección de caminos
También está disponible la sección de “Búsquedas” en los problemas de Karelotitlán.
Temario para preparatorias
Estos temas se proponen para la etapa estatal. Es importante mencionar que hay temas y enfoques que particularmente se abarcan de forma presencial durante los entrenamientos de la delegación. Estos no son los únicos pero sí los más deseables.
Elemental
- Trasfondo sobre el lenguaje
- Conocimiento del lenguaje - En #iP - En cplusplus.com.
- Concepto de programación - En #iP
- Idea del compilador - En #iP - En cplusplus.com.
- Librerías - En #iP - En cplusplus.com.
- Variables - En #iP - En cplusplus.com.
- Funciones - En #iP - En cplusplus.com.
- Operadores - En #iP - En cplusplus.com.
- Sentencias - En #iP - En cplusplus.com.
- Estructuras de datos
- Arreglos y matrices - En #iP - En cplusplus.com.
Como tema adicional se recomienda:
- Punteros - En #iP - En cplusplus.com.
A estas alturas el competidor deberá ser capaz de identificar tipos de variables, manejo de funciones y manejo de condiciones, con sus diversas aplicaciones propuestas en los recursos, así como manejar IDE’s. El
Hello world
dominado completamente. Arreglos y matrices se recorren con facilidad.
Nivel experimentado
- Estructuras de datos
- Creación de tipos
- Struct - En #iP - En cplusplus.com.
- Class - En #iP - En cplusplus.com.
- Contenedores
- STL - En #iP - En cplusplus.com.
- Creación de tipos
A estas alturas el competidor deberá ser capaz de identificar potenciales usos de una estructura de datos y manejarla con soltura. Sin problemas para manejar los índices de una matriz o agregar/eliminar datos de una estructura.
Nivel avanzado
- Recursión - En #iP - En cplusplus.com.
Para este nivel el competidor deberá ser capaz de entender la naturaleza de la recursión, cómo se declara y potenciales casos de aplicación. Factoriales sin problema con recursión.
Temario de matemáticas
Para tener un mejor entendimiento y desempeño de los temas es necesario tener una bases sólidas de matemáticas y estimular en todo lo posible el razonamiento lógico-matemático, este razonamiento es la base de la OMI y de la OMM, sin embargo ambas llevan un enfoque distinto.
Idealmente en la olimpiada de informática “mientras más matemáticas sepa un competidor mejor”, sin embargo lo que un curso normal de matemáticas lleva es suficiente en cada categoría siempre y cuando estos temas estén fuertes en los competidores.
Es decir, los contenidos que se ven en preparatoria son adecuados para la categoría de preparatoria, los temas vistos en secundaria son adecuados para la categoría de secundaria.
Una vez más, lo que más importa es el razonamiento que tenga el competidor y la agilidad así como la capacidad de abstracción que posea, pues esto determinará qué tan bien puede aplicar esos conocimientos en la programación (y resolución de problemas en general).
Sin embargo, si se requiere de un temario más explícito, podemos citar temas muy importantes como:
- Aritmética
- Sumas, restas, multiplicación, división
- Potencias y raíces
- Módulo o residuo
- Reforzar los conceptos de cada operación, no sólo la operación
- Propiedades básicas de los números
- Números positivos y negativos
- Números enteros y no enteros
- Concepto de infinito
- Números primos
- Concepto de divisor
- Concepto de múltiplo
- Áreas de figuras geométricas sencillas
- Cuadrado, rectángulo, triángulo
- Sistemas numéricos
- Principalmente base dos, seis, ocho y diez
- Conversión entre sistemas numéricos
- Números factoriales
- Álgebra
- Variable
- Funciones
- Solución de ecuaciones
- Permutación y combinación
El temario en sí puede parecer (y es) un tanto genérico o poco específico, la verdad es que cuanto más se pueda profundizar en cada tema mejor, sin embargo no son necesarios conocimientos demasiado complejos, lo que más ocupamos son los conceptos o ideas de cada tema, por ejemplo, la idea que podemos extraer de los números factoriales es el hecho de multiplicar todos los números enteros positivos menores al número factorial en cuestión e incluir este numero en la multiplicación, no es necesario profundizar demasiado en sus propiedades matemáticas (no a este nivel).