Un equipo cordobés quedó segundo de su categoría en una competencia internacional de programación
En una de las competencias de programación más exigentes del mundo, la ICPC, el equipo argentino de la Universidad Nacional de Córdoba alcanzó el segundo lugar entre las mejores universidades de América Latina
Rapid City parece el nombre de algún sitio imaginario, el escenario de un film de aventuras con automóviles y mucha velocidad. Sin embargo, es el nombre de una pequeña ciudad de Dakota del Sur en Estados Unidos, que este año fue sede de la International Collegiate Programming Contest (ICPC), una de las principales competencias de computación entre universidades en el mundo. La ICPC es organizado por la Association for Computing Machinery (ACM), la sociedad de computación científica más grande del planeta, con más de 100.000 miembros. Cada año, la ICPC se lleva a cabo en una ciudad diferente, y aunque a su etapa final llegan un puñado de universidades, el proceso de clasificación previo incluyó en 2016 a 40.266 participantes de 2736 instituciones de 102 países.
El 24 de mayo pasado se realizó la final del ICPC 2017 y compitieron 133 universidades. El podio de la ganadora se lo llevó la célebre ITMO de San Petesburgo, Rusia, y los 10 primeros lugares se repartieron entre instituciones de Europa del Este y de Asia. Pero la ICPC también divide al mundo en seis regiones (África y Medio Oriente, Asia, Europa, América Latina, América del Norte y Pacífico Sur) y reconoce un campeón de cada una de ellas. En el caso de América Latina, alcanzó el primer lugar la Universidad de La Habana, de Cuba, con el puesto 44 en la clasificación general. El segundo puesto fue para la Universidad Nacional de Córdoba (UNC), de la Argentina, representada por la Facultad de Matemática, Astronomía, Física y Computación (FAMAF), que se ubicó en el puesto 67 del listado general. Por la Argentina también competían la Universidad de Buenos Aires, que obtuvo el lugar 71, y la Universidad Nacional de Rosario, que quedó en el 118. En total, de la final del ICPC participaron 19 instituciones latinoamericanas.
Cinco horas para resolver problemas
Matías Hunicken y Martín Rodríguez, ambos de 22 años, son alumnos avanzados de la Licenciatura en Computación de la FAMAF. Luis Ferroni (23), además de estudiante de esta carrera, se encuentra finalizando la Licenciatura en Matemática en la misma Facultad. Ellos son los integrantes del equipo argentino que quedó mejor posicionado en el último ICPC.
Pero la historia comenzó a gestarse bastante tiempo antes de la competencia. El equipo de la FAMAF comenzó a entrenar en 2015 y, en septiembre de 2016, pasaron la etapa nacional de clasificación para la final, a la que le seguiría la prueba regional en Buenos Aires en noviembre pasado, para recién ahí conseguir el pase a Rapid City. En el camino hubo certámenes de entrenamiento en Neuquén y en Campinas (Brasil).
Además de los competidores, cada equipo tiene un entrenador. En su caso es Matías Tealdi, docente de la FAMAF. El rol del entrenador pasa, en la mayor parte de los equipos, por la representación de los mismos ante la organización de la competencia, aunque también participa en el entrenamiento de los competidores.
La final de la ICPC es una jornada de cinco horas en la que cada equipo integrado por tres miembros y una computadora recibe un conjunto de ocho a catorce problemas (los mismos para todos), aunque en general suelen ser doce. Los problemas deben ser resueltos mediante la formulación de un programa cuya salida (resultado) tiene que ser la misma que la oficialmente reconocida. Los programas son evaluados por un sistema informático de manera automática: los competidores escriben un programa (código) que se envía al servidor, que lo ejecuta una y otra vez cambiándole las entradas. Si en todos los casos el resultado obtenido es el correcto, entonces se considera que se resolvió el problema y solo si hay algo extraño en el código interviene una persona.
Los lenguajes de programación que se emplean son C, C++ y Java. En los últimos años también se incorporó Python, pero la organización no garantiza que con él se vayan a cumplir los requerimientos de tiempo ni de memoria que exige la resolución de los problemas.
El puntaje se mide por problemas resueltos, que no deben ser necesariamente los mismos y cada uno vale un punto. En caso de empate, cuando dos o más equipos tienen la misma cantidad de problemas resueltos, se define por los errores que hubo en la resolución de los problemas correctamente resueltos y por el tiempo que se tardó en ello. Esta última variable suele ser determinante en los puestos altos, ya que las cinco universidades mejor posicionadas en la competencia de este año resolvieron 10 problemas cada una y lo que desempató fueron los tiempos. FAMAF resolvió cuatro problemas y la Universidad de La Habana alcanzó los cinco. Una sola vez en la historia del ICPC se resolvieron los 12 problemas de la competencia: fue en 2015 y lo hizo un equipo ruso.
Los problemas que se presentan en el certamen son de muchos tipos, algunos restringidos a cuestiones teóricas o técnicas de los algoritmos y las matemáticas, y otros más ligados a lo lúdico. También hay problemas de geometría, optimización, procesamiento de textos y teoría de grafos. “La competencia viene a tratar de producir en los estudiantes un interés más allá de lo que ven en las materias [de las carreras] pero basado en ellas”, le dijo Ferroni a TSS.
Los integrantes de los equipos deben ser estudiantes de carreras de computación pero no pueden haber finalizado sus estudios de grado a noviembre del año anterior, fecha en la que se realiza el certamen regional de preselección. Además, no se puede participar más de dos veces de una final mundial.
La competencia está orientada a los aspectos científicos de la computación más que a su dimensión práctica. Esta es una de las razones por las cuales, en general, los ganadores suelen provenir de países con un gran desarrollo de la computación científica, como Rusia, y menos de lugares donde se privilegia la ingeniería en sistemas, como Estados Unidos.
En América Latina, “el país más fuerte históricamente ha sido Brasil, con universidades como Pernambuco, Campinas y San Pablo que son muy fuertes y tienen mucha tradición en programación competitiva”, explicó Hunicken. En la región, un país con tantas limitaciones como las que tiene Cuba ha podido alcanzar en este campo niveles de excelencia internacionales.
Gracias Demetrio
Al tratarse de equipos de tres personas que cuentan con una sola computadora, la distribución de las tareas es relevante. Dado que Hunicken y Rodríguez son los que mayor formación en computación poseen, son los encargados de escribir los programas, mientras que Ferroni, el matemático del grupo, tiene como rol principal no dejar de producir ideas para la resolución de los problemas.
Este tipo de reparto de tareas suele ser frecuente en los equipos que compiten: “El proceso de entrenar tanto tiempo juntos y de aprender a comunicarnos entre nosotros es una riqueza que excede la competencia”, explicó Ferroni. “A nosotros, en un comienzo, practicar nos servía para adquirir conocimientos pero también para aprender a formular y elaborar un diálogo preciso sobre qué es lo que yo quiero que otro haga en la computadora, qué es lo que vos estás haciendo y cómo te puedo ayudar a mejorarlo. Eso después se traduce en el ambiente científico o laboral”, agregó.
El equipo de la FAMAF posee un nombre muy particular: “Gracias Demetrio”, que surgió en un entrenamiento realizado en 2016 en la ciudad de Neuquén. Como no tenían nombre para el equipo trataron de recordar qué docente habían tenido en común los tres y surgió el de Demetrio Vilela, profesor e investigador de la FAMAF. Tiempo después estuvieron a punto de no poder competir por un problema de disponibilidad de un laboratorio desde donde trabajar y Vilela realizó las gestiones para solucionar el inconveniente. A partir de entonces, el equipo fue bautizado en agradecimiento al docente.
La participación de los equipos argentinos en la ICPC 2017 fue financiada por el Ministerio de Ciencia, Tecnología e Innovación Productiva de la Nación, que solventó pasajes y viáticos, mientras que el alojamiento estaba a cargo del organizador. Sin embargo, en varias instancias previas los integrantes de Gracias Demetrio tuvieron que pagarse los viajes de su propio bolsillo. Así ocurrió en el entrenamiento en Neuquén y en la competencia regional de Buenos Aires. Una vez clasificados para la etapa mundial, las gestiones del ex rector de la UNC, Francisco Tamarit, ante el actual rector, Hugo Juri, permitieron que la institución los apoyase económicamente para que pudieran asistir al entrenamiento en Campinas.
Uno de los secretos de los países cuyas universidades logran mejores resultados en este tipo de competencias es que la preparación en computación de sus estudiantes comienza mucho antes de entrar a la universidad, como en el caso de Rusia. En este sentido, Rodríguez destaca la importancia de la Olimpíada Argentina de Informática, competencia anual en la que los estudiantes del nivel secundario comienzan a probar y profundizar sus conocimientos de computación. “Es una linda forma de aprender a programar porque tiene un componente lúdico, se aprenden cuestiones de programación, de matemática y hasta inglés. La comunidad que se genera es muy linda y se hacen muchos amigos”, recuerda el integrante de Gracias Demetrio, el equipo que contribuyó a colocar a la computación argentina entre las mejores del mundo.