La programación como deporte: qué hacer para ganar competencias

¡Hola, Habr! Hoy quiero presentarles a Andrey Chumachenko, jefe de la comunidad de programación deportiva en Irkutsk y un participante galardonado en competencias de programación, incluido el ICPC y la Olimpiada Siberiana que lleva el nombre de I.V. Pottosin.



Hablamos con Andrey sobre la programación deportiva, la preparación para las competiciones y su trabajo como entrenador. Bajo el corte: consejos útiles y dañinos para los participantes de la competencia, preguntas de motivación, historias de la competencia, actitud hacia el Examen Estatal Unificado y la escuela de programación deportiva en Irkutsk.





Finales del Concurso de Programación de Equipos Estudiantiles de ICPC 2016 (fuente: ICPC Live)



Andrey Chumachenko - fundador y líder de la comunidad de programación en Irkutsk, estudiante de maestría en ISU en informática fundamental, ganador de las semifinales del campeonato mundial estudiantil en programación ICPC - 2018, 2019 (entre los países de la CEI), ganador de la Olimpiada de Siberia que lleva el nombre de I.V. Pottosina - 2018, 2019 (entre los países de la CEI), ganador de los cuartos de final del campeonato mundial estudiantil en programación (entre estudiantes de Siberia Oriental) - 2018, 2019, ganador de la Universiada de Altai en programación - 2019 (entre estudiantes y escolares de Rusia), finalista del campeonato de programación BSUIR - 2018, 2019.Andrei



llamó la atención de nuestros radares cuando realizó un curso intensivo gratuito sobre problemas de programación deportiva en Irkutsk Boiling Point... Dado que el tema es candente, decidimos averiguar todo en detalle.





Con que se come



- ¿Qué es la "programación deportiva" y qué tareas están resolviendo allí ahora?



- Para mí, esto es principalmente una competencia, una preparación para ellos y, por supuesto, una comunidad especial de personas.



Después de todo, programar para alguien es como un biatlón para Shipulin: deporte real, pasión, fuego.


En cuanto a las tareas, todo es sencillo: toman las que se pueden resolver en cinco horas, fundamentalmente algorítmicas, matemáticas y tareas de implementación.





2016, los estudiantes de UrFU acaban de ganar el campeonato internacional de programación Challenge 24 en Budapest. Luego, siete equipos de Rusia entraron en el top ten (fuente: codeforces.com)



- ¿Cuál es el lenguaje más popular en la programación deportiva hoy en día? Mi amigo de la Universidad Politécnica de Moscú en Informática Aplicada (janka2330) estudió programación deportiva como asignatura y aprobó la prueba. Dice que fue genial. Compitieron con otros estudiantes y enviaron tareas a spoj.pl (spoj.com) y escribieron en Ruby on Rails.



- El idioma es muy competitivo. La mayoría de las veces me encuentro con C ++, Java, Python también son populares. Otro "novato", Kotlin, ha estado ganando impulso últimamente. Ruby on Rails, o simplemente Ruby, rara vez se usa, pero en algunas competiciones figuraban en la lista de idiomas admitidos. Yo mismo siempre escribo en C ++, al igual que mis alumnos. Me parece más conveniente cuando necesitas codificar algo rápidamente.





Idiomas más utilizados en concursos





Cómo prepararse para ganar



- Cuéntanos sobre la preparación para la competición. Probablemente tengas tus secretos.



- Durante varios años que pasé en esta área, me di cuenta de que cada uno tiene su propia forma de entrenamiento. En cuanto a mí, esto es práctica, resolviendo problemas durante todo el año. Se puede establecer una analogía con aprender a conducir: cuantas más horas patinaba, más experiencia ganaba. Entonces viajamos con los estudiantes. Hay infracciones de las reglas, giros peligrosos, exceso de velocidad, pero al final llegamos a la meta preciada.



Para desarrollar problemas, utilizamos codeforces.com , donde se realizan regularmente rondas en línea, durante las cuales es necesario resolver problemas que aportan puntos a la calificación del participante.


Luego, hacemos un seguimiento del progreso, comparamos los resultados y configuramos una sesión informativa para tener más éxito en la siguiente ronda.





Archivo de problemas de la Olimpiada codeforces.com



También miramos acm.timus.ru - el archivo más grande de problemas de programación en Rusia con un sistema de verificación automático. Han aparecido muchas cosas en YouTube ahora, pero no las usamos de forma continua. Si está interesado, puedo asesorar a un programador polaco genial con el sobrenombre de Errichto, tiene su propio canal , allí puedes encontrar un montón de cosas útiles.





El segundo canal del programador polaco bajo el sobrenombre de Errichto en YouTube



Bueno, y libros, por supuesto, como sin ellos: "El arte de programar" de Donald Knuth, por ejemplo. O “Problemas de programación de la Olimpiada. Guía de preparación del concurso "por Steven Skiena y Miguel Revilla.


Trucos de vida para el participante



- Ok, ¿qué puede impedirte ganar la Olimpiada de programación deportiva?



- Probablemente el enemigo de todos los estudiantes sea la pereza (es broma). Pero en serio, debe concentrarse en las tareas y apagar brevemente la parte del cerebro que es responsable de todo tipo de asuntos diarios.



También es muy perjudicial entrenar la noche anterior a la competición, sobre todo si no te has preparado durante un año.


Al contrario, aconsejaría tomarse un respiro de una semana y no decidir nada. Si ha trabajado bien durante mucho tiempo, el cerebro durante el resto pondrá las cosas en orden en los archivos acumulados.



En la propia competición, es un gran error no escuchar tus órdenes y adelantarte a la locomotora. Esto amenaza con multas y problemas similares. Bueno, los programadores perfeccionistas corren el riesgo de perder el tiempo con una tarea en busca de la solución perfecta y el código limpio. Esto no significa que deba hacer todo de todos modos, pero lo principal es no exagerar.



- ¿Qué necesitas hacer para ganar?



- De acuerdo con mis sentimientos, para un gran éxito debes enojarte un poco, pero al comienzo de tu carrera, toma una actitud tranquila, además de ceñirte al plan.



Cuando convertirse en programador



- Cuéntanos tu trayectoria en la programación deportiva.



- Creo que comencé a sumergirme en este tema bastante tarde: fue solo en los grados superiores de la escuela que comencé seriamente a estudiar C ++ y a participar en las Olimpiadas celebradas por las universidades de Irkutsk. Luego, habiendo ya ingresado a la ISU, conocí a un maestro que apoyaba el movimiento de programación deportiva y comencé a estudiar con él. Entonces, poco a poco, la programación deportiva para mí dejó de ser solo un hobby, me lo tomé en serio, comencé a participar activamente en competencias y me convertí en entrenador.





Andrei examina uno de los problemas de las Olimpiadas en el campo de entrenamiento de agosto en Irkutsk



. ¿Crees que es demasiado tarde para comenzar en la escuela secundaria? ¿Realmente se puede comparar la programación con un deporte profesional, en el que los niños son enviados casi desde los tres años?



- Por supuesto, no es suficiente para poner a un niño en tres años para aprender algoritmos, aunque si de repente lo encuentra interesante, entonces bienvenido. Incluso conozco algunos tutoriales de programación para preescolares.



Pero, además de los estudiantes de secundaria, los estudiantes y los programadores ya consumados, en las competiciones conocí a chicos de quinto o sexto grado, que no son inferiores en conocimientos a los estudiantes, e incluso comprenden todo sobre la marcha.


Por tanto, cuanto antes mejor.



El examen es un tema delicado



- Desde que empezamos a hablar de los escolares, ¿cómo se siente con respecto al Examen Estatal Unificado y estándares similares con los que se mide el conocimiento? Aún así, la programación es una especialidad creativa, aunque puramente técnica.



- Definitivamente estoy a favor del hecho de que las asignaturas en las escuelas, y especialmente en las universidades, eran opcionales, y una persona podía elegir entre toda la variedad que le gustaba. Es mucho más agradable estudiar de esta manera y el resultado es obvio: no se puede comparar cuando se hace todo bajo un palo.



En cuanto al Examen del Estado Unificado, este es un tema delicado. Aquí puedo contar la historia de otro artículo.



El USE en realidad contiene bastantes tareas interesantes y útiles cuando se trata del examen de matemáticas o informática. Sí, no es perfecto, hay fallas, experimentos, no hay un enfoque individual, pero de lo contrario no se puede apreciar el conocimiento masivo de los graduados. El Examen de Estado Unificado tiene fallas, pero todavía no se ha inventado nada mejor.



Las admisiones a las universidades también están diseñadas principalmente por profesores, pero hay menos objetividad y estándares, todo está controlado por un pequeño grupo de personas. Con este enfoque, ni siquiera quiero hablar de corrupción, sobornos y el llenado de personas no deseadas.



Ahora puedes ingresar a universidades en base a los resultados de las Olimpiadas. Y eso es genial para los mejores estudiantes, por un 10%. ¿Qué pasa con el resto? Solo el examen.


Sí, hay olimpíadas simples de tercer nivel de la lista, pero a menudo son aún más incómodas o contienen problemas del examen.



Otra cosa es la actitud y presentación del examen. Toda esa histeria que atrapan los padres, la sociedad, los profesores, sobre todo. Es demasiado. Los mismos profesores suelen ser completamente incompetentes a la hora de preparar a los escolares para el examen. No se trata de la dificultad del examen, no tiene nada de sobrenatural. El punto está en el nivel débil de los maestros, sus salarios, la actitud del estado hacia ellos. Los escolares también sufren a lo largo de la cadena.



Acerca de los estándares en general; por supuesto, la educación debería avanzar hacia la flexibilidad. Como dije, sería bueno que los escolares eligieran ellos mismos los temas de interés. El USO no está nada mal en este sentido: puedes cursarlo en cualquier número de asignaturas. Pero, idealmente, uno debería aprender a mirar al estudiante como un individuo.



- ¿No ve un estereotipo similar en la evaluación de conocimientos en las olimpiadas de programación? ¿O es todo diferente allí?



- La esencia de los problemas de las Olimpíadas reside en su inmensa falta de estandarización. Sí, de vez en cuando te encuentras con las tareas del "acordeón de botones". Hay tareas para técnicas y algoritmos fundamentales estándar. Pero lo más importante en las olimpiadas es poder aplicar estas técnicas, combinarlas, llegar al punto de usarlas y ver la idea matemática de una solución. Esta es definitivamente una habilidad única que va más allá de todas las plantillas.



¿Por qué los escolares aprenden programación deportiva?



- ¿Cuál es la motivación de estudiantes y escolares para unirse a las comunidades de programación deportiva y participar en las Olimpiadas? ¿Qué les puede enseñar la programación deportiva, qué habilidades les ayuda a desarrollar?



- La motivación es completamente diferente: alguien vino a aprender un lenguaje de programación y conseguir más práctica y conocimiento algorítmico, alguien así quiso probarse a sí mismo y su fuerza (la participación en las Olimpiadas es otra prueba). Algunos recopilan carteras para la admisión a la universidad o para trabajos futuros, quieren ser notados por las empresas de TI durante la competencia. Hay quienes vienen por el bien de la comunicación, para apoyar y desarrollar la comunidad.



. , , .


Y, por supuesto, el trabajo en equipo, aquí todo es como un adulto: para llevar tu proyecto a la práctica, necesitas poder trabajar de manera efectiva en equipo. Bueno, el desarrollo dentro de la programación (conocimiento del lenguaje, algoritmos) no se ha cancelado.



- ¿Qué estás haciendo dentro de tu comunidad de programación deportiva?



- Hoy entreno alumnos, y vamos a olimpiadas y competencias en programación deportiva. Entre mis estudiantes se encuentran los ganadores de los cuartos de final del campeonato mundial estudiantil en programación (entre estudiantes de Siberia Oriental) 2019, los ganadores del sitio siberiano de las semifinales del campeonato mundial estudiantil en programación ICPC 2019, ganadores del premio de la Universiada de Altai en programación-2019, finalistas de la Olimpiada Pottosin 2018 y 2019.



Hay planes para crear una escuela de programación deportiva en toda regla donde será posible estudiar con niños de quinto grado. Ojalá lo lancemos en octubre.



También trato de entablar relaciones con empresas de TI para conseguir oportunidades laborales para mis alumnos.



Además, estamos organizando concursos de programación, y no hace mucho realizamos un intensivo que duró 11 días. Casi todos los días había una competencia de cinco horas, seguida de análisis de problemas, el llamado trabajo sobre errores y conferencias (una pequeña teoría sobre algoritmos). Mi amigo de MEPhI y yo actuamos como entrenadores. Los participantes del intensivo fueron escolares del centro de entrenamiento ENTER Olympiad de Ulan-Ude (República de Buriatia) y estudiantes de Irkutsk que participan regularmente en las Olimpíadas de programación deportiva.











— . , , . : , , . — — , , . : ? — , , …



- Creo que esta bien. Sí, necesita trabajar rápido, pero al mismo tiempo con claridad, porque de lo contrario el sistema no aceptará la tarea. También existen sanciones por una respuesta incorrecta que nadie quiere recibir. Debe estar atento a los detalles, por lo que el nivel de comprensión del problema se bombea perfectamente entre las Olimpiadas.



La limpieza del código a veces se ve afectada, ya que el ciclo de mantenimiento es de solo cinco horas, pero cuanta más experiencia tenga un participante, más de cerca seguirá el código.



- Comparta historias interesantes de la competencia.



- Todas nuestras historias divertidas suelen estar relacionadas con tareas. Por ejemplo, una vez luché con una solución durante mucho tiempo, porque no me di cuenta de que la frase sin solución necesitaba mostrarse con las letras reorganizadas en un solo lugar: sin solución.



O, en los cuartos de final del Campeonato del Mundo del año pasado, enviamos el problema al sistema para su verificación dos segundos antes del final de la competencia, y al final el problema se resolvió con éxito. Tales cosas siempre ocurren en emociones que solo agregan emoción.






Un minuto de publicidad sobre nuestro acelerador de proyectos de IA



Hemos comenzado a aceptar solicitudes para Archipelago 20.35 , un programa educativo intensivo para quienes realizan proyectos utilizando métodos de análisis de datos y aprendizaje automático. El proyecto puede ser comercial, social, científico o escribir su versión. A las 20:35 Archipiélago, habrá una gran oportunidad de mejorar usted y su proyecto, formar un equipo, obtener una subvención, encontrar un patrocinador, ya que los fondos de desarrollo y las empresas que están implementando la IA han expresado interés en los desarrollos.



El programa de formación de selección y pre-aceleración es gratuito. Y si escribes sobre tu proyecto en Habré, ¡obtienes un plus en la calificación de calificación! Te contamos los proyectos más interesantes en nuestro blog.






All Articles