Curso de Python en Cruz del Eje

Martes, 15:30hs.

Recibo un llamado de Agustin Fontaine que, luego de recordarme que me tome un mate diciéndome 'meit', me saludó y me preguntó si me interesaba hacer un mini-curso de Python para el grupo con el que fuimos a El Quicho, mañana (Miércoles) en Cruz del Eje en las oficinas del INTI con posibilidad a que se sume alguien más. "Genial!" -dije, "Vamos para adelante. No tengo nada armado pero igualmente me gustaría tratar de explicar lo que ustedes quieran aprender. Seguramente les haga algunas preguntas al principio para ver qué conceptos manejan y en base a eso, hagamos algo."

Y así fue. Al día siguiente, nos levantamos bien temprano con Leo y arrancamos para Cruz del Eje. Llegamos a la oficina del INTI, estuve trabajando un rato y cerca del medio día arrancamos con "el programa" del curso. Los alumnos: Ceci, Leo, Gerardo y Agustín. Empecé con una introducción breve sobre cómo pensaba organizar el tiempo y luego les hice unas preguntas:

  • ¿Qué contacto / experiencias han tenido con la programación?
  • ¿Qué creen que programar?
  • Para mi no hay magia en todo esto, pero muchos creen que sí, ¿ustedes cómo creen que se "habla" con una computadora?
DSC_6961_01.thumbnail.jpg

Como buen profe, poniento el título del curso :D

Algunos habían escuchado hablar de C, tiraron la mágica palabra "punteros", otro me dijo que nunca había hecho nada de nada y que no se hacía una idea de cómo era la cosa, pero que podría ser parecido a usar la terminal de Linux. Uno estaba haciendo un curso de Linux dónde le estaban enseñando un poco de Bash (¡Buenísimo!) para hacer scripts. También hablaron de Visual Basic y de lo difícil que es encontrar un error en C cuando no compila por algún motivo.

Así que, usé esas cosas como para decir: "esto en Python está resuelto así", "para hacer una lista sólo abrís y cerrás corchete", "el tipo, cuando te genera una excepción te dice cuál fue la excepción, un mensaje de error, el archivo y la línea específica dónde ocurrió", y algunas otras cositas más. "Nah", "Uh", "¿En serio?", "Python pinta ser re piola", "¡Qué grande!" y algunos comentarios más se escucharon. Listo el pollo; cayeron en la trampa :)

Expliqué un poco el porqué de los lenguajes de programacion, las ambiguedades del lenguaje natural, cómo se hace para aprender y lo importante que es para mi saber conceptos y no tanto sintaxis o cosas de memoria sobre el uso del lenguaje y después de eso arranqué con "Tipos de datos".

Empecé diciéndoles que abran una terminal y empiecen a probar cosas matemáticas. Onda, sumar números, multiplicarlos y algunas cositas más como para empezar a ver qué era esto de la terminal interactiva de Python. Probamos algunas cositas, hablamos del órden de precedencia de los operadores, nos fuimos por las ramas, volvimos y nos fuimos nuevamente. Eso estaba muy bueno porque hablábamos de lo que querían saber, pero se complicaba para seguir una línea (igualmente, no la había :D). Empezamos con variables y una mínima explicación sobre ellas. Seguimos con strings. Los sumamos, se concatenan, los imprimimos en pantalla con print, usamos el método .format para meter variables dentro de los strings, probamos qué pasaba cuando se sumaba un string con int y nuevamente nos fuimos por las ramas con el tema de las excepciones. Salió el tema de que se pueden manejar para que el programa no se cierre y tuvimos una charla bastante interesante sobre eso.

DSC_6965_01.thumbnail.jpg

Explicando precedencia de operadores

Seguimos adelante. Hablamos de listas y tuplas. Como acceder a sus elementos, como hacer slices y también nos fuimos por las ramas tratando de entender el "de a cuántos saltos" (utilizando el tercer número en el índice (2): lista[3:5:2]) y... ¿Qué pasa si pongo un número negativo ahí?...

Luego de eso, llegamos a diccionarios, para que sirven y como se puede meter muchísima información dentro de ellos utilizando diccionarios anidados: "es casi una base de datos; de hecho, si lo guardamos en un archivo... voilá"

Después de esto y de hablar un poco sobre las funciones y para qué sirven, nos planteamos un ejercicio que era:

Definir una función que reciba un argumento y, dependiendo el argumento pasado, muestre en pantalla:

Hola Manuel

Hola Cecilia

Hola Agustín

Hola Gerardo

Hola Leandro

Cada uno se puso a trabajar en su máquina y salieron 3 soluciones diferentes. Todas muy bien encaminadas pero por alguna cosita en particular no funcionaban. Pasé máquina por máquina y les expliqué algunas cositas básicas para ver si se podían destrabar solos y al rato escucho un aplauso bastante fuerte acompañado de "FUNCIONÓ" y una sonrisa muy grande. Ese era Leo, quien para mi en ese preciso momento se convirtió en programador posta. Me sentí muy identificado con su alegría y la forma de expresarla.

DSC_6964_01.thumbnail.jpg

El tutorial y "el profe"

Mientras con los otros miramos algunas cositas más y salieron temas como "espacio de nombres", "varios argumentos en la misma función", "la función input y raw_input", etc. Seguí intentando destrabar a los otros un poquito, ya que para mi es mucho mejor si te dar un empujón a que si te dan la solución, y como se nos estaba viniendo el tiempo encima, decidimos copiar todas las soluciones en el pizarrón y explicar porqué sí y porque no funcionaban y luego las arreglamos.

Cuando terminamos con eso, les pedí que me comenten "que les pareció esta primera juntada", "si cumplió con sus espectativas" y que me comenten lo que quieran con respecto a todo lo que había pasado. Hubo varias visiones del curso y eso estuvo bueno, pero en general les gustó y algunos se fueron convencidos de que Python es el camino, otros simplemente me dijeron: "Cuando nos veamos en la segunda clase, voy a saber exactamente lo mismo que lo que sé ahora, después de este mini-curso" :)

Este curso-express duró aproximadamente 4hs casi sin cortes y creo que hablamos de muchísimas cosas. Sin embargo, no me queda tan claro qué es lo que aprendieron ellos y no supe muy bien cómo hacer para encontrarme con ese feedback. Aunque por otro lado, me sorprendieron las soluciones que dieron al ejercicio. Digo, todos hicieron una solución y a los que no les funcionó era por una pelotudes sintáctica o similar y no por un error de concepto.

Fue una experiencia muy enriquesedora para mi. Me encanta tratar de enseñarle cosas a la gente que tiene ganas de aprender. Es muy gratificante. Aunque ellos hayan dicho lo contrario, me considero "un queso" dando cursos y voy a tener muy en cuenta esta experiencia para los próximos cursos-express de Python.

Comentarios

Comments powered by Disqus