El Open Syllabus es una curiosa iniciativa que busca recopilar y analizar todos los planes de estudio de universidades de habla inglesa (hasta ahora cubren Estados Unidos, Reino Unido, Nueva Zelanda, Australia y Canada, aunque la segunda versión del dataset promete ser bastante más amplia).

De momento se han centrado en el análisis de los libros que cada curso universitario recomienda como lectura. Por ejemplo, si nos centramos en informática, los diez libros más comúnmente recomendados son los siguientes:

    1. Artificial Intelligence: A Modern approach.  Stuart Russell y Peter Norvig.
    2. C : How to Program. Paul Deitel y Harvey Deitel.
    3. Starting Out With C++ : From Control Structures Through Objects. Tony Gaddis
    4. Introduction to Algorithms. Thomas Corment et al
    5. Fundamentals of Database Systems. Ramez Elmasri y Shamkant Navathe
    6. Discrete Mathematics and its Applications. Kenneth Rosen
    7. Operating System Concepts. Abraham Silverschatz
    8. Modern Operating Systems. Andrew Tanenbaum y Herbert Bos
    9. Computer Networks. Andrew Tanenbaum y David Wetherall
    10. Computer Organization and Design: the Hardware/Software interface. David Patterson y John Hennessy

Hasta aquí nada fuera de lo común. Muchos clásicos (que ya me tocó leer en mi época de estudiante) que cubren conceptos fundamentales y resisten bien el paso del tiempo (y sí, esto incluye el “ganador” por mucho que nos parezca que ha avanzado la inteligencia artificial recientemente, sus fundamentos siguen siendo los mismos). Además muchos de ellos se han ido actualizando con nuevas ediciones.

Pero he ido un poco más allá y me he repasado el top 200 de los libros más recomendados en informática y me he llevado bastantes sorpresas. La mayoría no muy buenas. Algunas de mis impresiones.

Muy poca presencia de lenguajes de programación “modernos” en cursos de programación

C/C++ y Java siguen siendo la opción “segura” para enseñar introducción a la programación. Sólo hay un libro sobre python, aunque parece que como mínimo los mejores departamentos de informática si que están introduciendo Python en cursos de iniciación a la programación.

Curiosamente, hay más libros sobre Perl que sobre Python. Y no hay ninguno de JavaScript.

Tened en cuenta que aquí hablamos de libros recomendados. Que no haya de JavaScript no quiere decir necesariamente que JavaScript se enseñe en tan pocas universidades que ni aparezca en este ranking. Podría haber muchos profesores que enseñaran programación en JavaScript sin recomendar ningún libro de JavaScript. O que la variabilidad de libros JavaScript que se recomienda sea tan alta que no hay ninguno con suficientes citas como para sacar la cabeza en el ranking. Aunque siendo sinceros, me parece poco probable que así sea 😉 . Yo creo que sí que hay una correlación clara entre lo que dice este ranking y lo que pasa en la realidad (pero quería recordaros el contexto para que nadie saque conclusiones precipitadas).

¿Modelado, quién dijo modelado?

Más que una sorpresa, esto es simplemente una confirmación. A pesar de la gran importancia (para mí) del modelado de software, la presencia de libros de modelado en esta lista se reduce a los libros clásicos de los fundadores del lenguaje UML, que a mi modo de ver no són la mejor opción para aprender UML.

Nada que hable de lenguajes específicos de dominio u otros lenguajes de modelado (como SysML, modelado de procesos de negocio,..).

Y ya no me hables de Ingeniería de Software

Algo tan básico como la ingeniería de software parece no ser tanta prioridad en los estudios de informática, que sólo incluyen el clásico The Mythical Man-Month : Essays on Software Engineering entre los 100 primeros libros.

Sorprende también la ausencia absoluta de libros de métodos de desarrollo. Ni los todopoderosos métodos ágiles han conseguidos aparecer en este top 200. Parece que para algunos la informática se reduce a programar, y sobretodo programar sistemas operativos y bases de datos 🙂

Clara ausencia de todo lo demás

En la partitura todo está escrito, menos lo esencial – Gustav Mahler

Pervirtiendo un poco el sentido original de esta frase de Mahler (pero es que me encanta), echo también de menos libros sobre todo lo acompaña a la programación en un proceso de desarrollo desde la recogida de requisitos a los tests de software. Por no hablar de los sistemas de integración contínua. Y mucho menos de los aspectos sociales o económicos.

Es que ni de software libre hablamos en la universidad, cuando la mayor parte de nuestros sistemas o bien están desarrollados como open source o bien dependen de proyectos open source.

Y sí, ya sé que hay muchísimas excepciones a todas estas quejas. ¡Por suerte!. Pero es que creo que TODOS los estudiantes merecen estar expuestos a estos temas ya como parte de su educación básica en informática. Con perdón de los informáticos teóricos, pero yo no he construido un compilador en mi vida (y eso que hice dos cursos enteros dedicados a esto) y me hubiera ido mucho mejor dedicar menos compiladores y más a testing (sobre lo que hice cero cursos en el grado).

O como magistralmente resume Antonio Vallecillo, parece que en la universidad formamos programadores, y cuando no, formamos científicos pero no ingenieros.

En todo caso, en Open Syllabus mencionan como planes de futuro la creación de una API que permita a todo aquél que quiera consultar esta información (actualmente guardada según mencionan en una base de datos MongoDB) y desarrollar sus propias aplicaciones a partir de ella. Si llegan a liberar esta información será muy útil a todo el sistema universitario que podrá realizar de una forma mucho más fácil estudios comparativos entre cursos similares en instituciones diferentes y así enriquecerse mutuamente.