"Pascal y mucho menos Basic definitivamente no son necesarios": una entrevista con entrenadores en programación deportiva

Este año, VKontakte, con el apoyo de Promsvyazbank, lanzó el programa de becas VK Fellowship para profesores de informática. Juntos, seleccionamos a 15 maestros de regiones rusas: creadores de cursos de programación con derechos de autor, maestros de escuela, directores de centros de educación continua y capacitadores que preparan a los estudiantes para las olimpiadas de programación internacional. Recibieron becas de VKontakte y Promsvyazbank y ahora participan en nuestras escuelas de campo.



Todos los maestros tienen una amplia experiencia y son los autores de sus propios cursos sobre los conceptos básicos de programación. En esta publicación, les pedimos a tres personas que respondieran nuestras preguntas sobre la enseñanza de programación y ciencias de la computación en general.

- Primero, vamos a conocernos.

Inessa Shuykova: Trabajo como directora y profesora de informática en el Centro GOAOU para la "Estrategia" de Apoyo de Niños Dotados de la ciudad de Lipetsk. Enseño C ++ y Pascal en los grados 6-11.
Peter Kalinin: Vivo y trabajo en Nizhny Novgorod. Doy clases en el Liceo No. 40, sobre la base de Lobachevsky UNN, así como remotamente, sin referencia a una institución educativa en particular. Principalmente en Python, Pascal, C ++. Con algunos niños estudio en Java, C # y lenguajes más exóticos. La mayoría de ellos van a los grados 9-11, pero algunos ya han estado en el grado 4.
Sergey Belyaev: Vivo en Krasnoyarsk. Trabajo como profesor de educación adicional en el Palacio Regional de Pioneros de Krasnoyarsk. Hay muchos lenguajes en el trabajo: C ++, Pascal, Python, Basic, Java Script, Perl. La edad de los estudiantes es diferente, generalmente de 12 a 18 años.

Sobre la programación de enseñanza


- ¿Cómo organizar la programación docente en las escuelas?

Inessa: Cada estudiante debe recibir habilidades básicas para usar productos de software de uso general, enseñarle higiene digital, trabajo seguro en Internet y los conceptos básicos de programación. Para niños con intereses y habilidades relevantes, agregue algoritmos y estructuras de datos. Los cursos de programación avanzada deben realizarse en forma de cursos especiales. Cada estudiante en lecciones de informática debe incluirse en el equipo del proyecto para la implementación del proyecto de TI de la escuela.

Peter: No me considero un especialista precisamente en la educación masiva de escolares en escuelas secundarias, pero creo que la capacitación debe adaptarse a las necesidades de los escolares. Los estudiantes interesados ​​deben recibir un conocimiento profundo, el resto tiene suficientes ideas superficiales sobre programación.

Sergey: El programa general en el marco de la asignatura de informática debería ser el mismo que ahora: programación superficial y con fines educativos. Un curso más significativo es para clases especializadas con un sesgo físico y matemático. La formación profesional es razonable solo en el marco de la educación superior.

- Los principales problemas de la programación de la enseñanza en Rusia? ¿Cómo resolverlos?

Inessa: En el marco de la educación general, a la informática se le asigna un pequeño número de horas (si no se trata de clases especializadas), no es el tema principal al que se le prestará una atención sustancial. De ahí la consecuencia: los profesores de ciencias de la computación no siempre son profesionales en esta materia, y para muchos niños en edad escolar esta materia está asociada con un proceso que no es tan importante y que el sistema impone.

La solución podría ser la introducción de un estado de derecho, que permita tener en cuenta la educación adicional como disciplina de la educación general. Los niños están felices de asistir a cursos de programación en centros de educación continua. La capacidad de comenzar a dominar un curso como resultado de un programa de educación general llamará la atención de aún más estudiantes para dominar las habilidades de programación.

Peter: Si no tienes en cuenta los diferentes problemas burocráticos, entonces, probablemente, lo principal es el conocimiento muy desactualizado (o incluso la ausencia del mismo) de la mayoría de los maestros.

Sergey: Creo que los problemas de la enseñanza de la informática se combinan con los problemas generales de la educación en Rusia, con el hecho de que la profesión docente no es prestigiosa. Y un maestro que enseña programación no es la excepción.

- ¿Vale la pena intentar programar antes de la escuela? ¿De qué forma vale la pena implementar?

Inessa: Antes de la escuela, es necesario desarrollar habilidades matemáticas generales, un interés en la lectura, una motivación para la cognición como tal. Y considero que es inapropiado darles a los niños algo para lo que no están psicológicamente preparados.

Peter: No tengo una respuesta clara, pero creo que el desarrollo de juegos y tareas de una dirección de programador tiene derecho a existir. Por ejemplo, le compré a mi hija de tres años el juego "Taxi" de Mosigra.

Sergey: Creo que es muy temprano para estudiar programación antes de la escuela. Sería bueno antes de eso aprender primero a leer, escribir y contar.

- Existe la opinión común de que programar hoy es una habilidad tan necesaria como una licencia de conducir y el inglés. Que dices

Inessa: Si, lo es! Incluso si no va a programar en el trabajo, comprender cómo se organizan los programas y los sistemas de información le permitirá sentirse seguro en el futuro entorno digital.

Peter: Muy en desacuerdo. Primero, el 90% de las personas necesitan derechos y lenguaje (este último, en menor medida) no solo para el trabajo, sino también para la vida personal. La programación fuera del trabajo necesita un número relativamente pequeño de personas, y en la gran mayoría de los casos, solo como un pasatiempo. En el trabajo, la programación tampoco es necesaria para todos, en esto no difiere mucho de la licencia de conducir o el idioma.

Sergey: Por supuesto que no, de lo contrario, muchos se habrían sentido incómodos sin la habilidad necesaria. La programación es una especialidad bastante limitada, que solo unos pocos dominan. La gente aprende inglés con más frecuencia y conduce un automóvil.

Sobre las características de aprender lenguajes de programación


- ¿Cuáles son las tareas de programación más difíciles e interesantes?

Inessa: Creo que depende principalmente de la idea de la tarea, y no del tema. En otras palabras, a partir de cuán elegante y hermosa es la idea subyacente a la tarea, cuánto más tarde se puede admirar lo inusual de la tarea o la ligereza de la idea que fue la base y se requirió para ir por el camino difícil.

Peter: Lo más interesante son las tareas difíciles que requieren una mirada inusual a los algoritmos estándar o la teoría estándar. Por ejemplo, la tarea "K" es de aquí.

Sergey : Se cree que los temas más difíciles son la recursividad, las estructuras de datos (especialmente los árboles de segmentos y un árbol cartesiano) y la teoría de grafos. Por supuesto, en cualquier tema puede haber tareas simples. Como en cualquier tema simple de la forma "matemática simple", no puede haber matemática simple en absoluto, aunque sin programación. Por lo tanto, todo esto es bastante subjetivo, no se puede argumentar que todas las tareas de uno de los temas son necesariamente más complicadas que cualquier otra. Para mí personalmente, los problemas de la teoría de juegos parecen ser los más difíciles, en particular, aquellos que usan el método minimax.

- ¿Es posible comenzar a aprender C ++, evitando Pascal y Basic?

Inessa: Sí, definitivamente posible. La confirmación es mi experiencia con niños.

Peter: Específicamente en C ++, es posible, pero no lo recomiendo. Recomendaría reemplazar C ++ con Python. Pascal y aún más Basic definitivamente no son necesarios.

Sergey: por supuesto. He estado haciendo esto durante 15 años. Si el objetivo principal es presentar a los estudiantes los elementos de programación en poco tiempo y no enseñar a propósito la programación para entrenar, entonces Python es mejor.

- ¿En qué orden necesitas comenzar a aprender C ++ para no perderte en la naturaleza?

Inessa: Te aconsejo que comiences de inmediato resolviendo problemas simples. Un ejemplo de un buen curso es "Introducción a la programación en C ++" de Mikhail Gustakashin.

Peter: Creo que en cualquier idioma primero debes aprender las cosas básicas que te permiten escribir programas simples (variables, if, bucles, matrices, cadenas, números reales). Con ellos ya es posible resolver casi cualquier problema de Olimpiada. El resto, según sea necesario.

Sergey: Personalmente, voy al lenguaje en sí solo después de cuatro lecciones destinadas a familiarizarme con la programación utilizando ejemplos de algoritmos fascinantes, como juegos y videos de la campaña anual "Code Hour". Luego les presento a los chicos los pros y los contras de la profesión de programador, incluidos mis muchos años de experiencia. De hecho, el lenguaje de programación elegido para el estudio no es tan fundamental; el orden de los temas siempre será aproximadamente el mismo. El conocimiento de la sintaxis de un idioma no es lo más importante; cualquier humanista puede dominarlo. Lo más importante es la capacidad de algoritmo y escribir código claro y libre de errores.

- ¿Cómo escribir código C ++ claro?

Inessa: Para los estudiantes, el nombre correcto de las variables, el diseño del estilo es importante. El código claro es un código estructurado que otras personas de su equipo pueden leer.

Peter: Como en cualquier idioma, dividiendo el código en entidades razonables, nombrando variables, etc. Pero a nivel escolar, casi nada de esto es necesario, lo máximo es poner una sangría adecuada.

Sergey : Esto es especialmente importante en el marco de un proyecto en el que está trabajando un grupo de programadores. A veces hay que entender los programas de otras personas, y para esto se deben observar algunos acuerdos. Pero en cualquier caso, hay principios generales que es poco probable que tengan sentido en términos de un tema. Destacaré solo unos pocos:

  • estructura del programa: las unidades lógicas deben asignarse en bloques separados (sangrías en el texto de programas, funciones, bibliotecas);
  • los nombres de variables y funciones deben hablar por sí mismos lo que contienen;
  • definitivamente debe usar comentarios al describir bloques de algoritmos, cada función debe contener una especificación completa de parámetros de entrada y valores de retorno.

- ¿Cómo te sientes al usar Boost con fines educativos?

Inessa: no lo uso en el trabajo

Peter: En principio, positivamente, pero esto no es necesario en la escuela.

Sergey: En la programación real, no tengo nada en contra de esta extensión. Pero enseño a los niños programación de olimpiadas, y allí los estudiantes no podrán usarla, porque Boost no está incluido en el conjunto estándar de bibliotecas de ninguno de los compiladores estándar de C ++. Por lo tanto, debe contentarse con lo que es, por ejemplo, STL (Biblioteca de plantillas estándar).

- ¿Tiene una receta exitosa para preparar a los estudiantes para programar olimpiadas?

Inessa: Teoría de la informática más los fundamentos de las matemáticas discretas y los métodos matemáticos de procesamiento de datos. Y también entrenamiento constante, integrado en el sistema.

Peter: teoría básica, resolución de problemas, comprensión del formato de la Olimpiada, pruebas precisas.

Sergey: Creo que no solo la experiencia, el tiempo, sino también el alma deben invertirse en la enseñanza de la programación de los escolares. Solo el profesor interesado en la asignatura puede interesar a los alumnos. Al enseñar programación, es importante seleccionar un grupo de estudiantes talentosos, y dentro de una escuela secundaria es muy difícil hacerlo. Por lo tanto, es más eficiente trabajar en instituciones de educación adicional, donde es posible trabajar con niños de varias escuelas.

- ¿Hay algo en su programa que lo haga único?

Inessa: Un momento clave en la técnica misma. Dirijo grupos de niños formados por nivel de entrenamiento y habilidad, no por edad. La educación no es solo un modelo maestro-alumno, sino también un modelo alumno-alumno. Los ancianos ayudan a los más jóvenes: analizan los problemas resueltos, verifican el estilo del código para escribir programas y ayudan al maestro. En el aula, se mantiene el ambiente de la comunidad de los niños: un estado de ánimo para el éxito, la promoción y los resultados. Hacemos eventos de naturaleza olímpica, entrenamientos externos juntos, juntos, con alegría.

Peter: En primer lugar, las clases se imparten completamente en línea, es posible estudiar de forma remota desde cualquier parte del mundo. En segundo lugar, la falta de un plan de calendario, cada estudiante se dedica a su propio ritmo. En tercer lugar, atención a probar y encontrar errores en el código. Cuarto, una licencia gratuita para los materiales que desarrollo.

Sergey: En primer lugar, el uso del recurso del autor "Programmer’s School" . En segundo lugar, el uso de manuales impresos con copyright. En tercer lugar, todo el material teórico se presenta en presentaciones para ilustrar más claramente los materiales del programa educativo.



Sobre la autoeducación


- Autoaprendizaje y formación regular. ¿Cómo combinarlo mejor?

Inessa: Entrenando con un maestro de acuerdo con el esquema clásico: este otoño es importante para dominar la base, desarrollar un nivel, "pararse en el ala". Cuando un niño se convierte en un ganador del premio, el ganador de las olimpiadas serias es la continuación de la educación clásica, el proceso de capacitación, las escuelas de campo, la autoeducación (cursos a distancia, entrenamiento regular personal).

Peter: Combina como, por ejemplo, lo sé. Los escolares estudian el material por su cuenta, pero yo personalmente verifico las soluciones a los problemas, además los chicos siempre pueden consultarme si algo no les queda claro.

Sergey: Así es, que el autoentrenamiento es mejor combinarlo con el entrenamiento regular. Esto le permite aprender el tema de la programación más rápido, ya que un maestro talentoso puede guiar correctamente al alumno en la dirección correcta, decirle qué, dónde y cómo.

- Dicen que vale la pena aprender la programación hasta cierta edad, y esta edad es inferior a 30 años. Entonces la eficiencia cae enormemente. ¿Cómo te sientes acerca de tales restricciones de edad?

Inessa: Por supuesto, sería bueno aprender todo de una vez hasta los 30 años, pero la vida cambia, el conocimiento mejora y el lenguaje se desarrolla. Por lo tanto, el entrenamiento es continuo durante toda la vida. Programación olímpica, que requiere velocidad, concentración psicológica, horas de entrenamiento, esto es para jóvenes. Aprender a programar después de 30 años: no veo ningún problema aquí si hay motivación y una mentalidad matemática.

Sergey: Básicamente, estoy de acuerdo. Pero tal vez hay excepciones. Después de 30 años, hay dificultades no solo con aprender algo, sino también con la programación misma. Por supuesto, esto sucede sin problemas y no hay un borde claro. Solía ​​poder programar durante 10 horas al día, pero ahora ... fuego. Por lo tanto, paso sistemáticamente de la programación a la programación de enseñanza: programo cada vez menos y enseño más.

- ¿Cómo te sientes acerca de los muchos cursos para programadores que se abren hoy? ¿No crees que dan un conocimiento demasiado superficial?

Inessa: Cursos de discordia. En el proceso de selección del curso, siempre vale la pena mirar las primeras conferencias para correlacionar su nivel y el nivel del curso, evaluar la utilidad del conocimiento, etc. Por lo tanto, creo que se requiere un conocimiento preliminar del curso.

Peter: Creo que hay cursos sensibles y superficiales. Además, mucho depende del estudiante mismo.

Sergey: No veo nada malo en el hecho de que hay cursos que brindan solo un conocimiento superficial. Los niños solo necesitan familiarizarse con este tema antes de inscribirse en un curso serio destinado a enseñar programación profesional. Y no puede haber muchos cursos profesionales: simplemente no hay tantos niños capaces de aprender programación seria, esta es una dirección bastante estrecha.

- ¿Qué fue lo más difícil para ti durante tu propio entrenamiento? ¿Qué etapas puedes destacar?

Inessa: La primera etapa es el desarrollo inicial, cuando parece que todo es nuevo y oscuro. La segunda etapa es un estudio profundo del material, cuando todo encaja. En esta etapa, las consultas con colegas son importantes y, si es posible, el refinamiento del material enseñado. Además, considero importante repetir constantemente en el proceso de enseñanza y motivación para aprender cosas nuevas.

Sergey: Si recuerdas que era 1989, cuando no había Internet, una computadora en casa y maestros, y solo una calculadora programable con instrucciones, entonces sí, había ciertas dificultades. Pero aún podía dominar los principios básicos de la programación. Luego estaba en noveno grado. Esta fue la primera etapa.

La siguiente etapa es la capacitación en el marco del Código de Procedimiento Penal en los grados 10-11 en computadoras sin discos duros. Pero luego con un teclado, un monitor (que era un televisor en blanco y negro) y un maestro. Luego estudié Básico y Pascal. Además en la universidad, mis capacidades y conocimientos en el campo de la programación se expandieron enormemente. Estudiamos C ++, Lisp, Prolog y Assembler. Y desde el quinto año comencé a enseñarme a mí mismo, comencé a enseñar Pascal a los escolares.

La siguiente etapa importante en mi vida está relacionada con mi desarrollo de la dirección de programación web en la construcción de sitios web. Este paso, tal vez, cambió mi vida al revés y atrajo a una gran cantidad de empleadores, de los cuales todavía lucho :)

Solo en 2003 me interesé en la programación de la Olimpiada y pasé a enseñar esto a los escolares.

- ¿Qué errores cometiste durante tu propio entrenamiento? ¿Qué puede aconsejar al respecto?

Inessa: Un error en el proceso de aprendizaje: un intento de cubrir información dispareja, cierta cantidad de información de baja calidad. Te aconsejo que uses cursos de alta calidad con buenas críticas, recomendaciones de colegas sobre ellos. También es importante reservar claramente tiempo para la capacitación.

Sergey: Quizás mi error principal es la elección incorrecta de herramientas de programación para crear sitios web. Todavía uso la tecnología de Microsoft: Windows + IIS + ASP + MSSQL. Todos los desarrollos requieren no solo una licencia, sino también grandes recursos informáticos. Es mucho mejor construir sobre software libre. En ese momento, y ahora todavía es relevante crear programas y desarrollar sitios para Unix usando Apache + PHP + MYSQL.

Source: https://habr.com/ru/post/es433434/


All Articles