
Mi trabajo principal está relacionado con la programación de datos y
R
, pero en este artículo quiero hablar sobre mi pasatiempo, que incluso genera algunos ingresos. Siempre me interesó contar y explicar cosas a amigos, compañeros y compañeros de clase. Siempre me ha sido fácil encontrar un idioma común con los niños, no sé por qué. En general, creo que criar y educar a los niños es una de las ocupaciones más importantes de todas, y mi esposa es maestra. En general, hace aproximadamente un año, anuncié en un grupo local en Facebook, escribí en un grupo y comencé a enseñar scratch y python una vez por semana. Ahora tengo cinco grupos, mi propia clase en la casa y clases individuales. Cómo llegué a esa vida y cómo enseño exactamente a los niños, explicaré en este artículo.
Vivo en Canadá, la ciudad de Calgary, Alberta, por lo que algunos puntos estarán relacionados con detalles locales.
Habitacion
Tener espacio para las clases fue un gran problema desde el principio. Traté de buscar oficinas y clases en alquiler por horas, pero no con mucho éxito. Nuestra universidad y SAIT, la contraparte local del MIT, toman clases con y sin computadoras. Los precios resultaron no ser muy humanos, pero al final resultó que la universidad no permitía menores, y SAIT generalmente pasó solo a sus estudiantes. Entonces, esta opción ha desaparecido. Hay muchos centros de oficinas que alquilan salas de reuniones y oficinas por hora; hay compañías enteras que ofrecen un montón de opciones, desde una clase completa hasta una sala para cuatro personas. Tenía esperanzas, ya que Alberta es una provincia petrolera, hemos tenido una crisis lenta desde 2014, y muchas áreas de negocios están vacías. En vano esperaba que los precios estuvieran tan tirados por los caballos que al principio ni siquiera lo creía. Es más fácil para los propietarios sentarse en oficinas vacías y pagar costos que descargar.
En ese momento, recordé que regularmente pago impuestos, y si nuestro querido estado tenía algo allí, o más bien, la ciudad de Calgary. Resultó que hay mucho. La ciudad tiene arenas para jugar hockey y otros tipos de patinaje artístico, y estas arenas tienen salas donde los guerreros de hielo hostiles discuten estrategias para futuras batallas. En resumen, en cada arena hay un par de habitaciones con mesas, sillas, una pizarra blanca e incluso un fregadero con hervidor de agua. El precio es bastante divino: 25 tugriks canadienses por hora. Inicialmente decidí hacer clases durante una hora y media, así que fijé el precio de una lección de $ 35 desde la nariz en un grupo de cinco personas para compensar el alquiler, bueno, me puse algo en el bolsillo. En general, me gustaba estudiar en arenas, esto 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í la arena en el medio. Pero hubo inconvenientes. La burocracia canadiense es buena y amigable, pero, por así decirlo, suavemente, puede ser algo lenta. No hay problema cuando se acostumbra al ritmo y planifica con anticipación, pero a veces surgen momentos desagradables. Por ejemplo, en el sitio web de la ciudad puede elegir convenientemente la hora y el lugar, reservar una habitación, pero no puede pagar de ninguna manera. Llaman por teléfono y aceptan pagos con tarjeta. Puede ir a la oficina y pagar en efectivo. Hubo un momento divertido pero no muy agradable cuando estaba esperando su llamada para pagar la segunda lección, no esperé y llegué tarde a la oficina el último día durante quince minutos. Tuve que acercarme al guardia con una cara descarada y mentirle que la habitación estaba reservada. Nosotros los canadienses, creemos en nuestra palabra, con calma me dejó entrar y no revisó nada, pero no haría eso si la gente no hubiera ido a clase.
Así que estudié invierno y primavera, y luego hubo cambios que se convirtieron en el colmo. En primer lugar, la oficina estaba cerrada a los visitantes y se ofreció a aceptar el pago por teléfono a la vuelta de la esquina. Me senté al menos media hora en el pasillo antes de llamar. En segundo lugar, si antes mi querida tía me tomaba el pago durante una hora y media, ahora una chica levantaba el teléfono y decía que el pago era solo por horas. En ese momento, tenía un grupo de tres o dos personas, y los $ 12.5 adicionales no eran en absoluto adicionales. Por supuesto, soy ideológico, pero si mi esposa me echa a la calle, entonces no habrá nadie a quien enseñar. Todavía estaba sin trabajo entonces.
Y decidí ir a la biblioteca. Las bibliotecas alquilan hermosas habitaciones de forma gratuita, pero hay una cosa allí: no puede realizar actividades comerciales. Incluso las organizaciones de caridad no tienen derecho a recaudar dinero allí. Me dijeron que esto no está particularmente controlado, lo principal aquí es no tomar dinero en la entrada, pero realmente no me gusta romper las reglas. Otro problema: las salas suelen estar ocupadas y es difícil impartir clases en un horario al mismo tiempo en un solo lugar. Enseñé bibliotecas en verano y principios de invierno, tuve que elegir aquellas donde hay un lugar, al final cambié cinco o seis bibliotecas. Luego comenzó a reservar un lugar en dos meses, y luego resultó que se hacía solo en una pequeña biblioteca, en el resto regularmente no había lugares para el momento adecuado. Y luego decidí hacer una clase de informática en casa. Colgué el tablero, compré un anuncio para una segunda mesa y un par de monitores viejos. Para el trabajo, la compañía me compró una nueva y poderosa computadora portátil, porque el análisis tomó casi 24 horas en mi computadora. En total, tenía una computadora nueva y vieja, una computadora vieja y vieja, una computadora portátil, en la que mi pequeña pantalla aplastada y una netbook antigua, en la que yo misma aplastaba la pantalla. Los conecté todos a los monitores e instalé Linux mint en todas partes, excepto el netbook, en el que instalé una distribución muy ligera, al parecer, pappi. Todavía tengo una vieja computadora portátil nueva, comprada por $ 200, la conecté al televisor. Otra cosa importante es que nuestro propietario recientemente cambió las ventanas por nosotros, y ahora en la habitación hay nuevos marcos blancos en lugar de una terrible miseria derrumbada. La esposa sostiene la sala de estar, la cocina y el segundo dormitorio debajo de un jardín de infantes, por lo que todo el piso resultó ser puramente pedagógico. Entonces, ahora todo está bien con la sala, pasemos directamente a la enseñanza.
Rascarse
Estoy empezando a dar los conceptos básicos de programación con el lenguaje scratch. Este es un lenguaje que utiliza bloques prefabricados, acuñados en ese momento en MIT. La mayoría de los niños ya han visto álbumes de recortes en la escuela, que dominaron tan rápidamente. Hay programas ya preparados y planes de lecciones, pero no me gustan en absoluto. Algunos extraños: crea tu propia historia, por ejemplo. Todo el programa consta de innumerables bloques que
say '<...>' for 2 seconds
. Se puede ver que fue inventado por personalidades muy creativas, pero con este enfoque puedes aprender a escribir el clásico código de espagueti indio. Estoy hablando de principios como DRY desde el principio. Otras colecciones de tareas son bastante buenas, pero los niños rápidamente llegan al fondo del asunto y comienzan a hacerlas como una ametralladora. Como resultado, en una lección hacen lo que deberían tener en cinco. Y la búsqueda y selección de tareas requiere mucho tiempo personal. En general, el scratch recuerda más no un idioma, sino un IDE, donde solo necesita recordar dónde hacer clic y dónde buscar. Tan pronto como los estudiantes aprenden más o menos, trato de transferirlos a Python. Incluso tengo una niña de Python de siete años que escribe programas simples. En lo que veo el beneficio de scratch es que hay conceptos básicos que se asimilan de una manera lúdica. Por alguna razón, sin excepción, es muy difícil para todos entender la idea de una variable. Al principio, rápidamente leí este tema y seguí adelante hasta que me encontré con el hecho de que generalmente no sabían qué hacer al respecto. Ahora dedico mucho tiempo a las variables y vuelvo a ellas constantemente. Tengo que hacer estúpidos ritmos. Cambio diferentes variables en la pantalla y les hago decir su significado. También en scratch hay estructuras de control y comprobaciones de valores, como
while
,
for
o
if
en python. Se dan con bastante facilidad, solo con ciclos anidados hay problemas. Intento asignar varias tareas con un bucle anidado, 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 obvio, y más aún para los niños. Durante mucho tiempo crucifico lo que es una función en general, hablo de una fábrica que recibe objetos como insumos y entrega bienes, acerca de un cocinero que elabora alimentos con productos crudos. Luego hacemos un programa de "hacer un emparedado" con productos, y luego hacemos una función a partir de él, a qué productos se pasan como parámetros. En el estudio de las funciones, termino con un rasguño.
Pitón
Python es más fácil. Hay un buen libro de Python para niños, y estoy aprendiendo de él. Todo es estándar allí: cadenas, orden de operaciones,
print()
,
input()
, etc. Escrito en lenguaje sencillo, con humor, a los niños les gusta. Tiene un defecto inherente en muchos libros de programación. Como en una broma famosa: cómo dibujar un búho. Oval - círculo - búho. Desde conceptos simples, una transición demasiado aguda hasta conceptos bastante complejos. Me toma algunas lecciones obtener el objeto adjunto al método de puntos. Por otro lado, no tengo prisa, repito lo mismo de manera diferente hasta que se desarrolle alguna imagen. Comienzo con las variables y las martillo de nuevo, ya en Python. Las variables son algún tipo de maldición.
Un estudiante inteligente que hizo un clic inteligente en las variables en un scratch hace un par de meses, parece un carnero en una nueva puerta y no puede agregar X al jugador, que están claramente escritas en la línea del tablero de arriba. Repite! ¿Qué tiene una variable? Nombre y significado! ¿Qué significa el signo igual? Asignación! ¿Y cómo verificamos la igualdad? ¡Doble signo igual! Y así repetimos 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. Todavía no hemos llegado a las clases en ningún grupo. Además de Python en el libro, estudiamos algoritmos populares, más sobre eso más adelante.
En realidad, entrenamiento
Mi lección está organizada de esta manera: durante media hora doy una teoría, evalúo el conocimiento, consolidado lo que he aprendido. Hora - Laboratorios. A menudo me dejo llevar y transmito hasta una hora, luego me queda media hora para practicar, respectivamente. Cuando estaba aprendiendo Python, pasé por el curso de
Algoritmos y Estructuras de Datos de Khiryanov de MIPT. Realmente me gustó su presentación y la estructura de las conferencias. Su idea es esta: los marcos, la sintaxis, las bibliotecas, se vuelven obsoletos. La arquitectura, el trabajo en equipo, los sistemas de control de versiones son demasiado tempranos. Como resultado, quedan algoritmos y estructuras de datos que se conocen desde hace mucho tiempo y siempre tendrán una forma similar. Yo mismo del instituto pascal solo enteros y lo recuerdo. Como 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, más bien les gusta un juego de plataformas, y los entiendo. Les doy algoritmos simples: una burbuja, una búsqueda binaria en una lista ordenada, la notación polaca inversa usando la pila, pero analizamos cada uno con gran detalle. Resultó que los niños modernos no saben, en principio, cómo está organizada la computadora, también lo digo. En cada conferencia trato de conectar varios conceptos juntos. Por ejemplo, una computadora - memoria / porcentaje - memoria de celdas (déjame sostener una tarjeta de memoria, adivina cuántas celdas hay aquí) - cada celda es como una bombilla - hay dos estados: verdadero / falso - y / o - binario / decimal - 8 bits = 1 byte - byte = 256 opciones - un tipo de datos lógico en un bit - números enteros en un byte -
float
en dos bytes -
string
en un byte - el número más grande en 64 bits - una lista y tupla de los tipos anteriores. Hago una reserva de que en una computadora real todo es ligeramente diferente y una cantidad diferente de memoria para estos tipos de datos, pero lo principal es que en el proceso nosotros mismos creamos tipos de datos más complejos a partir de los más simples. Los tipos de datos son quizás lo más difícil de recordar. Por lo tanto, comienzo cada lección con un calentamiento rápido: un alumno nombra el tipo de datos, el siguiente da dos ejemplos, y así sucesivamente. Como resultado, me aseguré de que incluso los niños más pequeños gritaran alegremente: ¡floten! boolean! siete, cinco! pizza, auto! Durante la conferencia, constantemente me tironeo uno u otro, de lo contrario, rápidamente comienzan a hurgarse la nariz y mirar al techo. Y el nivel de conocimiento de cada uno debe verificarse entre los casos.
Mis alumnos no dejan de sorprenderme con su estupidez y su ingenio rápido inesperado. Inteligencia, afortunadamente, más a menudo.
Quería escribir más, pero aun así la hoja resultó. Contestaré con gusto todas las preguntas. Agradezco cualquier crítica en todos los sentidos, solo una solicitud, para ser más tolerantes entre sí en los comentarios. Este es un buen artículo.