Nuevo proyecto

Esta semana empecé a trabajar en el proyecto que me va entretener durante los próximos 3 meses. En forma resumida voy a estar trabajando junto al equipo de investigación RMod del Inria, experimentando con algunas ideas para optimizar el proceso bootstrap de Pharo.

Durante esta primer semana de proyecto estuve haciendo algunos ejercicios para familiarizarme con el metamodelo de objetos y alinearme con la vision que el equipo tiene sobre la problemática a resolver. Ha sido una semana de pleno aprendizaje, pues el conocimiento que tengo de Smalltalk es desde el punto de vista del usuario y como tal nunca tuve la necesidad de trabajar a bajo nivel. Un punto interesante es que a pesar de estar trabajando a bajo nivel (estoy trabajando directamente en el kernel) sigo trabajando con código Smalltalk, dado que el trabajo es dentro de la imagen y no a nivel de máquina virtual (lo que implicaria trabajar con C).

No estoy seguro si lo mencioné en algún post anterior (me parece que no), pero para realizar este trabajo me transladé a Lille, una ciudad en el norte de Francia que según los locales, es la sexta ciudad en importancia de Francia y la segunda en cuanto a cantidad de estudiantes (no si esto será efectivamente así, pero es en verdad sorprendente la cantidad de residencias para estudiantes que hay a lo largo de la ciudad). Obviamente como podrán imaginarse intentaré aprovechar mi estadia para conocer las ciudades aledañas dado que aquí en Europa todo está cerca.

Para ir cerrando les dejo aquí algunas fotos que tomé ayer a la pasada mientras caminaba por el centro de la ciudad.

Programa de tutorias en UnTreF

Hace un par de semanas estuvimos junto con DiegoF y MarianoT coordinando un encuentro con alumnos de los primeros años de la carrera de ingeniería en computación de la Untref. El encuentro fue en contexto del programa de tutorias. La cite fue a las 19 hs y comenzamos actividad con algunas actividades típicas para romper el hielo. En este sentido no dejo de asombrarmo como se suelta la gente (particularmente los hombres) al hablar de futbol. Digo esto porque una de las cosas que hicimos para presentarnos fue, sentados en ronda, decir nuestro nombre, contar a que altura de la carrera estábamos y decir si Maradona debía seguir o no al frente de la selección. Las opiniones sobre Maradona fueron de lo mas diversas y fue muy divertido.

Una vez hechas las presentaciones hablamos sobre las dificultades que los alumnos habían encontrado durante el primer año de cursada. Todos coincidieron en la gran dificultad que les implicó el cambio de ritmo entre la escuela secundaria y la universidad. Si bien algunos ya habian tenido algunos inconvenientes en el curso de ingreso, aquellos que pasaron el ingreso sin mayores complicanes, luego se vieron complicados al cursar las materias del primer año. Al analizar las causas de las dificultades afrontadas, todos los indicios terminaron acusando a la falta de organización del tiempo de estudio. En realidad creo este término es un poco generico, siento un poco más concreto, resulto ser que las horas de estudio dedicadas al estudio más allá de las horas de cursada era muy poco. En general el tiempo de estudio extra clase dedicado era inferior a 5 horas. Esto resulta ser muy poco considerando que la carga de cursada en general rondaba las 20 horas semanales.

Durante los primeros años de carrera recuerdo que una profesora de matemática me dijo que por cada hora de clase había que dedicar al menos una hora de estudio adicional. Si aplicamos esta heurística al caso en cuestión, los alumnos deberian dedicar unas 20 horas de estudio cuando en realidad se encuentran aplicando alrededor de 5.

Hablando sobre la organización del tiempo, en primer lugar hay que conseguirlo y luego hay que saber administrarlo. Por ejemplo recuerdo que en mis dias de estudiante, yo organizaba mi tiempo de estudio en slots de 2 horas máximo, pues me resultaba imposible mantener las concentración por más de 2 horas seguidas.

Tanto Diego como Mariano también aportaron sus consejos para organizar el tiempo de estudio y algunos otros consejos generales para «sobrevivir» en la universidad.

A pesar de ejercer la docencia desde hace ya varios años, creo que esta fue la primera vez que compartí explícitamente con alumnos mis técnicas de estudio y fue una experiencia muy gratificante.

Espero que a los alumnos les haya resultado el encuentro.

Cierre del cuatrimestre

Ha pasado demasiado tiempo para mi gusto desde mi último post. Resulta que estas últimas semanas he estado muy atareado debido principalmente a dos cuestiones: 1) el cierre del cuatrimestre y 2) la planificación de mi actividades de la segunda mitad del año. El resto de este post lo dedicaré al punto 1 mientras que al punto 2 le voy a dedicar otro post exclusivo.

Respecto del cierre del cuatrimestre, al igual que el cuatrimestre pasado cerramos Algoritmos 3 con una retrospectiva precedida por una dinámica para romper el hielo ya que los alumnos de Fiuba no se caracterizan por ser muy participativos. La dinámica inicial consistió en sentarnos en ronda y responder 3 preguntas:

– ¿Cual es tu nombre?

– ¿En que posición crees que terminará Argentina en el mundial de fútbol?

– Una frase que resuma lo que te dejó o lo que sentiste durante la materia

Luego de esta ronda introductoria, dividimos el pizaron en 2 mitades e invitamos a los alumnos a pegar post-it con las cosas positivas y negativas del curso. Cada uno que tenia algo para compartir debia ponerse de pie relatar su comentario y finalmente poner el post-it en el pizarron. Para mi sorpresa los alumnos estuvieron mucho más participativos que de costumbre. Los puntos a descartar surgidos de la actividad fueron:

  • Aspectos Positivos
    • Más allá de que requirió en cierto modo un trabajo adicional estuvo muy bueno trabajar con Smalltalk y Java
    • El ver Smalltalk antes que Java facilitó el entendimiento del POO
    • Las clases con proyector resultan muy convenientes  pues permiten una mejor dinámica lo mismo que el hecho de contar con las diapositivas impresas antes de clase.
    • Muy bien el equipo docente
    • Si bien las lecturas en inglés resultan más complejas, el contenido de las mismas está alineado con los temas que se ven en clase
  • Aspectos negativos
    • El material de las clases prácticas en general no estuvo disponible en tiempo y formal. Seria muy apropiado que el materia esté disponible antes de la clase como ocurre con el material de las teóricas.
    • Hubo poco soporte de herramientas cuando se trabajó con Java. Habría sido interesante trabajar en el lab con SVN, Eclipse y ANT.

Analizando los puntos negativos, creo que la raiz de los mismo tiene que ver con una cuestión de organización la cual se ve perjudicada por el hecho de estar modificando la materia todos los cuatrismestres.

Personalmente estoy muy contento con como salió el cuatrimestre y creo que estamos en condiciones «congelar» los contenidos/dinámica de dictado durante un par cuatrimestre y enfocarnos en mejorar la organización, puntualmente temas de calendario. En otro post voy a comentar como fue el cuatrimetres de Algoritmos 1.

El comprimiso docente-alumno

Hace un par de semanas que el Algo3 empezamos a trabajar en el trabajo práctico final. Para ello les pedimos a  los alumnos que formen grupos y asignamos un docente tutor a cada grupo para guiarlos. El docente tutor juega distintos roles: por momento es líder, por momentos es cliente y por momentos es usuario.

En ocasiones suele ocurrir que los últimos dias antes de la entrega del TP los alumnos se desvelan programando y llegan a la entrega con las cosas no muy estables y con un estado físico que deja mucho que desear. Esto es algo por lo que yo también pasé en mi época de estudiante de FIUBA y es por eso que desde hace un par de cuatrimestre al comenzar el trabajo en el TP grupal tengo una charla bastante profunda con mis grupos para explicar el espíritu de la materia y en base a ello establecer una forma de trabajo ordenada para llegar a la entrega en forma óptima.

Mi objetivo es que al finalizar el TP los alumnos haya aprendido y aplicado los conceptos y herramientas vistas en el transcurso de la materia. A lo largo del desarrollo del TP procuramos trabajar en base a iteraciones semanales buscando el compromiso de trabajar con foco en un entregable de una semana a la otra (dicho entregable no siempre es código, puede que sea el diseño de algún módulo por ejemplo). A lo largo del TP manejamos 2 o 3 entregas formales que serian equivalentes a releases. En general para llegar a un release/entrega hay un trabajo de al menos 3 iteraciones. Como tutor intento que los grupos trabajen de forma fluida de modo de evitar tener una sobrecarga de trabajar sobre la fecha de entrega. Es más, siempre les digo no trabajar durante la noche anterior a la entrega: si la entrega es el jueves, el miércoles a las 22 a más tardar deberían congelar el desarrollo y en todo caso trabajar en detalles de presentación como correcciones ortográficas y cosas de ese estilo.

La cursada debe ser un win-win para el alumno y el docente. Yo como docente quiero que la mayor cantidad de gente posible aprenda lo que enseñamos en la materia, cuanto más aprobados y cuanto mejores las notas mejor es para el equipo docente. Al mismo tiempo, ¿que más quiere el alumno que aprobar las materia y aprender los conceptos de la misma?. De cara a esto es que aliento a los grupos que me escriban mails en caso de dudas en lugar de esperar a la clase presencial. Al mismo tiempo cuando recibo un mail intento contestarlo a la brevedad.

No le veo sentido y no me gusta que mis alumnos lleguen destruidos el dia de entrega. Claro está que si no aparecen en las clases, no mandan mails y pretenden aprobar el TP como paracaidistas voy a ser riguroso en la corrección. Pero al mismo tiempo si demuestran compromiso y los veo trabajar voy a tener una consideración absolutamente distinta, siendo incluso bastante flexible, por creo que no solo el conocimiento cuenta, sino que la actitud y la predisposición también son importantes.

Bueno, estas son algunas de mis ideas sobre la educación, tengo algunas más pero por el momento creo que esto es suficiente.

Visita de Mariano MP

Como ya había adelantado, hace un par de semanas Mariano Martinez Peck estuvo por Buenos Aires participando como invitado especial en la clase de Algortimos 3. La clase estuvo divididaq en dos partes, una primera parte con formato de «entrevista», donde yo en el rol de entrevistador le hice algunas preguntas sobre la experiencia que está haciendo en PhD y una segunda parte donde Mariano explicó metaprogramación en Smalltalk.La visita de Mariano fue muy bien recibida por los alumnos quienes tuvieron una participación bastante más activa que en el promedio de las clases.

Sinceramente me gustaría que todos los cuatrimestres pudieramos contar con la presencia de algún invitado especial en la materia, pues creo que resulta muy enriquecedor para los alumnos.

Comienzo de clases en FIUBA

El pasado lunes 8 de marzo comenzaron las clases en FIUBA. Durante este primer cuatrimestre estoy dictando Algoritmos y Programación 3 (algo3) y Algoritmos y Programación 1 (algo1) en el curso de RositaW.

Personalmente siento que va a ser un cuatrimestre muy movido pues al cabo de tan solo 2 semanas de clases hubo más de 90 mensajes en la lista de Algo3 y mas de 40 en la lista de Algo1. Al mismo tiempo la forma en que están planificada las cursadas de estas materias, requiere una dedicación importante tanto por parte de los alumnos como de los docentes.

Algo1 tiene una carga horaria de 6 horas de clases semanales las cuales estan repartidas en 2 dias, con 90 minutos teoría seguidos de 90 minutos de práctica. Un detalle interesante es que el lenguaje utilizado para el dictado de la materia es Python. Durante la cursada hay 5 parcialitos y 4 trabajos prácticos de realización obligatoria para aprobar la cursada. Una vez aprobada la cursada hay un final con el que se finaliza la materia.

En algo3 la carga horaria de clases también es de 6 horas, pero repartida de otra forma: un día todo teoría y otro dia todo práctica. Durante la cursada hay 2 parciales y 3 trabajos prácticos, los dos primeros son individuales y se hacen en Smalltalk y el tercero es grupal y se hace en Java. Con todo esto se aprueba la cursada y se accede al final.

Continuará….

Retrospectiva con alumnos en Algo 3

El pasado jueves fue la última clase de Algo 3 y nos pareció el momento indicado para hacer una restrospectiva con alumnos. Yo tomé el rol de facilitador. Para la retrospectiva utilizamos la técnica que Diana Larsen utilizó en Agiles2009 y que está explicada en su libro Agile Retrospectives. Muy a grandes rasgos la técnica tiene la siguiente dinámica:

  1. En una pared se traza un timeline (que en nuestro caso representaba el cuatrimestre) y se le pide a los participantes que escriban en post-it los eventos y sensaciones que tuvieron durante los largo del periodo del tiempo en cuestión. Cada post-it se ubica sobre la línea de tiempo considerando su “positividad/negatividad” ubicando más arriba los post-it con referencias a cosas positivas y más abajo los de referencias negativas. Cada participante puede poner varios post-it y no importa que distintos participantes hagan referencia al mismo tema.
  2. Una vez completo el timeline con todos los post-it se pasa a leerlos uno por uno  “clasificándolos” en áreas temáticas.
  3. Cuando se han clasificado todas las historias, se pide a los participantes que voten aquellos temas sobre los quieren trabajar.
  4. Finalmente, los temas más votados son trabajados en mesa redonda. En nuestro caso las áreas más votadas fueron:
    1. Contenido de la materia (16 votos)
    2. Clases prácticas y Trabajos prácticos (12 votos)

Respecto del contenido de la materia los actions items más importantes que sacamos fueron:

    • Reveer la decisión de dar lecturas obligatorias en inglés, pues ha resultado un impedimento muy importante para muchos alumnos.
      • Continuar dando Smalltalk, pero dar más clases prácticas al respecto, pues costó mucho programar el TP Smalltalk.
        • Dar la clase de Scrum antes (en este cuatrimeste fue la última clase). La idea seria darla antes de comenzar con el TP grupal para que puedan utilizarlo al hacer dicho TP.
          • Dar más soporte para el uso de ANT. Este punto no lo comparto, me parece que es una herramienta muy simple y con lo que se dió en clase y un poco de voluntad tiene que ser suficiente para hacer lo que les pedimos.
            • Ajustar la clase de persistencia, pues dejo más interrogantes que respuestas.

              En cuanto a las clases prácticas:

                • Continuar con las clases en el laboratorio
                  • Compartir el diseño del TP con otros grupos para tener una visión distinta.

                    Sin duda al hacer la retrospectiva del con todo el equipo docente tomaremos estos en consideración para el cuatrimestre próximo.

                    Algunas que se mencionaron durante la restrospectiva y que quisiera destacar fueron:

                      • Los alumnos vieron como positivo el hecho de utilizar Smalltalk, pues les permitió tener acercamiento más concreto a la idea de objetos que se comunican enviandose mensajes.
                        • El reconocimiento de los alumnos a la labor del equipo docente, contestando consultas tanto presenciales en las clases como en la lista de correo de la materia.
                          • Les resulto de gran interés la clase sobre tendencias que dimos con Eugenio.

                            Personalmente debo decir que termino el cuatrimestre muy contento pero también bastante agotado, la carga de trabajo de este cuatrimestre fue mucho mayor a la que estábamos acostumbrados. Estoy contento porque creo que el enfoque adoptado permitió a los alumnos aprender mejor los conceptos de la materia y en relación a esto quisiera mencionar un episodio que me ocurrió la semana pasada. Estaba hablando con uno de mis grupos, en un momento les pregunté porque no habían avanzado aún con las clases de interface de usuario y un alumno me contesto: “es que aún nos falta agregar algunas pruebas unitarias para asegurar el correcto funcionamiento del modelo”. Esto no dice cuando aprendieron de objetos, pero si refleja claramente que entendieron la importancia de las pruebas.

                            Me despido con algunas fotos que tomamos durante la retrospectiva.

                            Imagen0039 Imagen0038

                            Imagen0040

                            AOP reloaded

                            El jueves pasado Pablo Cosso me invitó a dar una clase de AOP en su materia en Fiuba. Esto me obligó a desenpolvar mi tesis de AOP y actualizar parte del contenido en base a los avances de los últimos dos años. Mal que me pese el  tema de AOP se ha enfriado muchísimo respecto de los que era hace dos años. Un clara prueba de esto es la actividad de las lista de aosd.net donde la cantidad media de mensajes mensuales no supera los 10 mensajes. El porque de este enfriamiento merece un post aparte que estaré escribiendo próximamente. Más allá de esto, me parece importante mencionar una herramienta para plataforma .NET que se ha convertido en el «análogo» a AspectJ: PostSharp. Esta herramienta ofrece capacidades weaving estático con un modelo de pointcuts basado en anotaciones. Además la herramienta cuenta con una serie de contribuciones que permiten integrarla fácilmente con distintos componentes/herramientas como Spring Framework y EntLib entre otros. La clase duró unos 90 minutos y hacia el final surgieron varias preguntas de parte de la audiencia que parecen indicar que el tema resultó de interés.

                            Quiero agradecer a Pablo por su gentíl invitación.

                            Próximamente más AOP.

                            Saludos!

                            SOA & Cloud computing en Fiuba (completo)

                            Dimos la clase y creo que a los alumnos les resultó entretenido.El título que le dimos a la clase fue: Tendencias en el desarrollo de software. Me parece una buena idea la de hablar sobre tendencias pero sin duda deberemos revisar y actualizar los temas expuestos teniendo mucho cuidado con la profundidad con la que tocamos cada tema.

                            El slide deck utilizado está disponible aquí.

                            SOA & Cloud computing en Fiuba

                            Esta tarde en el contexto de Algo3 y para ir cerrando el cuatrimestre, junto con Eugenio Yolis vamos a estar dando una clase de tendencias y estado del arte del desarrollo del software. Eugenio en particular va a estar centrado en SOA mientras que yo hablaré sobre Cloud computing y temas aledaños.

                            Como siempre las clases son abiertas, asi que gustan pueden pasar por el aula 203 de Paseo Colon (Fiuba) a partir de las 19 hs.

                            Mañana les cuento como salió.