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.

 

Metamodelización en Fiuba

Mañana martes 9 de Noviembre voy a dar una clase en Fiuba en el contexto de Algo3. El tema central de la misma será metamoldelización, una temática a la que durante los cuattrimestres anteriores pasó casi inadvertida. Es la primera vez que voy explicar este tema formalmente y por ello me siento un poco….intrigado respecto de como me pueda salir.

Para los interesados la cita es mañana a las 19 hs en Fiuba.

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.

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.

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.