
Mi trabajo principal está relacionado con datos y programación en R, pero en este artículo quiero hablar sobre mi afición, que incluso genera cierto ingreso. Siempre me ha interesado contar y explicar cosas a amigos, compañeros de clase y compañeros de curso. Además, siempre he tenido facilidad para comunicarme con los niños, no sé por qué. En general, creo que la crianza y educación de los niños es una de las actividades más importantes de todas, y mi esposa es pedagoga. Hace aproximadamente un año, publiqué un anuncio en un grupo local de Facebook, formé un grupo y comencé a enseñar Scratch y Python una vez a la semana. Ahora tengo cinco grupos, mi propia aula en casa y clases individuales. Cómo llegué a esta situación y cómo enseño a los niños, lo contaré en este artículo.
Vivo en Calgary, Canadá, en la provincia de Alberta, así que algunos aspectos estarán relacionados con la especificidad local.
Espacio
La disponibilidad de un lugar para las clases fue desde el principio un problema principal. Intenté buscar oficinas y aulas en alquiler por horas, pero no con mucho éxito. Nuestra universidad y SAIT, que es el equivalente local del MIT, alquilan aulas con y sin computadoras. Los precios resultaron no ser muy asequibles, y al final descubrí que la universidad no permite la entrada a menores, y SAIT solo alquila a sus propios estudiantes. Así que, esa opción quedó descartada. Hay muchos centros de oficinas que alquilan salas de reuniones y oficinas por horas; hay empresas que ofrecen un montón de opciones, desde aulas completas hasta cuartos para cuatro personas. Tenía esperanzas, ya que Alberta es una provincia petrolera, estamos desde 2014 en una crisis prolongada, y muchos espacios comerciales están vacíos. Me equivoqué de esperanzas, los precios eran tan altos que al principio ni lo podía creer. A los propietarios les resulta más fácil mantener oficinas vacías y pagar los costos que bajar los precios.
En ese momento recordé que pago impuestos puntualmente, y si hay algo que nuestro querido estado tiene, más exactamente, la ciudad de Calgary. Resulta que sí, hay. La ciudad tiene arenas para jugar hockey y otros deportes de patinaje, y en estas arenas hay salas donde los severos guerreros del hielo discuten estrategias para futuras batallas. En resumen, junto a cada arena hay un par de salas con mesas, sillas, una pizarra blanca e incluso un fregadero con una tetera. El precio es bastante razonable: 25 dólares canadienses por hora. Originalmente decidí hacer las clases de una hora y media, por lo que establecí un precio de $35 por sesión en un grupo de cinco personas, para compensar el alquiler y también llevarme algo al bolsillo. En general, me gustaba hacer las clases en las arenas, ya que resolvía uno de los problemas: la mayoría de los hispanohablantes viven al sur, mientras que yo vivo al norte de la ciudad, por lo que elegí una arena aproximadamente en el centro. Pero también había inconvenientes. La burocracia canadiense es buena y amigable, pero, para ser suaves, a veces es un poco torpe. No hay problema cuando te acostumbras al ritmo y planeas con anticipación, pero a veces surgen momentos incómodos. Por ejemplo, en el sitio web de la ciudad puedes elegir cómodamente la hora y el lugar, reservar una sala, pero no puedes pagar, de ninguna manera. Ellos mismos te llaman por teléfono y aceptan el pago con tarjeta. También puedes ir a la oficina y pagar en efectivo. Hubo un momento curioso pero no muy agradable, cuando esperé su llamada para pagar la segunda sesión, no recibí la llamada y llegué a la oficina quince minutos tarde el último día. Tuve que acercarme con una cara descarada a la seguridad y mentir diciendo que la sala estaba reservada. Nosotros, los canadienses, creemos en la palabra, me dejaron pasar sin problemas y no revisaron nada, pero no haría eso si la gente ya no hubiera estado en camino a la clase.
Estuve trabajando durante el invierno y la primavera, y luego ocurrieron cambios que fueron la gota que colmó el vaso. En primer lugar, cerraron la oficina para los visitantes y ofrecieron aceptar pagos por teléfono en la esquina. Estuve sentado al menos media hora en el pasillo antes de que pudiera comunicarme. En segundo lugar, si antes una amable señora tomaba mi pago por una hora y media, ahora respondió una chica que afirmó que el pago solo era por una hora. En ese momento, mi grupo tenía tres o dos personas, y esos $12.5 extra no estaban de más. Claro que soy idealista, pero si mi esposa me echa a la calle, no habrá a quién enseñar. En ese entonces, aún estaba sin trabajo.
Y decidí ir a la biblioteca. Las bibliotecas ofrecen salas preciosas de forma completamente gratuita, pero hay una condición: no se puede realizar actividades comerciales. Incluso las organizaciones benéficas no tienen permiso para recaudar dinero allí. Me dijeron que esto no se controla mucho, lo principal es no recoger dinero en la entrada, pero a mí no me gusta romper las reglas. Otro problema es que las salas a menudo están ocupadas y es complicado programar clases a la misma hora en un mismo lugar. Enseñé en las bibliotecas durante el verano y al inicio del invierno, y tenía que elegir aquellas donde había espacio. Al final, cambié de biblioteca cinco o seis veces. Luego empecé a reservar espacio con dos meses de anticipación, y aún así, solo logré hacerlo en una pequeña biblioteca; en las demás, siempre faltaban lugares a la hora requerida. Entonces decidí crear un aula de computación en casa. Colgué una pizarra, compré una segunda mesa a través de un anuncio y un par de monitores antiguos. La empresa me compró una nueva y potente laptop porque el análisis en mi computadora tomaba casi 24 horas. En total, tenía una computadora nueva que era vieja, una computadora muy vieja, una laptop cuyo pantalla fue aplastada por mi hijo y una netbook antigua a la que yo mismo le aplasté la pantalla. Las conecté a los monitores y les instalé Linux Mint, excepto en la netbook, a la que le puse una distribución muy ligera, creo que Puppy. También tengo una laptop nueva usada, comprada por 200 dólares, que conecté al televisor. Además, es importante mencionar que nuestro propietario recientemente cambió las ventanas y ahora, en la habitación, hay nuevos marcos blancos en lugar del horrible y desmoronado desastre de antes. La sala de estar, la cocina y el segundo dormitorio están reservados para un jardín de infancia, así que todo el piso resulta ser puramente pedagógico. Así que, ahora que el lugar está bien, pasemos a la enseñanza.
Scratch
Empiezo a enseñar los fundamentos de programación con el lenguaje Scratch. Es un lenguaje que utiliza bloques predefinidos, creado en su momento en el MIT. La mayoría de los niños ya han visto Scratch en la escuela, por lo que lo aprenden bastante rápido. Hay programas y planes de clases listos, pero no me gustan en absoluto. Algunos son extraños: crea tu propia historia, por ejemplo. Todo el programa consiste en innumerables bloques. say '' for 2 seconds. Es evidente que fue creado por personas muy creativas, pero con este enfoque se puede enseñar a escribir un clásico código espagueti indio. Desde el principio, yo hablo sobre principios como D.R.Y. Otras colecciones de tareas son bastante buenas, pero los niños rápidamente comprenden la esencia y empiezan a realizarlas a un ritmo acelerado. Al final, en una lección hacen lo que deberían haber hecho en cinco. Y dedicar mucho tiempo personal a buscar y seleccionar tareas. En general, Scratch se asemeja más a un IDE que a un lenguaje de programación, donde solo es necesario recordar dónde hacer clic y dónde buscar. Tan pronto como los estudiantes se familiarizan un poco, intento trasladarlos a Python. Incluso tengo una niña de siete años que escribe programas sencillos en Python. En lo que veo la utilidad de Scratch es que hay conceptos básicos que se asimilan de manera lúdica. Por alguna razón, a todos les resulta muy difícil entender la idea de una variable. Al principio, abordaba ese tema rápidamente y seguía adelante, hasta que me di cuenta de que no sabían qué hacer con ello. Ahora dedico mucho tiempo a las variables y vuelvo a ellas constantemente. Tengo que practicar repetidamente. En la pantalla cambio diferentes variables y les hago decir su valor. También en Scratch hay estructuras de control y cheques de valores, como while, para o if en Python. Se comprenden bastante fácil, aunque hay problemas con los ciclos anidados. Intento dar varias tareas con ciclos anidados para que su funcionamiento sea visual. Después de eso, paso a funciones. Incluso para los adultos, el concepto de función puede no ser obvio, y para los niños, aún más. Me extiendo mucho sobre qué es una función, hablo de una fábrica que recibe materiales y entrega productos, de un chef que transforma ingredientes crudos en comida. Luego hacemos un programa de 'haz un sándwich' con ingredientes, y después lo convertimos en una función, donde los ingredientes se pasan como parámetros. Termino el estudio de Scratch con las funciones.
Python
Con Python es todo más sencillo. Hay un buen libro, Python for Kids, del cual enseño. Todo es estándar: cadenas, orden de operaciones, print(), input() y demás. Está escrita en un lenguaje sencillo, con humor, y a los niños les gusta. Tiene un defecto común a muchos libros de programación. Como en la famosa broma: 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 clases entender que un objeto se conecta a un método con un punto. Por otro lado, no tengo prisa; repito lo mismo de diferentes maneras hasta que se forme al menos alguna imagen. Comienzo con variables y las repaso de nuevo, ya en Python. Las variables son una especie de maldición.
Un estudiante inteligente, que hace un par de meses dominaba las variables en Scratch, mira como un cordero ante nuevas puertas y no puede sumar x con y, que claramente están escritos en la pizarra justo arriba. ¡Repasemos! ¿Qué tiene una variable? ¡Nombre y valor! ¿Qué significa el signo igual? ¡Asignación! ¿Y cómo comprobamos la igualdad? ¡Con el doble signo igual! Y así repetimos una y otra vez, hasta la completa iluminación. Luego pasamos a funciones, donde más tiempo se lleva explicar sobre argumentos. Argumentos nombrados, por posiciones, por defecto, y así sucesivamente. En ninguna de las clases hemos llegado a las clases en sí. Además de Python según el libro, estudiamos algoritmos populares, de eso hablaré más adelante.
En realidad, la enseñanza
Mi lección está estructurada de esta forma: media hora doy teoría, verifico conocimientos y refuerzo lo aprendido. Una hora es práctica. A menudo me entusiasmo y hablo durante una hora, dejando solo media hora para la práctica. Cuando estudiaba Python, revisé un curso de Algoritmos y Estructuras de Datos Hiryanova de MFTI. Me gustó mucho su exposición y la estructura de las conferencias. Su idea es que los frameworks, la sintaxis y las bibliotecas se vuelven obsoletos. La arquitectura, el trabajo en equipo y los sistemas de control de versiones son todavía prematuros. Al final, lo que queda son algoritmos y estructuras de datos que son bien conocidos y siempre existirá en una forma similar. Yo mismo, del Pascal de la universidad, solo recuerdo los enteros. Como mis alumnos son principalmente jóvenes, de siete a quince años, creo que para su futuro es más importante sentar las bases que apresurarse a escribir un plataformas en Python. Aunque, ellos quieren más el plataformas, y los entiendo. Les enseño algoritmos simples: burbuja, búsqueda binaria en una lista ordenada, notación polaca inversa usando pilas, pero desglosamos cada uno de ellos muy detalladamente. Resulta que los niños modernos no saben en principio cómo funciona una computadora, también les explico eso. Intento vincular varios conceptos juntos en cada conferencia. Por ejemplo, computadora — memoria/procesador — memoria hecha de celdas (les dejo sostener una tarjeta de memoria, adivinen cuántas celdas hay aquí) — cada celda como una bombilla — hay dos estados — verdadero/falso — y/o — binario/decimal — 8 bits = 1 byte — byte = 256 variaciones — tipo de dato lógico en un bit — enteros en un byte. flotante en dos bytes — string en un byte — el número más grande en 64 bits — lista y tupla de los tipos anteriores. Aclaro que en una computadora real todo es un poco diferente y que hay otra cantidad de memoria para estos tipos de datos, pero lo principal es que nosotros mismos, en el proceso, creamos tipos de datos más complejos a partir de tipos más simples. Los tipos de datos son, sin duda, lo más complicado que hay que recordar. Por eso cada clase empiezo con un rápido calentamiento — un alumno nombra un tipo de dato, el siguiente da dos ejemplos, y así sucesivamente. Al final he conseguido que incluso los niños más pequeños griten con entusiasmo — ¡float! ¡boolean! ¡siete, cinco! ¡pizza, coche! Durante la conferencia constantemente interrumpo a uno o a otro, de lo contrario, rápidamente empiezan a hurgarse la nariz y mirar al techo. Además, hay que verificar el nivel de conocimiento de cada uno de ellos de vez en cuando.
Mis alumnos no dejan de sorprenderme tanto por su torpeza como por su inesperada agudeza. Afortunadamente, la agudeza es más común.
Quería escribir más, pero ya se ha convertido en un gran texto. Estoy encantado de responder cualquier pregunta. Aprecio toda crítica, solo les pido que seamos más tolerantes entre nosotros en los comentarios. Este es un artículo amable.
Fuente: habr.com
