Un poco de historia
Existen muchos concursos de programación, el más famoso es International Collegiate Programming Contest dirigido a estudiantes universitarios. España participa en el regional Southwestern Europe Regional Contest, que engloba también a Portugal, Francia e Italia, entre otros países.
Otro concurso de programación es el International Olympiad in Informatic, una iniciativa similar a ICPC pero para alumnado de ESO, Bachillerato y Ciclos Medios de FP impulsada por la Unesco. La eliminatoria española es la Olimpiada Informática Española, y es organizada anualmente por la Universidad Politécnica de Cataluña.
Lo más parecido para FP Superior son las Olimpiadas de Formación Profesional, más conocidas como Worlds Skills
Por esta razón un grupo de profesores de la comunidad de Madrid que habían participado en concurso de programación pensaron en la idea de crear un concurso de programación para Formación Profesional, con la intención de dar a conocer los ciclos de informática y quitarles esa etiqueta de que son para los perores alumnos.
La primera edición de ProgramaMe se realizó en Marzo de 2011, en el I.E.S. Antonio de Nebrija de Móstoles, y se abrió la participación a cualquier alumno de FP Superior de la Comunidad de Madrid. En el curso 2011-2012 ProgramaMe se expandió al resto de España, organizándose en 7 regiones distintas.
Reglamento
Es muy sencillo, podemos resumirlo en:
- La inscripción se realiza por equipos, uno por centro con un máximo de tres componentes. Hay 16 plazas para Madrid
- Los miembros de los equipos elegirán un nombre
- Cada equipo puede tener un alumno suplente (avisando 24h antes)
- Se propondrán entre ocho y doce problemas, cada uno con un color asociado para realizarlo en 4 horas.
- Los participantes podrán utilizar como material de consulta un dossier realizado por el propio equipo
- No se permiten móviles, portátiles, Internet etc.
- Cada equipo tendrá un único PC, por lo que es indispensable la máxima de John Johnson "First solve the problem; then, write the code"
El juez automático calificará con uno de los siguientes veredictos:
- ACCEPTED La solución ha sido considerada correcta y se acepta.
- RUN ERROR La solución ha sufrido algún problema durante su ejecución y se ha anulado
- WRONG ANSWER La solución ha generado una salida inválida con respecto a la especificación del problema
- TIME LIMIT La solución se ha mantenido durante demasiado tiempo en ejecución y ha sido abortada
- COMPILATION ERROR La solución enviada no ha compilado.
En caso de empate, ganará el equipo que menos tiempo acumulado haya necesitado para sus envíos correctos
Para calcular el tiempo acumulado por cada equipo se suma el tiempo transcurrido desde el inicio del concurso hasta el instante de cada envío aceptado, por cada envío que haya sido rechazado se añade una penalización extra de 20 minutos, esta penalización sólo se acumulará en los problemas que hayan sido resueltos finalmente.
Desarrollo del concurso
El juez automático utilizado es DOMjudge. En la página web puedes familiarizarte con su interfaz en la "live demo" proporcionada por los creadores del software.
Una vez que cada equipo realice el envío de una solución, se ve rápidamente el veredicto dado por el juez automático. Los jueces humanos estarán durante todo el concurso velando por la corrección de los veredictos de ese juez automático. En ningún caso se deberá pedir ayuda a los voluntarios que vigilen el correcto transcurso del concurso en las aulas.
Estrategias
Una vez seleccionados los problemas fáciles, cada miembro resolverá el problema, lo plasmará en pseudocódigo.
Como solo hay un PC por equipo, mientras uno está codificando, otro comprueba que no se comenten errores y le ayuda a resolver problemas que surjan, y el tercero puede ir preparando casos de prueba.
Es muy importante leer detenidamente todos los problemas, algunos tienen una dificultad técnica, otros son fáciles de programar pero necesitan una reflexión.
Lugar y fechas
Las Inscripciones de los equipos se realizarán en el mes de Enero.
El concurso regional será a mediados de Marzo de 2014 en el I.E.S. Lago de Madrid (ganador nacional del 2012/13)
Finalmente, los ganadores de los concursos regionales se enfrentarán en el concurso nacional que se realizará en el mes de Junio.
¿Porqué participar?
Es muy interesante participar, piensa que el concurso supondrá un reto para probar tus habilidades aprendidas y un cambio en la forma que has estado aprendiendo programación, lo que incrementa tu motivación.
Además es una competición colaborativa, no sólo contra equipos de otros centros, sino contra el propio juez automático, una batalla hombre máquina al más puro estilo Matrix.
Por último, programaMe es cada vez más conocido en las empresas de Madrid. muchos alumnos que han quedado bien clasificados en los concursos regionales este hecho como carta de presentación en sus currículums y tiene un impacto en la elección de los alumnos por parte de las empresas en la FCT.
En el concurso pasado se entregaron los siguientes premios:
- Primer premio: Para cada uno de los tres miembros del equipo que quede en primer lugar, un Apple iPad mini 16 GB WiFi. Premio patrocinado por Coritel.
- Segundo premio: Para cada uno de los tres miembros del equipo que quede en segundo lugar, un Kindle Paperwhite WIFI. Premio patrocinado por Coritel.
- Tercer premio: Para cada uno de los tres miembros del equipo que quede en tercer lugar, una Memoria USB de 64 GiB. Premio patrocinado por el Master de Videojuegos de la Universidad Complutense de Madrid.
- Premio especial: Para cada uno de los tres miembros del equipo que resuelva el primer problema, un premio sorpresa. Premio patrocinado por El Corte Inglés.
Para practicar
El concurso ofrece muchos recursos en su página web y las redes sociales para tener más información, practicar con problemas de otros años y estar informado de las últimas novedades:
- Twitter: @programame
Histórico de problemas
- Cuadernillo de problemas de la sesión de prueba on-line: cuadernillo de 6 problemas de la primera edición.
Existen multitud de recursos gratuitos en los que puedes practicar contra jueces automáticos, aquí hay hay una lista de los más completos:
- UVa Online Judge. Una de las mejores colecciones de problemas de la Red. Contiene una gran cantidad de problemas cubriendo diferentes categorías acompañados de un juez de reconocida estabilidad. Periódicamente organiza concursos on-line para todo el que quiera participar.
- ACM-ICPC Live Archive. Página con casi todos los problemas aparecidos en los concursos de programación oficiales de la ACM. El mejor lugar para practicar concursos de alto nivel.
- USA Computing Olympiad (USACO). Organización informática preuniversitaria de Estados Unidos cuyo objetivo es la mejora de las habilidades de programación tanto de alumnos como de profesores. Ofrece una sección entrenamiento.
- Sphere Online Judge (SPOJ). Alrededor de 13000 problemas de gran calidad (y dificultad), indicado para grandes retos.
- PKU Judge Online. Juez de la Universidad de Pekín.
- Timus Online Judge. Juez de la Ural State University. La mayor colección de problemas de Rusia sacados de diferentes concursos. También organiza concursos on-line.
- TJU ACM-ICPC Online Judge. Gran colección de problemas y de concursos on-line.
- Fuzhou University Online Judge. Juez de la Universidad de Fuzhou (China). Posee una interesante colección de problemas y organiza concursos on-line. Algunas partes de la web están únicamente en chino.
- Saratov State University :: Online Contester. Pequeña colección de problemas y algunos concursos on-line.
- CodeChef. Juez desarrollado por Directi, una empresa de software india radicada en Bombay.
- Jutge.org. Desarrollado en la Universidad Politécnica de Cataluña, contiene más de 800 ejercicios de dificultad baja o mediana.