¿Cómo les enseño Python a los niños?

¿Cómo les enseño Python a los niños?

Mi trabajo principal está relacionado con datos y programación en R, pero en este artículo quiero hablar de mi hobby, que incluso me genera algunos ingresos. Siempre me ha interesado contar y explicar cosas a amigos, compañeros y compañeros de estudios. También siempre me ha resultado fácil encontrar un lenguaje común con los niños, no sé por qué. En general, creo que criar y enseñar a los niños es una de las actividades más importantes de todas y mi esposa es maestra. Entonces, hace aproximadamente un año, hice publicidad en un grupo local de Facebook, formé un grupo y comencé a enseñar Scratch y Python una vez por semana. Ahora tengo cinco grupos, mi propia clase en casa y clases individuales. Cómo llegué a vivir de esta manera y exactamente cómo enseño a los niños, te lo contaré en este artículo.

Vivo en Calgary, Alberta, Canadá, por lo que algunas cosas serán específicas locales.

La habitacion

La disponibilidad de espacio para practicar fue una preocupación importante desde el principio. Intenté buscar oficinas y aulas en alquiler por horas, pero no tuve mucho éxito. Nuestra universidad y SAIT, el equivalente local del MIT, ofrecen clases con y sin computadoras. Los precios allí resultaron no ser muy humanos y al final resultó que la universidad no admite menores y SAIT generalmente solo alquila a sus propios estudiantes. Entonces, esta opción fue eliminada. Hay muchos office center que alquilan salas de reuniones y despachos por horas, hay empresas enteras que ofrecen un montón de opciones desde un aula completa hasta una sala para cuatro personas. Tenía esperanzas, dado que Alberta es una provincia petrolera, hemos estado en una crisis lenta desde 2014 y muchos espacios comerciales están vacíos. No debería haberlo esperado; los precios resultaron ser tan escandalosos que al principio ni siquiera los creí. Es más fácil para los propietarios sentarse en oficinas vacías y pagar costes que deshacerse de ellas.

En ese momento recordé que pago mis impuestos con regularidad y si nuestro querido estado, o mejor dicho, la ciudad de Calgary, tiene algo allí. Resultó que realmente lo hay. La ciudad tiene estadios para hockey y otros deportes de patinaje artístico, y en estos estadios hay salas donde los rudos guerreros del hielo discuten estrategias para futuras batallas. En definitiva, cada estadio cuenta con un par de salas con mesas, sillas, pizarra blanca e incluso un fregadero con hervidor de agua. El precio es bastante divino: 25 tugriks canadienses por hora. Inicialmente decidí hacer clases de una hora y media, así que fijé el precio de una lección en $35 por clase en un grupo de cinco personas, para compensar el alquiler y poner algo en mi bolsillo. En general, me gustó hacer ejercicio en las arenas, resolvió uno de los problemas: la mayoría de las personas de habla rusa viven en el sur y yo vivo en el norte de la ciudad, así que elegí una arena aproximadamente en el medio. Pero también hubo inconvenientes. La burocracia canadiense es buena y amigable, pero, por decirlo suavemente, puede ser algo torpe. No hay problemas si te acostumbras al ritmo y planificas con antelación, pero a veces surgen momentos desagradables. Por ejemplo, en el sitio web de la ciudad puedes seleccionar cómodamente una hora y un lugar y reservar una habitación, pero no puedes pagar de ninguna manera. Ellos mismos hacen las llamadas telefónicas y aceptan pagos con tarjeta. Puedes ir a la oficina y pagar en efectivo. Hubo un momento gracioso pero no muy agradable cuando estaba esperando su llamada para pagar la segunda lección, no llegó, y el último día llegué quince minutos tarde a la oficina. Tuve que acercarme a seguridad con cara de insolente y mentir que la habitación estaba reservada. Los canadienses confiamos en mi palabra: me dejaron entrar tranquilamente y no comprobaron nada, pero yo no haría eso si la gente no estuviera ya de camino a clase.

Así trabajé durante el invierno y la primavera, y luego se produjeron cambios que fueron el colmo. En primer lugar, la oficina estaba cerrada a los visitantes y se ofrecieron a aceptar pagos por teléfono a la vuelta de la esquina. Me senté en el pasillo al menos media hora antes de terminar. En segundo lugar, si antes mi querida tía me cobraba por una hora y media, ahora una chica contestó el teléfono y dijo que el pago era solo por una hora. En ese momento, mi grupo era de tres o dos personas, y los 12.5 dólares extra no eran en absoluto superfluos. Por supuesto que soy ideológico, pero si mi mujer me echa a la calle, entonces no habrá nadie a quien enseñar. Entonces todavía estaba desempleado.

Y decidí ir a la biblioteca. Las bibliotecas alquilan maravillosas salas de forma totalmente gratuita, pero hay un inconveniente: no se pueden realizar actividades comerciales. Ni siquiera las organizaciones benéficas pueden recaudar dinero allí. Me dijeron que esto no está particularmente controlado, lo principal es no aceptar dinero en la entrada, pero realmente no me gusta romper las reglas. Otro problema es que las salas suelen estar ocupadas y es difícil llevar a cabo las clases programadas al mismo tiempo en un solo lugar. Enseñé en bibliotecas durante el verano y principios de invierno, tuve que elegir aquellas que tenían espacio y al final cambié cinco o seis bibliotecas. Luego comencé a reservar plaza con dos meses de antelación, y aun así sólo conseguí hacerlo en una pequeña biblioteca, el resto normalmente no tenía plazas para el tiempo necesario. Y entonces decidí hacer una clase de informática en casa. Colgué el tablero, compré una segunda mesa y un par de monitores viejos del anuncio. En el trabajo, la empresa me compró una computadora portátil nueva y potente porque el análisis en mi computadora tomó casi 24 horas. Entonces, tenía una computadora nueva y vieja, una computadora vieja y vieja, una computadora portátil en la que mi pequeño aplastó la pantalla y una netbook antigua en la que yo mismo aplasté la pantalla. Los conecté todos a los monitores e instalé Linux Mint en todas partes, excepto en la netbook, en la que instalé una distribución muy ligera, al parecer, Pappy. Todavía tengo una computadora portátil nueva y vieja, comprada por $200, la conecté al televisor. Lo que también es importante es que nuestro propietario cambió nuestras ventanas recientemente y, en lugar de la terrible miseria que se desmorona en la habitación, ahora tenemos nuevos marcos blancos. Mi esposa conserva la sala de estar, la cocina y el segundo dormitorio para una guardería, por lo que todo el piso resultó ser puramente pedagógico. Entonces, ahora que todo está bien con las premisas, pasemos a la enseñanza.

Rascar

Estoy empezando a enseñar los conceptos básicos de programación utilizando el lenguaje Scratch. Este es un lenguaje que utiliza bloques prefabricados, inventado en un momento en el MIT. La mayoría de los niños ya han visto Scratch en la escuela, por lo que lo aprenden con bastante rapidez. Hay programas y planes de lecciones ya preparados, pero no me gustan en absoluto. Algunas son extrañas: crea tu propia historia, por ejemplo. Todo el programa consta de innumerables bloques. say '<...>' for 2 seconds. Se puede ver que fue inventado por personas muy creativas, pero con este enfoque puedes enseñar a escribir el clásico código espagueti indio. Desde el principio hablo de principios como DRY, otras colecciones de tareas son bastante buenas, pero los niños captan rápidamente la esencia y empiezan a realizarlas como una ametralladora. Como resultado, hacen en una lección lo que deberían haber hecho en cinco. Y buscar y seleccionar tareas requiere mucho tiempo personal. En general, Scratch recuerda más no a un idioma, sino a un IDE, donde solo necesitas recordar dónde hacer clic y dónde buscar qué. Tan pronto como los estudiantes se sienten más o menos cómodos, intento transferirlos a Python. Incluso mi hija de siete años escribe programas sencillos en Python. Lo que veo como beneficio de Scratch es que contiene conceptos básicos que se aprenden de forma lúdica. Por alguna razón, es muy difícil para todos, sin excepción, comprender la idea de variable. Al principio, rápidamente le eché un vistazo al tema y seguí adelante hasta que me encontré con el hecho de que ni siquiera sabían qué hacer al respecto. Ahora dedico mucho tiempo a las variables y vuelvo a ellas constantemente. Tienes que martillar un poco estúpidamente. Cambio diferentes variables en la pantalla y les hago decir sus valores. Scratch también tiene estructuras de control y comprobaciones de valores, como while, for o if en pitón. Son bastante fáciles, pero existen problemas con los bucles anidados. Intento dar varias tareas con un bucle anidado, y para que su acción sea clara. Después de eso paso a las funciones. Incluso para los adultos el concepto de función no es evidente, y más aún para los niños. Hablo largamente de lo que es una función en general, hablo de una fábrica que recibe artículos como insumo y emite mercancías, de un cocinero que elabora alimentos a partir de materias primas. Luego hacemos un programa de “hacer un sándwich” con productos, y luego creamos una función a partir de él, a la que se le pasan los productos como parámetros. Termino de aprender funciones con Scratch.

Pitón

Con Python todo es más sencillo. Hay un buen libro Python for Kids, que es desde donde enseño. Allí todo es estándar: líneas, orden de operaciones, print(), input() etc. Escrito en un lenguaje sencillo, con humor, les gusta a los niños. Tiene un defecto común a muchos libros de programación. Como en el famoso chiste: cómo dibujar un búho. Óvalo - círculo - búho. La transición de conceptos simples a conceptos bastante complejos es demasiado abrupta. Me lleva varias sesiones adjuntar el objeto al método del punto. Por otro lado, no tengo prisa, repito lo mismo de diferentes maneras hasta que al menos sale alguna imagen. Empiezo con variables y las vuelvo a elaborar, esta vez en Python. Las variables son una especie de maldición.

Un estudiante inteligente, que hace un par de meses hizo clic hábilmente en las variables de Skratch, parece un ariete en la nueva puerta y no puede sumar la X con la Y, que está claramente escrita en la pizarra una línea arriba. ¡Repetimos! ¿Qué tiene una variable? Nombre y significado! ¿Qué significa el signo igual? ¡Asignación! ¿Cómo comprobamos la igualdad? ¡Doble signo igual! Y repetimos esto una y otra vez hasta la iluminación completa. Luego pasamos a las funciones, donde la explicación sobre los argumentos lleva más tiempo. Argumentos con nombre, por posición, por defecto, etc. Aún no hemos llegado a clases en ningún grupo. Además de Python, estudiamos algoritmos populares del libro, hablaremos de eso más adelante.

En realidad, entrenar

Mi lección está estructurada así: doy teoría durante media hora, pruebo conocimientos y consolido lo aprendido. Es hora de los laboratorios. A menudo me dejo llevar y hablo hasta una hora, luego queda media hora para practicar. Cuando estaba aprendiendo Python, vi el curso. Algoritmos y estructuras de datos Khiryanov del MIPT. Me gustó mucho su presentación y la estructura de sus conferencias. Su idea es la siguiente: los marcos, la sintaxis y las bibliotecas se están volviendo obsoletos. Arquitectura, trabajo en equipo, sistemas de control de versiones: todavía es temprano. Como resultado, los algoritmos y las estructuras de datos se conocen desde hace mucho tiempo y siempre tendrán una forma similar. Yo mismo sólo recuerdo números enteros del instituto pascal. Dado que mis alumnos son en su mayoría jóvenes, de siete a quince años, creo que es más importante para su futuro sentar las bases que escribir rápidamente un juego de plataformas en Python. Aunque quieren más un juego de plataformas y los entiendo. Les doy algoritmos simples: una burbuja, búsqueda binaria en una lista ordenada, notación polaca inversa usando una pila, pero analizamos cada uno con gran detalle. Resultó que los niños modernos, en principio, no saben cómo funciona una computadora, también te lo diré. Intento unir varios conceptos en cada conferencia. Por ejemplo, una computadora - memoria/porcentaje - memoria compuesta de celdas (te dejaré sostener el chip de memoria, adivina cuántas celdas hay) - cada celda es como una bombilla - hay dos estados - verdadero/falso - y/o - binario/decimal - 8 bits = 1 byte - byte = 256 opciones - tipo de datos lógicos en un bit - enteros en un byte - float en dos bytes - string en un byte - el número más grande de 64 bits - una lista y una tupla de los tipos anteriores. Hago una reserva de que en una computadora real todo es algo diferente y la cantidad de memoria para estos tipos de datos es diferente, pero lo principal es que nosotros mismos en el proceso creamos tipos de datos más complejos a partir de otros más simples. Los tipos de datos son quizás lo más difícil de recordar. Por eso empiezo cada lección con un rápido calentamiento: un estudiante nombra el tipo de datos, el siguiente da dos ejemplos, y así sucesivamente en un círculo. Como resultado, logré que incluso los niños más pequeños gritaran alegremente: ¡flota! booleano! ¡siete cinco! pizza, coche! Durante una conferencia, constantemente saco primero uno u otro, de lo contrario, rápidamente empiezan a hurgarse la nariz y mirar al techo. Y es necesario comprobar de vez en cuando el nivel de conocimientos de cada uno.

Mis alumnos nunca dejan de sorprenderme, tanto por su estupidez como por su inesperada inteligencia. Afortunadamente, más a menudo con inteligencia.

Quería escribir más, pero resultó ser solo una hoja. Estaré encantado de responder a todas las preguntas. Acepto cualquier crítica en todas las formas posibles, solo les pido que sean más tolerantes unos con otros en los comentarios. Este es un buen artículo.

Fuente: habr.com

Añadir un comentario