El itinerario de Computación del Grado en Ingeniería Informática

En esta entrada presentamos en detalle el itinerario de Computación dentro del Grado en Ingeniería Informática adaptado al EEES. En inglés, esta subdisciplina se denomina Computer Science, según las guías curriculares de la ACM (Association for Computer Machinery). El itinerario de Computación estudia los fundamentos y límites de la capacidad de cálculo de un ordenador para ofrecer soluciones eficientes a problemas complejos. Muchos de los problemas que se afrontan en este itinerario requieren analizar grandes volúmenes de información, extraer conocimiento aprovechable a partir de estos datos y realizar razonamientos e inferencias que permitan tomar decisiones “inteligentes”. Además, hay que conseguir todo esto consumiendo unos recursos de cómputo adecuados (tiempo de respuesta, memoria disponible, etc.). En otros itinerarios, los resultados suelen estar ligados a una tecnología concreta: una familia de sistemas operativos, un tipo de arquitectura de procesador, etc. En cambio, en el itinerario de Computación muchos resultados tienen validez independientemente de la evolución de la tecnología. Un ejemplo podría ser conocer el mínimo número de operaciones necesarias para resolver un problema concreto: este dato depende de las características intrínsecas del problema, no de las características del ordenador con que se resuelve. Este itinerario también proporciona las bases para responder a preguntas paradójicamente tan simples como complejas al mismo tiempo, como “¿existe un algoritmo para resolver un problema dado?” Podemos distinguir diferentes ámbitos de referencia dentro de este itinerario: Informática teórica: modelos abstractos de computación (autómatas finitos, autómatas con pila, máquinas de Turing), complejidad computacional (clases de complejidad, relación entre ellas y clasificación de problema según su clase), problemas indecidibles. Algorítmica: análisis de la complejidad de un algoritmo, problemas frecuentes...

¿El error informático más grave de la historia?

Algunos sistemas informáticos se denominan críticos (safety-critical en inglés) por su relevancia: un fallo en uno de estos sistemas puede tener consecuencias catastróficas, ya sea en pérdida de vidas humanas, daños económicos u otros tipos de pérdidas irreparables. Normalmente, este tipo de sistemas suelen encontrarse en el sector médico, aeroespacial (cohetes, satélites, transbordadores, sondas, …), militar, financiero, energético o de las comunicaciones. Los sistemas críticos requieren de un proceso de desarrollo totalmente orientado a garantizar la calidad del producto final: aquí no valen improvisaciones ni cambios en las especificaciones en el último minuto. Todo tiene que ser probado y verificado para que no haya posibilidad de error. El resultado tiene un nivel de calidad muy superior al que estamos acostumbrados a nivel de usuario pero, como es de suponer, a un coste mucho más elevado. Y obviamente, no siempre se pueden construir usando las mismas herramientas que en una aplicación de usuario. No es casual que los abogados de Sun Microsystems incluyeran este párrafo en los acuerdos de usuario final (EULA) relacionados con la tecnología Java: La tecnología Java no es tolerante a fallos y no está diseñada, fabricada o prevista para su uso o reventa como mecanismo de control reto de equipamiento en condiciones peligrosas que requiera tolerancia a fallos, como en la gestión de una instalación nuclear, la navegación de aviones o los sistemas de comunicación, tráfico aéreo, mecanismos de soporte vital o sistemas de armamento, donde el fallo de la tecnología Java pudiera conducir directamente a la muerte, daños personales o daño físico o ambiental severo. Sin embargo, a pesar de todas estas precauciones, en algunas ocasiones...

La Ley de Wirth, la “Ley de Moore inversa” del software

Para la mayoría de usuarios, lo más importante en un ordenador es “que sea rápido”. No hace tanto, los ordenadores se anunciaban casi exclusivamente a golpe de megahercio. Y lo último que suele escuchar un ordenador antes de irse al cementerio digital es “va muy lento, hay que cambiarlo”. Pero la realidad es que el software también juega un papel muy importante en el rendimiento de un ordenador.  Niklaus Wirth, padre de lenguajes de programación como Pascal o Modula, se lamentaba en 1995 (en un artículo titulado “A Plea for Leaner Software“)  de dos tendencias que apreciaba en los productos de software: El software se expande para ocupar todo el espacio disponible. El software se ralentiza a mayor velocidad de lo que se acelera el hardware. La segunda de estas afirmaciones resultaba un contrapunto simpático a la Ley de Moore, que observó en 1965 que el número de transistores en un circuito integrado se dobla aproximadamente cada 24 meses. Quizás por eso, la segunda afirmación fue bautizada popularmente como “Ley de Wirth“. Casi 20 años después, lo acertado de estas observaciones resulta evidente para cualquiera. Cuando pasas de instalar un sistema operativo en diskettes, a hacerlo en CD y luego en DVD… empiezas a sospechar que algo está pasando. También sería un curioso experimento coger a un usuario de 1994 y enseñarle el tiempo que tarda en arrancar un ordenador actual: ahora está acabando de instalar un parche que se instaló ayer, ahora está cargando mi configuración, ahora ya está todo pero todavía no puedo ni mover el ratón, … Después de esto, intentar explicarle que nuestros ordenadores actuales...

iWoz: Steve Wozniak

Tras leer la biografía de Steve Jobs (y reconocer públicamente que me gustó) cayó en mis manos esta pequeña joya, mucho menos pretenciosa, pero creo que obligatoria para los amantes de la informática. Es una obra mucho menor, y con un tono totalmente distinto a la primera. Si en aquella, el autor Walter Isaacson, explicaba hasta el último detalle de la vida de Jobs, intentando ser lo más objetivo posible (cosa de agradecer), en este libro te quedas con la impresión que has pasado una velada con Steve Wozniak explicándote “batallitas” sobre sus inventos. ¡Me encanta! Así, en este libro, Wozniak nos explica desde pequeño cada invento que diseñó, cómo y por qué lo hizo de esa manera. Es muy interesante. Nos permite entrar en su mente, en cómo le obsesionaba el ahorro primero de puertas lógicas, luego de chips, de memorias, etc.  Y para esto, nos explica las ideas que iba teniendo, y sus diseños sobre el papel, su búsqueda por qué hardware había disponible en aquella época, etc. Por otro lado, muestra un orgullo constante por ser un personaje gamberro (no para de presumir de sus gamberradas, sean o no sacando provecho de su conocimiento de la tecnología) y, por qué no, un tipo con un buen corazón. Me parece curioso que en un libro sobre el cofundador de Apple no se habla mucho sobre Jobs, pero realmente, no se hace necesario. La historia de la compañía se obvia ya que Wozniak no estuvo nunca especialmente interesado en más que ser un buen ingeniero e inventor. Debo reconocer que es posible que a mi, personalmente, me haya...

La revisión por pares (3): especificidades de la informática

En el ámbito de la informática, el proceso de revisión es muy parecido al que se lleva a cabo en otras disciplinas científicas. Existen diversas guías que explican cómo actuar como revisor (o con algo de sorna, cómo no hacerlo) para investigadores noveles en informática. Sin embargo, existen algunas particularidades del proceso de revisión muy propias de la informática. La más importante tiene que ver con el papel de los congresos y las revistas científicas en la comunidad científica. En otros campos, como por ejemplo en Física, los congresos tienen un mayor papel como punto de encuentro y difusión de la comunidad. Con este objetivo, las revisiones no suelen ser extremadamente exigentes: no se buscan grandes contribuciones, sino artículos que presenten trabajo en curso. Esto significa que el ratio de aceptación (porcentaje de artículos aceptados sobre el total de enviados) suele ser muy alto: casi todos los artículos enviados acaban presentándose en el congreso. El filtro para decidir si un resultado es relevante o no se establece a nivel de revista, donde las revisiones son tremendamente exigentes. Por este motivo, publicar en congreso aporta poco al currículum científico de un físico, el auténtico mérito está en conseguir publicar en una revista. En cambio, en el ámbito de la informática los congresos suelen aplicar criterios de exigencia mucho más elevados. Los congresos más prestigiosos pueden tener ratios de aceptación del 20% (1 artículo aceptado por cada 5 enviados) o incluso inferiores. De hecho, publicar en determinados congresos es más complicado que hacerlo en algunas revistas. Esta forma de actuar, específica del ámbito informática, comporta tres problemas: El primero es que publicar...