Mas que ser humilde, es difícil sobrarse…

El fin de semana pasado apareció en La Tercera la feliz noticia de que dos universidades chilenas estaban, según un ránking internacional, entre las 150 mejores en la Ingeniería Civil. Junto a éste, existe un ránking de Informática y Ciencias de la Computación en el que… ¡Oh sorpresa! Ninguna universidad latinoamericana aparece entre las 200 mejores. Dediqué un tiempo a buscar ránkings de Ciencias de la Computación y, entre los pocos que ubiqué, la situación no es muy diferente… da como para reflexionar no?

La pregunta va más allá de la metodología del ránking, sino sobre el nivel internacional de nuestra enseñanza. ¿Qué “Ingenieros Civiles” en Computación estamos formando como país? Conozco solo el caso de la Universidad de Chile, por experiencia propia, así que limitaré mi análisis a aquél. Se ha establecido una reforma al currículo de pregrado recientemente con la intención de “actualizar” la carrera, pero me queda la impresión de que solamente la deja menos atrasada. Estar acreditada por 7 años podría ser una buena señal pero hoy, incluso ser “la mejor de Chile” es un objetivo bastante miserable.

Por favor, no digo que las otras universidades chilenas sean malas, cosa que no creo (fuera de que no las conozco). Lo que quiero decir es que el conjunto de comparación es demasiado pequeño. El objetivo de ser top, no permite mejorar la formación que se quiere entregar cuando una universidad ya está entre las mejores. Además, soñar solo con “mantenerse allí” es un simple objetivo administrativo y de márketing, que no le da ningún beneficio ni a los alumnos ni al departamento.

Mejor, comparémonos con el mundo. ¡Sea el ránking de más arriba o cualquier otro! El mejor desafío hoy para el DCC podría consistir en ser el primer departamento latinoamericano en el top 200 mundial. ¿Estamos a la altura de ello? ¿Podemos lograrlo, digamos, en cinco años?

Hay un conjunto de desafíos que podrían ayudar a cumplir con ello. Es cierto, los alumnos no somos ideales y muchas veces nuestro objetivo es terminar la carrera con el menor esfuerzo posible (y en el menor tiempo también). Asimismo, la forma de enseñar afecta (¿Por qué hay tantas clases en que la función de asistencia se parece tanto a 1/t? ¿Realmente vale la pena hacer tantas clases?), pero todos estos son temas a los que no me referiré en el presente artículo.

Quiero hablar de la malla, que hoy es insuficiente. La oferta de electivos es pobre, tanto que aún considerando los electivos adecuados, es hoy imposible satisfacer los contenidos mínimos establecidos por el comité conjunto ACM/IEEE para la licenciatura en ciencias de la computación (falta Inteligencia Artificial (que ya no se dará), Ética (que se dió alguna vez) e Historia (que fácilmente podría darse, dado que hay académicos que dedican parte de su tiempo al área). Véase Appendix A   Overview of the Body of Knowledge) . Para qué hablar de la ingeniería. Existe un programa de “Computing Engineering”, pero en el que los contenidos “eléctricos” (que no se dan en el DCC), ocupan sobre el 40% de los contenidos mínimos. Mi impresión es que en “Software Engineering” la situación, aunque mejor, no es tan distinta.

Conste además, que la reforma a la malla reduce los ramos considerados tradicionalmente “ingenieriles” (como dirían los más viejones, aquellos que te “dan de comer”: SIA, Conta, etc.). Seamos sinceros: No queremos formar “Injenieros”, no nos interesa. Se nos quiere formar como Científicos de la Computación, pues es lo que una buena parte del conjunto académico hace: Cero Ingeniería, pura Ciencia. Las prácticas ingenieriles se agregan a los cursos demasiado tarde, cuando las malas costumbres ya están demasiado arraigadas en los alumnos.

Para corregir esto, el curso de Metodologías (CC3002) es una gran oportunidad, que lamentablemente en los últimos años se perdió al verse enfrentada a lo llamo el “redescenso a los abismos”: aprender patrones de diseño, programación orientada objetos y buenas prácticas de programación, para ser totalmente olvidados en el semestre siguiente programando en C a la manera de los 70s, sin control de versiones, y sin que ningún ramo se hiciera cargo de continuarlas. Estas metodologías deberían permear todos los ramos de la carrera, para formar Ingenieros. Está bien, “hay” que aprender C (los lenguajes son otra discusión). En “el mundo” la fea realidad del software implementado artesanalmente existe, pero debemos tener los elementos para corregirla y no quedarnos sólo con los elementos para sobrevivir con ello y continuar igual…

¿Está mal formarnos así? Hay que discutirlo, pero al menos transforma el título en publicidad engañosa. ¡Entreguemos una licenciatura en ciencias(a secas)! o, por ejemplo, fomentemos más las memorias “en la industria”. En el fondo, tomemos una decisión (al menos discutamos) qué profesionales se espera formar. Ojalá estemos a la altura de sincerar los objetivos del DCC en la próxima década, y que esto se encuentre plasmado, si no se puede remodificar la malla, en la oferta de electivos que se entregan (y en la compatibilidad de sus horarios con el de los estudiantes deseados. Un curso de quinto año que tenga tope con un ramo obligatorio, por excelente que sea, no lo va a tomar nadie. Y esto que puede parecer trivial, pasa mucho más seguido de lo deseable, hasta con los ramos que proponen los alumnos). Yo, personalmente, iría por la formación de Ingenieros para el mundo y el top 200.

(Nota sobre el Título: Referencia a una tradicional polera de los estudiantes de Beaucheff, que dice “Es difícil ser humilde, cuando somos los mejores…”)

Creación de una máquina virtual de Squeak para Pharo 1.0 en Ubuntu Linux 10.04

Requiere: Además de GCC, G++ instalado (apt-get…)

Seguir las instrucciones del blog de Adrian Lienhard en http://www.adrian-lienhard.ch/blog?article=building-a-pharo-squeak-vm-from-first-principles (Via pharocasts) agregando la corrección señalada por Laurent Duffont en http://magaloma.blogspot.com/2010/03/how-i-build-squeak-vm-on-archlinux.html (Via Adrian Lienhard)

Dos agregados extras:
modificar platforms/unix/src/plugins/FT2Plugin/FT2Plugin.c el #include<tttables.h> por #include<freetype/tttables.h>

y agregar el siguiente vinculo blando (con sudo porque es en /usr)

sudo ln -s /usr/include/freetype2/freetype /usr/include/freetype

le damos su make y Listo! Tienes tu propia máquina virtual de Squeak. Le agregamos su Imagen de Pharo de http://www.pharo-project.org con sus sources y listo para SmallTalkear!