18 de agosto de 2010

El circo volador

Las representaciones artísticas asociadas al lenguaje Python (por ejemplo las portadas de libros y los logotipo de sitios web como es el caso de este blog) muy a menudo hacen alusión a la serpiente constrictora originaria de Asia y África.


Sin embargo, el nombre del lenguaje Python realmente proviene de otro lado. Guido van Rossum, reconocido computólogo holandés y autor del lenguaje, decidió nombrarlo así en honor de "Monty Python's Flying Circus", un programa cómico de la televisión inglesa producido por la BBC durante la década de los años setenta1. Esto refleja de algún modo la naturaleza divertida y juguetona que tiene el lenguaje.


Mi impresión es que Monty Python es poco conocido en México. No tengo idea si es más popular en otros países de habla hispana. Sin embargo, sí se nota la influencia de esta serie de televisión entre los geeks de habla inglesa. Por ejemplo, el término spam que usamos hoy en día para referirnos al correo electrónico no solicitado tiene su origen en un sketch de Monty Python. En este sketch una viejecita llega acompañada de su pareja a un changarro de comida repleto de vikingos y le pregunta a la mesera sobre el menú. La mesera le menciona todos los platillos disponibles, los cuales invariablemente incluyen spam (jamón de cerdo enlatado, elaborado por Hormel Foods), pero a la viejecita no le gusta el spam. Sugiero ver el video en YouTube si el lector desea conocer el desenlace de esta historia.


Guido menciona en el tutorial de Python que hacer alusiones a los sketches de Monty Python en la documentación no es tan solo permitido, sino que se exhorta a hacerlo2. He aquí algunos lugares en donde se hace una clara referencia a Monty Python:
  • En lugar de usar las clásicas variables metasintácticas foo y bar, en los programas de ejemplo de la documentación de Python se usa spam y eggs.
  • IDLE es el ambiente de desarrollo integrado (IDE por sus siglas en inglés) que viene con la distribución más popular de Python. El nombre es en honor de Eric Idle, uno de los miembros originales del elenco de Monty Python.
  • Bicycle Repair Man es una herramienta que simplifica la refactorización de código escrito en lenguaje Python. El nombre es en honor a un super héroe cuyo super poder consiste en saber cómo reparar bicicletas. Este sketch también está disponible en YouTube.
El humor de Monty Python es muy inglés y muy particular de los años setenta. En algunas ocasiones llegó a ser muy irreverente e incluso generó bastante controversia dentro de algunos círculos religiosos, específicamente por las películas Monty Python and the Holy Grail (1975) y Life of Brian (1979).

Alguna gente llega a preguntar: ¿me tiene que gustar "Monty Python's Flying Circus" para aprender a programar en Python? Por supuesto que no, pero puede ser que ayude. Además, nadie espera a la Inquisición española.


Referencias

1 General Python FAQ: Why is it called Python?
2 The Python Tutorial: Whetting Your Appetite

14 de agosto de 2010

Aprendizaje activo

El aprendizaje activo es una técnica en donde los estudiantes hacen más que sólo escuchar la clase que dicta el maestro. El énfasis principal es el desarrollo de habilidades, mientras que la simple transmisión de información pasa a segundo plano. Los alumnos logran un razonamiento de orden mayor (por ejemplo: análisis, síntesis y evaluación), entablan actividades entretenidas (por ejemplo: discusiones y resolución de problemas) y reflexionan sobre sus actitudes y valores.

En el Tec de Monterrey llevamos bastante tiempo incorporando el aprendizaje activo a nuestros cursos mediante la aplicación de diversas técnicas didácticas (por ejemplo: aprendizaje colaborativo, aprendizaje basado en problemas, aprendizaje orientado a proyectos). Sin embargo nunca está de más conocer algunas nuevas actividades que fomenten el aprendizaje activo dentro del salón de clases. Una buena fuente de inspiración para actividades relacionadas a las clases de computación es CS-Unplugged. Aunque dicho material está diseñado para niños de primaria, yo he visto que resulta muy interesante y entretenido incluso también para personas de edad adulta. Los temas cubiertos ahí incluyen cosas como números binarios, representación de imágenes, compresión de textos, algoritmos de búsqueda, autómatas de estado finito, y protocolos de criptografía. El sitio de CS-Unplugged está en inglés, pero ahí mismo hay un PDF en idioma español, el cual incluye la descripción completa de la mayoría de las actividades.

Durante la segunda clase de mi grupo de Fundamentos de programación realicé la actividad 12 de CS-Unplugged titulada "Siguiendo Instrucciones — Lenguajes de Programación". El resumen de esta actividad es el siguiente:
Las computadoras generalmente se programan usando un "lenguaje", que es un vocabulario limitado de instrucciones que pueden obedecer. Una de las cosas más frustrantes de la programación es que las computadoras siempre obedecen las instrucciones al pie de la letra, aunque produzcan resultados absurdos. Esta actividad proporciona a los niños cierta experiencia con este aspecto de la programación.
A una alumna voluntaria le pedí que describiera oralmente la siguiente imagen a sus demás compañeros (quienes no la habían visto previamente) con el fin de que cada quien la reprodujera por su cuenta.

Se permitió que los demás hicieran preguntas para clarificar las instrucciones. El propósito era ver qué tan rápido y preciso se podía realizar el ejercicio. La siguiente imagen muestra cómo quedó el dibujo de un alumno:


Posteriormente se repitió el ejercicio tres veces más, pero en estas tres ocasiones no se permitió hacer preguntas al responsable de describir las imágenes.


Estos fueron algunos resultados:


Al finalizar los ejercicios le hice notar al grupo que esta forma de comunicación es la más parecida a la que experimentan los programadores cuando escriben sus programas. Dan una serie de instrucciones a la computadora y no saben qué efecto tendrán sino hasta después. Independientemente de qué lenguaje se esté utilizando, un programador debe ser suficientemente hábil para especificar exactamente lo que quieren que haga la computadora. A diferencia de los humanos, una computadora sigue las instrucciones de manera literal, incluso si éstas no tienen mucho sentido.

11 de agosto de 2010

Iniciando un nuevo semestre

El lunes pasado comenzamos el semestre correspondiente al periodo agosto-diciembre 2010. Algo que vale la pena comentar aquí es que estaré enseñando el curso de Fundamentos de programación para los alumnos de primer semestre de la licenciatura en arte y animación digital (LAD).


Junto con la profesora Ma. Elena Melón Jareda, quien tiene este semestre el otro grupo de Fundamentos de LAD, estaremos enseñando el lenguaje de programación Python usando el enfoque de media computation basándonos en el libro de texto titulado "Introduction to Computing and Programming in Python: A Multimedia Approach" escrito por Mark Guzdial y Barbara Ericson.


El enfoque de media computation busca enseñar computación a través de la manipulación y generación de medios digitales, tales como imágenes, sonido, video y páginas web. Mi intención es ir documentando en este espacio las experiencias que vayamos teniendo en clase.

Esta es la primera vez que enseño a alumnos de un área artística. Esta es también la primera vez, en mis 22 años de experiencia docente, en la que tengo un grupo conformado principalmente por mujeres. Otra cosa que pude notar en la primera clase es que muchos de los chicos del grupo son bastante extrovertidos, por lo menos más de que lo estoy acostumbrado con mis alumnos de las carreras de computación. Esto me gusta, al menos por ahora. Anticipo que voy a aprender muchas cosas con este grupo, y creo que será un proceso divertido para todos.

Ligas de interés