Inicio

Mapa del syllabus

Ruta de aprendizaje, hitos del semestre y plan de evaluación.

¿Qué vamos a aprender este semestre?

Metodología orientada a proyectos
A diferencia de otras materias, aquí la teoría no precede a la práctica; ocurren en paralelo. Necesitarás los conceptos de la semana 4 para sobrevivir al código de la semana 5.

El curso está dividido en cuatro fases de ingeniería, diseñadas para llevarte desde la manipulación básica de memoria hasta la construcción de software de sistema concurrente.


Fase 1: Fundamentos y el metal (semanas 1-4)

En esta fase "romperemos" tu miedo a la terminal y al lenguaje C. Entenderás dónde termina el hardware y dónde empieza el software.

Unidad I: Conceptos generales

Arquitectura del computador, definiciones, interrupciones, modo usuario vs. modo kernel y llamadas al sistema (syscalls).

Bootcamp de C y herramientas

Punteros, gestión manual de memoria (stack vs. heap), estructuras de datos, Makefiles y depuración con GDB/Valgrind.

🎯 Hito de evaluación: Entregas del repositorio ula-os-clings (Niveles 0-5).


Fase 2: Gestión de memoria y procesos (semanas 5-8)

Aquí desmitificaremos la "magia" detrás de la memoria dinámica. Dejarás de usar las herramientas del lenguaje para construir las tuyas propias.

Unidad IV y V: Gestión de memoria

Fragmentación interna/externa, listas libres (free lists), estrategias de asignación (Best-fit vs. First-fit) y memoria virtual.

Unidad II: Procesos

El PCB (Process Control Block), ciclo de vida (fork, exec, wait) y la ilusión de la multitarea.

🚀 Proyecto 1: Allocador de memoria personalizado. Implementación desde cero de tus propias funciones malloc, calloc, realloc y free, gestionando el heap manualmente sin usar librerías estándar.


Fase 3: Concurrencia y control de recursos (semanas 9-12)

El filtro más difícil del semestre. Aprenderás a coordinar múltiples hilos y a auditar el consumo de recursos del sistema.

Unidad III: Sincronización

Condiciones de carrera, exclusión mutua (mutex), semáforos y prevención de deadlocks.

Planificación y monitoreo

Algoritmos de planificación de CPU, lectura del sistema de archivos /proc y métricas de rendimiento.

🛠️ Proyecto 2: Herramienta de QoS (Quality of Service). Un monitor de sistema capaz de inspeccionar, limitar y reportar el uso de recursos de procesos en tiempo real.


Fase 4: Persistencia y redes (semanas 13-16)

Finalmente, conectaremos tu código con el mundo exterior: el disco duro y la red.

Unidades VI y VII: E/S y archivos

Sistemas de archivos (inodos), descriptores de archivo, sockets de red y protocolos de comunicación.

Unidad VIII: Seguridad

Programación defensiva, manejo de conexiones concurrentes y vulnerabilidades comunes en servidores.

🔥 Proyecto final: ULA High-Perf WebServer. Un servidor HTTP escrito en C capaz de servir archivos estáticos y manejar múltiples clientes concurrentes usando un Thread Pool.


Plan de evaluación

La nota definitiva se compone de la sumatoria de los hitos prácticos. El código es la única verdad.

ActividadPeso (%)Descripción
Tereas (C-lings, Classroom)10%Completar el 100% de los ejercicios del repositorio de práctica.
Proyecto 1 (Malloc)20%Implementación funcional y eficiente de un gestor de memoria.
Proyecto 2 (QoS)25%Herramienta de monitoreo y calidad de servicio.
Proyecto final (Server)40%Servidor web HTTP concurrente y estable bajo carga.
Quices (Classroom)5%Evaluaciones cortas sobre los temas vistos en clase.
La regla de la defensa oral
El código entregado se revisará por cada proyecto. Si tu proyecto es seleccionado para revisión, debes ser capaz de explicarlo en vivo. Si no puedes explicar una línea de tu propio código, la nota del proyecto será 0.