Dos semanas para #SistemasOperativos @tecnun

Eso es, en dos semanas exactas estrenaremos curso de Sistemas Operativos en TECNUN, mejor dicho, profesor de Sistemas Operativos. Me gustaría compartir mi punto de vista al respecto de esta asignatura y explicar un poco cómo será el curso.

Primero que nada, el contexto. Los alumnos son estudiantes de tercer año de los Grados en Ingeniería en Sistemas de Telecomunicación y en Ingeniería en Electrónica de Comunicaciones. Sistemas Operativos no es, digamos, su “plato fuerte”, a diferencia de redes, teoría de señal, sistemas digitales, etc. De hecho, Sistemas Operativos es parte de una asignatura más general: Arquitectura de Computadores, donde se introducen conceptos tanto de hardware (primera parte) como de software (segunda parte, la que nos compete ahora).

Esto nos lleva a otro aspecto importante, el tiempo: dos meses (14 clases) para dar una asignatura que yo vi en casi un año, y que aún así bien podría haber sido titulada “Introducción al Diseño de Sistemas Operativos”. Por lo que es necesario no sólo acortar sino recortar.

Finalmente, el uso que le darán a estos conocimientos. Seguramente muchos no lleguen a tener necesidad ni de recompilar un kernel, mientras que otros deberán diseñar sistemas embebidos o en tiempo real. Algo muy dispar, pero donde un conocimiento sí es necesario: cómo funciona esa capa entre la aplicación y el hardware a la que llamamos sistema operativo.

Y es en esto en lo que he decidido enfocar la asignatura. La mitad de la misma estará orientada a los dos aspectos de más relevancia: gestión de procesos y gestión de memoria. En procesos verán el ciclo de vida de los mismos, planificación, comunicación entre procesos, sincronización e hilos. En memoria estudiarán los diferentes modelos de organización de memoria, los sistemas de paginación y segmentación, recolección de basura y la memoria virtual. La segunda mitad está destinada a temas más dispersos, y cuya utilidad para el estudiante dependerá más del camino que siga en su carrera profesional: sistemas de ficheros, planificación de disco, máquinas virtuales y sistemas operativos especiales (embebidos, sistemas en tiempo real, sistemas multimedia).

Notarán que faltan fragmentos clásicos como seguridad, comunicación y sistemas de E/S; el motivo es que esos temas los ven en otras asignaturas y, como el tiempo del que disponemos es muy escaso, he decidido suprimirlos completamente.

Aún así, he querido reservar un par de clases a dos aspectos que rara vez se dan en S.O., pero que considero que dan un valor añadido muy interesante, además de que no los verán a lo largo de sus estudios: APIs y GUIs. En APIs me gustaría poderles dar un brochazo de POSIX, Win32, .Net, Cocoa, Java, Qt… o lo que es lo mismo, grandes ayudas que podrán encontrar al programar sistemas de propósito general (o no tan general). La clase de GUIs seguramente será para mí la más divertida: un paseo histórico por las interfaces de usuario en los sistemas más populares, mencionando algunos pros y contras de cada uno, estudiando qué han aportado cada una de ellas y cómo pueden explotarse en los productos que desarrollen en el futuro.

El método de estudio será muy sencillo: leer mucho. Las clases introducirán los conceptos principales y más difíciles, así como ejemplos en los casos donde sea necesario, dejando al alumno la tarea de profundizar en ellos por su cuenta. A su vez, S.O. es una asignatura peculiar, donde se podría decir (exagerando, claro está) que “todo vale” si se dice por qué. El alumno deberá adquirir la capacidad de discusión y razonamiento frente a los problemas que se le presenten (esto parece sacado de la propuesta de la asignatura para el Ministerio ;) ).

Durante el curso el estudiante tendrá dos prácticas: una sobre procesos y una sobre memoria. Este año experimentaré con la opción de dar a los alumnos la práctica por adelantado y en el momento oportuno, de forma que cuando llegue el día hayan podido adelantarla.

Así mismo, durante las clases se presentarán diferentes consejos y pistas para el estudio, dónde enfocarse, información extra a buscar, información extra obligatoria a buscar (para la práctica o el examen) y detalles a modo de ejemplo que les sirvan para orientarse.

Finalmente, los alumnos realizarán un trabajo de investigación por grupos en el que se aplicarán los conocimientos de la asignatura en tres casos de estudio sobre sistemas reales y populares.

Espero que mis alumnos terminen el curso queriendo cambiarse de carrera, a Ingeniería en Informática… ¡me explico! porque han quedado tan enamorados del diseño de Sistemas Operativos que desean dedicarse de lleno a ello ;). Sin más, 2 semanas para comenzar las clases, ¡os espero!