Informática en la UNLP

La semana pasada estuve por ciertas cuestiones personales en las instalaciones de la Universidad Nacional de La Plata, particularmente en la Facultad de Informática. Y he aquí la primera cuestión a destacar: en la gran mayoría de las universidades argentinas las carreras de informática/computación pertenecen a las facultades de ciencias exactas o ingeniería, pero aquí tienen una facultad de informática. Esta facultad ofrece 4 carreras de grado:

  • Analista programador universitario: carrera corta de 3 años (al menos en el plan de estudio, ja!)
  • Licenciatura en informática: enfocada en cuestiones más científicas
  • Licenciatura en sistemas: enfocada en sistemas de información e ingeniería de software
  • Ingeniería en computación: de perfil mixto software + hardware

Por lo que vi también tiene una interesante oferta de carreras de posgrado constituida por 4 especializaciones, 4 masters y un doctorado en ciencias informáticas. Por último me lleve una muy buena impresión de las instalaciones, el edificio parece muy nuevo, está en muy buenas condiciones y la ubicación es ideal: a metros del bosque pero no muy distante del centro de la ciudad.

Update: la carrera de Analista, no es de grado porque su duración es inferior a 4 años.

Comienzo de clases en Algo3

Ya van dos semanas de clases y el cuatrimestre pinta muy prometedor. Para este cuatrimestre el equipo docente del curso 1 está conformado por: Pablo, GabiF, GabiD, Victoria y quien escribe.

La clase 1 la comenzamos haciendo la dinámica de la telaraña, haciendo que cada uno se presente diciendo: nombre, materias que cursa en el cuatrimestre y lenguajes de programación que sabe (obviamente los docentes también nos presentamos). Luego de eso, Pablo hizo la tradicional presentación de la material, comentado la dinámica de las clases, el régimen de cursada y las herramientas de trabajo (página web, lista de correo, etc). Finalmente cerramos la clase con la introducción a Smalltalk (Pharo, para ser más precisos) y la presentación del TP0.

La clase 2 comenzó con una breve explicación de algunas particularidades de Pharo y luego estuvo enfocada en el juego de rol de la máquina de café. Este juego tiene como objetivo entender que los objetos cumplen su objetivo a partir del envio de mensajes a otros objetos. Gabriel se encargó de  facilitar la dinámica del juego que duró unos 25 minutos. Para incentivar la participación de los alumnos (ya que el juego requiere de 7 alumnos) decidimos presentar la «lista de alumnos participativos», la idea es que en esta lista anotamos a los alumnos que participan en las clases y a la hora de definir las notas, aquellos alumnos participativos obtiene una consideración especial (puntualmente si la nota es decimal, la redondeamos directamente hacia arriba: si la nota es 6.1, automáticamente es redondeada a 7). A grandes rasgos el juego consiste en que cada alumno participante representa un objeto y como tal, recibe mensajes y tiene que colaborar con otros objetos (enviando mensajes, claro está) para responder a los mensajes recibidos.Luego del juego decidimos codificar en Smalltalk cada una de clases involucradas, para lo cual pedimos otros tantos alumnos volutarios. Esto nos una hora y media, ya que durante la codificación surgieron algunas dudas de diseño  que promovieron el debate. En paralelo a todo esto, el resto del equipo docente corregia los TP0. Al final de la clase entregamos TODOS los trabajos corregidos, excelente!.

Realmente estoy muy contento con el nivel de participación de los alumnos, si sigue así, creo que vamos a tener clases muy entretenidas.

Técnicas para enseñar programación

Hace ya un largo tiempo que vengo leyendo sobre algunas dinámicas interactivas de programación como los coding dojos, pero recien hace un par de semanas tuve la oportunidad de particitar en uno. Dicha actividad se desarrolló en el contexto de los encuentros mensuales de la comunidad ágil de Buenos Aires y estuvo coordinado por Adrian Eidelman (pueden ver el video en code&&beyond). La actividad me resultó muy amena y me ayudó a confirmar una sospecha que tenia: definitivamente este tipo de dinámicas son una excelente herramienta para a enseñar a programar. Es por esto que voy a intentar incoporarlas a las materias que voy a dictar este cuatrimestre.

La técnica del dojo viene del mundo de las artes marciales, donde los practicantes suelen realizar ejercicios/movimientos en forma repetiva para dominar plenamente una técnica. Esta situación es fácilmente extrapolable a cualquier otra disciplina deportiva: todo deportista profesional mejora en base al entrenamiento. ¿cómo podríamos entonces llevar esta idea al ámbito del software? Si lo pensamos con detenimiento en general los programadores nos entrenamos dentro de los proyectos, es como si un futbolista no entrenara durante la semana y fuera directamente al partido el domingo . Alguien podría argumentar que en realidad los programadores nos entrenamos cuando estudiamos, pero en realidad eso seria como la etapa en la que un futbolista aprende las reglas del deporte y la técnica básica para patear un balón o en el caso de un arquero como armar la barrera para un tiro libre.

Un coding dojo es una reunión en la que programadores se juntan para trabajar en un desafio de programación, en cierto modo podria decirse que es un equivalente al entrenamiento de un deportista. Existen diversas variaciones en la dinámica, una llamada randori, consiste en trabajar  con una única computadora y un proyector, la solución es implementada  por pares de programadores que van rotando por la máquina según algún criterio predefinido (porque ejemplo cada 7 minutos).

Otra variante del dojo es la denominada  kata, en la cual un programador toma la máquina conectada al proyector y resuelve el desafio mientras los otro programadores lo observan atentamente  preguntando cualquier detalle que no les quede claro. Una vez finalizado, una programador de la audiencia toma la máquina y repitiendo los pasos previamente observados resuelve nuevamente el desafio comenzando desde cero.

Este post de Code&Beyond tiene varios recursos al respecto de esta técnica y explica la idea con más profundidad. También pueden leer este post de Dave Thomas, uno de los principales responsable de la popularización de esta dinámica.

Espero lo disfruten y prometo en un futuro compatir los resultados de la aplicación de esto en mi ámbito académico.

Sobre la plataforma para materias de programación: nuestra implementación

Hace un tiempo publiqué en este mismo blog una propuesta de trabajo profesional sobre una plataforma para materias de programación. A próposito de la misma me contactaron varias personas, no con la intención de hacer un trabajo profesional sobre esa temática (lo cual era mi intención al publicar el post) sino con la intención de ayudarme a resolver la problemática planteada. Por suerte en el caso de algo3 tenemos resulta casi toda la problemática, de todas formas agradezco a todos aquellos que me contactaron y voy a intentar reunirme con cada uno de ellos para compartir experiencias y ver de enriquecer la plataforma.

Bien, hechas las aclaraciones preliminares, en las siguientes líneas voy a describir sintéticamente como es que hemos resuelto la problemática planteada en el post original.

  • Website: está hosteado en Fiuba. Es un sitio estático, nada de scripts server-side, solo html+js+css. Las actualizaciones las realizamos manualmente vía FTP. Recientemente agregamos un control jquery que muestra las publicaciones de nuestra cuenta de twitter (@algo3fiuba).
  • Listas de correo: este servicio también es provisto por Fiuba.
  • Repositorio: este componente lo tenemos implementado con uno de los tantos servicios disponibles en la actualidad en internet. En particular lo que tiene ver con el framework que proveemos a los alumnos (titiritero) está hosteado en Google Code, que adicionalmente al SVN brinda un issue tracker y una wiki. Para el uso interno de la cátedra (acceso privado) usamos Assembla. En cuanto a los alumnos, para el desarrollo de sus trabajos les recomendamos el uso de GoogleCode o similar.
  • En cuanto al listado de alumnos y su seguimento a lo largo de la cursada, usamos una hoja de cálculo.
  • En cuanto al build server, la herramienta que utilizamos en la actualidad es TeamCity. Inicialmente hosteado en un servidor personal y desde hace aproximadamente un mes, hosteado por los amigos de CodeBetter que brindan el servicio gratuitamente para proyectos open source.

Desde el punto de vista de los alumnos creo que esta plataforma está excelente. Desde el punto de vista del equipo docente, la principal falencia es la falta de integración entre los distintos componentes de la plataforma: para cada una de uno de estos componentes tenemos credenciales de acceso distintas.

Propuesta de trabajo profesional: plataforma de identidad unificada

En primer lugar debo dar parte de los créditos por esta idea a SebaD y FedeBo, gracias muchachos!

Esta es una problemática muy común de las organizaciones en la actualidad y como tal es una temática excelente para un trabajo profesional. Voy a dar una idea abstracta de muy alto nivel.

Sin ir más lejos tomemos como organización ejemplo la misma Fiuba y paremonos en el lugar del alumno. Como alumnos utilizamos varios sistemas provistos por la facultad como por ejemplo: el correo eletrónico (@fi.uba.ar), el sistema de inscripción a materias, y el repositorio personal (FTP). Para cada uno de estos sistemas, cada alumno tiene credenciales de acceso distintas.

Bien, la idea del trabajo es resolver esta problemática de manera tal que los alumnos puedan usar las mismas credenciales para acceder a los N sistemas de la facultad y contar con una expeciencia de Single sign-on. Obviamente la solución debería hacer de algunos de los procolos existentes para dicha problemática.

Si bien mi ejemplo está basado en Fiuba el mismo aplica a cualquier organización.

En cuanto al alcance del trabajo, debería contemplarse:

  • Desarrollo de la solución
    • Análisis de la problemática
    • Estudio de posibles soluciones y tecnologias disponibles
    • Diseño de la solución
    • Construcción de la solución
  • Puesta en marcha
    • Guia de despligue (y despliegue propiamente dicho, de ser posible)
    • Plan de migración y comunicación a usuarios
    • Plan de backup
    • Guia para la integración de nuevas aplicaciones
    • Guia de operaciones

Como siempre, si hay algún interesado contacteme por mail y los charlamos con mayor detalle.

Propuesta de trabajo profesional: plataforma para materias de programación

En estos últimos dias he estado trabajando con la infraestructura de Algo3. Actualmente esta infraestructura está constituida por un conjunto de herramientas online “atadas con alambre”. Esto me parece constituye una interesante oportunidad para aquellos alumnos de Fiuba en busca de un tema de trabajo profesional. A continuación voy a describir la visión de lo que como docente que gustaría tener como infraestructura.

En primer lugar un aclaración de criterio: como docente mi objetivo es que los alumnos aprendan y para ello suelo hacer uso de todas las herramientas que tengo a mi alcance. Hecha esta aclaración, comencemos con algunos requerimientos de muy alto nivel:

  • Quiero contar con un website al que se acceda desde el website de la facultad con la url estándar para materias. Esto responde a una cuestion de imagen institucional. Quiero que el website muestre las últimas entradas de twiteer de la cuenta de la materia.
  • Quiero contar con un sistema de versionamiento que me permita administrar todo el contenido que vamos generando en la cátedra mientras lo vamos generando (siendo directo quiero un SVN o similar con acceso solo para docentes).
  • Quiero contar con un builder server que me permita implementar integración continua con código almacenado en distintos repositorios.
  • Quiero contar con una lista de correo para los alumnos
  • Quiero contar con una lista de correo para los docentes
  • Quiero una aplicación para administrar las notas de los alumnos a lo largo del cuatrismestre.
  • Por último quiero una aplicación para poder administrar en forma unificada todo lo anteriormente mencionado.

Ahora algunos requerimientos a nivel de implementación.

  • No es necesario que todo esto sea construido, pueden utilizarse aplicaciones existentes, pero deben ser de uso gratuito.
  • En caso de construirse algo, debe ser bajo licencia open source
  • El acceso al sistema unificado debe funcionar con federando con alguno de los protocolos existentes (SAML, OpenID, etc)
  • Toda la información manejada por el sistema debe guardarse históricamente de manera de poder acceder en línea al menos a registros de 5 cuatrimestres anteriores.

Bueno, creo que esto está bien como idea preliminar. Algunos de los puntos mencionados ya cuentan con una implementación provista por la facultad y tal vez algunos otros también puedan ser provistos por la facultad, pero desconozco si actualmente si Fiuba tiene la posibilidad de brindarlos. Una aclaración más: nada de esto está validado formalmente con las autoridades de la facultad, es solo una idea mia que me parece puede resultar interesante.

Si hay algún interesado no dude en contactarme.

Recibirse de Ingeniero en Informática en UBA

Nota prelimiar: por estos diás se está trabajando en FIUBA sobre los planes de estudio de esta carrera, con lo cual es posible que lo que estoy escribiendo en este momento ya no aplique en un par de años, pero hoy por hoy es vigente.

La carrera está basada en un sistema de créditos, para recibirse hay que juntar una cierta cantidad de créditos, lo cuales pueden conseguirse mediante distinto tipo de actividades (el plan de estudio eespecifica la cantidad máxima y mínima de créditos que pueden conseguirse por cada tipo de actividad):

  • Aprobación de materias: esta es principal fuentes de créditos. En general cada materia otorga una cantidad de créditos equivalente a la carga horaria semanal de la materia.
  • Actividades especiales: bajo este nombré genérico entran varias cosas, por ejemplo: si uno es docente colaborador en un materia, podria pedir que le otorguen créditos por ello. Lo mismo si uno realiza algún curso extracurricular. Cuales son las actividades que otorgan créditos y la cantidad de créditos reconocidos es una decisión que pasa por la comisión curricular de la carrera. En este sentido es muy común que se reconozcan créditos por los curso de la ECI.
  • Trabajo final: el último paquete de créditos se consigue con la realización de un trabajo final que puede ser una tesis o un trabajo profesional.

El resto de este post lo voy a dedicar a esta última fuente de créditos y para comenzar voy a explicar algunas particularidades de cada tipo de trabajo.

  • Tesis: es un trabajo de investigación, pero dado que estamos hablando de una carrera de grado, no se espera que esta tesis expanda la barrera de conocimiento. Y considerando que estamos hablando de una tesis de ingeniería, una tema podria ser analizar diferentes técnicas para resolver un problema o bien intentar resolver un problema utilizando una técnica X que si bien existia, no habia sido aplicada a dicho problema. En FIUBA las tesis son individuales. Cada alumno trabaja con un director y al finalizar, la tesis es evaluada por un jurado de profesores. Las tesis otorgan 24 créditos.
  • Trabajo profesional: es un trabajo tipo que cualquier ingeniero podria realizar durante su vida profesional, caso típico en FIUBA es la construcción de una aplicación. Los trabajos profesionales también se realizan bajo la dirección de un profesor, pero a diferencia de las tesis, es el mismo profesor director quien evalua el trabajo. Otra diferencia con las tesis es que estos trabajos pueden realizarse en formal grupal. Estos trabajos otorgan 12 créditos, lo cual implica que aquellos alumnos que realizan trabajo profesional deben conseguir 12 creditos más mediante algunas otras actividades y/o materias.

Más allá de estas particularidades, hay varias cuestiones en común:

  • Son los propios alumnos quienes debe ocuparse de conseguir su director, o sea, la facultad no provee ninguna materia que le de contexto al trabajo final (cosa que si ocurre en algunas otras carreras de la facultad). En ocasiones los profesores tiene ideas para trabajos, pero en la mayoria de los casos, los alumnos trabajan la idea y luego buscan un profesor que esté interesado en dirigirla. Si bien el director debe ser un profesor, los JTP y ayudantes de primera pueden ser co-directores.
  • Todos los trabajos finales deben ser aprobados por la comisión curricular, por lo cual cada alumno debe presentar un propuesta de trabajo describiendo el trabajo a realizar para que la mencionada comisión apruebe dicho la realización de dicho trabajo.
  • El plazo para completar el trabajo es de UN año a partir del momento de la aprobación de la propuesta por parte de la comisión curricular.
  • Informalmente suele decirse que en muchos casos, dependiendo de como se plantee la propuesta, un mismo tema puede ser objeto de tesis o de trabajo profesional.

En futuros post, voy a escribir sobre algunos temas de tesis/trabajo profesional que tengo en mente.

[Algo3] Restrospectiva 2010-2

El jueves pasado fue la última clase de algoritmos 3 y como es costumbre desde hace ya un par de cuatrimestres, hicimos una retrospectiva con los alumnos. Comenzamos la actividad con una dinámica para romper el hielo y así facilitar la participación de los alumnos en la retrospectiva. Para la retro utilizamos la dinámica del timeline para identificar los temas y sucesos más relevantes, luego trabajamos en debatir al respecto y intentar identificar soluciones.

Los alumnos estuvieron muy participativos, hubo mas de 110 post-its.

Entre los puntos positivos se destacaron:

  • «Felicidad» con Smalltalk, jajajja, varios destacon como positivo haber aprendido varios lenguajes y en particular Smalltalk. Incluso alguno dijo haberse quedado con ganas de más Smalltalk.
  • Prácticas de ingenieria: varios mencionaron como muy útil/entretenido  el hecho de aprender y utilizar técnicas como TDD y herramientas como SVN, ANT, etc
  • La relevancia de los temas vistos en la materia, pues todo les parecio muy útil y aplicable en la vida real

Por otro lado entre los puntos conflitivos encontramos:

  • Falta de tiempo en los examenes
  • Falta de soporte en las herramientas
  • Inestabilidad de Pharo: ja! no puedo no hace un comentario sobre esto, es cierto puede que Pharo esté un poco inestable pero es un entorno muy abierto y todos podemos colaborar y tiene una comunidad muy activa en su desarrollo, cosa que no es tan común en otros ambientes.
  • Clases prácticas dificiles de seguir: en ocasiones de tornaban densas, sobre todo la parte de escritura de código
  • La clase teórica de generics fue densa y no se terminó de entender el tema
  • Poca disponibilidad de algunos docentes para consultas de parciales / TPs
  • Las lecturas en inglés siguen siendo un obstáculo para algunos alumnos

A pesar de que he mencionado más puntos negativos que positivos, mi balance es positivo pues no importa la cantidad de puntos sino el peso de cada uno. Al mismo tiempo creo que muchos los puntos negativos son de «fácil» solución.

Les dejo algunas fotos de la actividad.

Si alguien cree que me olvidé de algo, no duden en agregarlo como comentario.

 

ExpoUBA 2010

Con motivo del Bicentenario se lleva a cabo este evento, del 30 de septiembre al 2 de octubre en las instalaciones del predio ferial de Palermo (lugar más conocido como «La Rural»).

La exposición abre las puertas de la Universidad Buenos Aires presentando no solo toda su oferta académica sino también las demás actividades y puntos de contacto con la sociedad. Para mi info del evento pueden visitar el sitio oficial.

Y ya que estoy, comparto algunos datos sobre esta casa de estudios:

Actualmente la universidad cuenta con 13 facultades: Derecho, Ciencias Economicas, Ciencias Exactas y Naturales, Filosofia y Letras, Agronomia, Medicina, Ingenieria, Arquitectura, diseño y urbanismo, Psicologia, Ciencias Sociales, Veterinaria, Farmacia y Bioquimica, Odontologia.

Según el censo de 2004, la universidad cuenta 297.639 estudiantes y las facultades con más alumnos son Económicas (44 mil) y Derecho (31 mil).

Un dato interesante para destacar es que los 5 argentinos ganadores del premio Nobel pasaron por la UBA.

Y ya estoy, remato con unos datos de Fiuba (también según el censo de 2004). La cantidad de alumnos es 9621 de los caules el 82,6% son de sexo masculino. Las carreras con más alumnos son informática (23,9%), industrial (22%), electrónica (15,8%) y lic. en análisis de sistemas (13,8%).

Para quienes quieran más datos les recomiendo en primer lugar asistir a la expo y segundo lugar dar una mirada el censo que se encuentra publicado en la página del a UBA.

Presentando en ESUG 2010

En un par de horas (9 hs. ARG ) tengo voy a dar sesión en ESUG 2010. En dicha sesión voy a presentar la forma en que estamos enseñando Programación orientada a objetos en FIUBA. En cierto punto la sesión es un update de la sesión que dimos con Carlos en Smalltalk 2009, pero encarada desde otro punto. Se sesión será transmitida online (al igual que toda la conferencia) en esta dirección: http://eventv.projectescitilab.eu/index.html.

Dado que desde hace un tiempo he adoptado Linux como plataforma principal (si, una vez más y tengo un post pendiente al respecto) y no tengo Power Point disponible, me pareció una buena oportunidad para usar una nueva herramienta para hacer la presentación. Prezi.

Otro condimento interesante es que la presentación será en inglés.

Deseenme suerte y veremos que sale.