an introduction to interactive programming in Python

El pasado mes de Octubre comencé el curso An Introduction to Interactive Programming in Python que la Universidad de Rice ofrece a través de Coursera. El curso es una introducción a la programación con Python basada en el desarrollo de juegos sencillos. De las 9 semanas que dura el curso conseguí llegar hasta la semana 7, y tuve que abandonar en ese punto el curso por falta de tiempo.

Como valoración global el curso me ha encantado. No soy un novato programando, pero mis conocimientos de Python eran muy superficiales. Con este curso los he mejorado, y sobre todo me he divertido. Hacía años que no disfrutaba tanto con un curso de programación, y esto ha sido posible gracias al enfoque del curso, que consiste en módulos semanales donde se explica lo necesario para que el alumno pueda realizar un pequeño proyecto de programación. De esta manera se consigue una alta motivación pues el alumno va viendo sus progresos semanalmente. Los proyectos son programas de dificultad baja o media, que se pueden completar con menos de 200 lineas de código, y que están detallados con procedimientos paso a paso que minimizan las dificultades de realización de los mismos. El único inconveniente es el idioma, a veces me costó entender qué tenía que hacer pero más por dificultades con el inglés que por la complejidad de la tarea a realizar.

Para el desarrollo del curso se utiliza la herramienta CodeSkulptor, que es un intérprete Python que se ejecuta en una ventana de navegador web, con lo que el alumno no tiene que instalar nada en su PC para seguir el curso. Además se utiliza un modulo llamado SimpleGUI que se ejecuta internamente en CodeSkulptor y que ofrece la posibilidad de realizar aplicaciones interactivas de manera sencilla. Este módulo es sencillo pero las posibilidades que ofrece para desarrollar aplicaciones gráficas sencillas son enormes.

Como dije antes, el curso está organizado por bloques semanales, cada uno con una serie de videos explicativos, ejercicios y un miniproyecto que se debe entregar puntualmente. El contenido de las 7 primeras semanas del curso fue el siguiente:

  1. Comentarios, literales, expresiones aritméticas, operadores, variables. Miniproyecto: ‘Queremos un shrubbery!’
  2. Funciones, indentación, expresiones aritméticas, módulos, expresiones y operadores lógicos, instrucciones condicionales. Miniproyecto: ‘Piedra, papel, tijera, lagarto, spock’.
  3. Programación dirigida por eventos, variables locales y globales, SimpleGUI, botones, campos de entrada. Miniproyecto: ‘Adivina el número’.
  4. Canvas y dibujo, operaciones con cadenas, dibujo de texto, timers. Miniproyecto: ‘Parar el cronómetro’.
  5. Listas, puntos y vectores, distancias, colisiones y reflexiones, eventos de teclado, control de posición, control de velocidad, datos mutables e inmutables. Miniproyecto: ‘Pong’.
  6. Eventos de ratón, métodos de listas, iteración, diccionarios, carga y dibujo de imágenes. Miniproyecto: ‘Memory’.
  7. Objetos y clases, trabajar con objetos, imágenes troceadas. Miniproyecto: ‘Blackjack’.

De las dos últimas semanas, lo único que se es que el juego a desarrollar era una versión simplificada del juego clásico de asteroides, y me dio mucha pena abandonar el curso en ese punto.

Para poder hacer los proyectos en mi PC sin tener que usar CodeSkulptor me instalé, aparte del intérprete de Python, las librerías PyGame y SimpleGUICS2PyGame. Esta última es una implementación de la versión de SimpleGUI que usa CodeSkulptor en local. Algunos de los programas que he realizado son los siguientes:

  • Parar el cronómetro, hecho con 83 lineas de código.
  • Pong, hecho con 138 lineas de código.
  • Memory, hecho con 82 lineas de código.
  • Blackjack, hecho con 220 lineas de código.

Mi recomendación del curso es total, tanto para programadores que quieran comenzar con Python como para novatos en la disciplina. El curso está muy bien desarrollado, mantiene la motivación del alumno y permite aprender los fundamentos del lenguaje de una manera muy divertida. El curso te deja con ganas de aprender más sobre Python y de usar lo aprendido para hacerte tus propios programas, como este ahorcado que he hecho con 78 lineas de código. Python es un lenguaje impresionante.

8 comentarios en «an introduction to interactive programming in Python»

  1. Jose Luis,

    Gracias por el artículo.
    Me sorprende cómo en pocas lineas se puede hacer mucho. Supongo que son las librerias especializadas en games.
    En mi caso, hace un año tuve que hacer unas aplicaciones para Android y ya sabes… estuve peleando con Eclipse, empezando con Java…. por suerte encontré una herramienta que me sacó del atolladero.

    Por cierto… ¿ por qué elegiste Python ? ¿ Por la web ? ¿ qué piensas de Java ?

    Gracias por compartir tus experiencias

    Responder
  2. Hola,

    Elegí Python porque siempre tuve curiosidad a causa de mi amigo Jaime Irurzun, que siempre me dijo que era un lenguaje endiabladamente potente. Es la verdad, el lenguaje vale para todo. Y también porque puedes programar a la vieja usanza, con un editor en vez de un IDE.

    Yo también comencé con Java y fue un desastre. Hay gente con la que no te llevas bien y lenguajes que no soportas, y Java para mi es uno de esos lenguajes. No lo soporto. En cambio Python me ha conquistado. El curso que menciono se repite creo que todos los años, apúntate a Coursera y inscribes en el curso y ellos te avisan en la próxima edición.

    Y me ha llamado la atención lo que dices de la herramienta para programar en Android. ¿ Qué es lo que usas ? Porque yo estaba por comenzar con Kivy – http://kivy.org/

    Saludos,

    Responder
  3. José Luis,

    Qué bueno eso de «la gente con la que no te llevas»… es verdad… uno lo intenta, pero nada, que no sale… lo mejor dejarlo… igual que el Java…

    Para el tema de Android yo uso el basic4android (b4a)
    http://www.basic4ppc.com/index2.html?utm_expid=3615947-4&utm_referrer=http{72666422441995bc206cebb09a3b9c56aa12b76eccf4cf2e7f1cb3f90410eb4e}3A{72666422441995bc206cebb09a3b9c56aa12b76eccf4cf2e7f1cb3f90410eb4e}2F{72666422441995bc206cebb09a3b9c56aa12b76eccf4cf2e7f1cb3f90410eb4e}2Fwww.basic4ppc.com{72666422441995bc206cebb09a3b9c56aa12b76eccf4cf2e7f1cb3f90410eb4e}2Findex2.html

    En poco tiempo, 20 dias, ya tenia mi primer programa que «hacia sus cosas».
    Pros: Grandisima comunidad de usuarios, foro spanish, muchisimas clases y aportes, gran soporte, precio del producto barato, foro muy bien ordenado con muchas ayudas.
    Contras: La sintaxis del lenguaje es como el Visual Basic

    No conocia Kivy, te doy mi opinión, aunque no me la has pedido ;-), después de ver más o menos lo que es. Los productos multiplataforma, me da la sensación que son como el refrán «el que mucho abarca poco aprienta». Me explico: Android tiene muchísimas especificidades y me parece muy difícil que un lenguaje cross platform pueda tenerlas en cuenta y hacer uso de ellas. Antes de decantarme por b4a estuve viendo otro lenguaje, del estilo de Kivy, no me acuerdo como se llamaba, también multiplataforma, aunque «propietario», y no lo probé por los argumentos que antes te he dado.

    Saludos

    Responder
    • No conocía b4a, le daré un vistazo a ver que tal. Lo que pasa es que no tengo claro que vaya a meterme en el tema de programación para tablets. Ha llegado un momento en que la programación para mi es una diversión, y con FWH me divierto mucho, con Python también, pero no tengo claro meterme en el desarrollo serio para otra plataforma. Eso lleva mucho tiempo y eso es algo de lo que ando escaso.

      Saludos,

      Responder
  4. Buenas,

    un gustazo encontrar gente que hace o ha hecho lo mismo que tu, yo empece este curso y ahora mismo estoy haciendo el miniproject de Memory, soy noob en el tema pero tengo interés por hacer funcionar los programas localmente y vía web, si puedes guíarme un poco te lo agradecería. 😉

    un saludo!

    Responder
  5. Hola
    Muy buen articulo, soy bastante novato con esto de la programación, pero con muchas ganas de aprender,
    te comento, yo también estoy comenzando el curso de introducción a python de coursera, y bueno de casualidad llegue a tu articulo, y pues en realidad lo de el codeskultor esta muy bueno, pero me gustaria poder correr los programas de forma local en mi maquina, en tu articulo dices que lo hiciste con el intérprete de Python, las librerías PyGame y SimpleGUICS2PyGame.
    Así que me e animado a intentarlo, pero aun no logro correr los programas.

    Tengo una maquina windows 8.1/32Bits.
    instale el interprete de python 3.4.3 correctamente, luego la librería pygame-1.9.2 para 32 bit para windows, hasta ahí todo bien,mi duda surge con el SimpleGUICS2Pygame, me disculpo de antemano si digo alguna tontería como dije anteriormente son bastante novato, pero con el SimpleGUICS2Pygame, no se exactamente que debo descargar y como debo instalarlo.y como hacer para ejecutar los programas.

    Tal ves podrías ayudarme, como lo hiciste, me gustaria poder correr los ejemplos que están en el curso en mi maquina, si pudieras hacer unas capturas paso a paso de como hacerlo, te lo agradecería mucho.

    Gracias.

    Responder
  6. Hola Juan,
    creo que para SimpleGUICS2Pygame lo que hice fue descargarme los fuentes y copiarlo en la misma carpeta que estaba PyGame. La verdad es que no lo recuerdo exactamente porque formatee el ordenador, pero creo que fue así. Una vez lo descargues tienes que incluir esta linea en tu código:
    import SimpleGUICS2Pygame.simpleguics2pygame as simplegui
    y listo.

    Saludos,

    Responder

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.