Estructuras de Datos y Algoritmos
Esta es la materia que separa al programador del ingeniero. En Programación I y II aprendiste a hacer que tu programa funcione. Acá aprendés a hacer que escale.
¿La diferencia? Un programa que tarda 1 segundo con 100 datos puede tardar 3 horas con 100,000 si está mal estructurado. Y la diferencia no es la computadora, es el algoritmo.
Quién debería leer este libro
- Estudiantes de Sistemas en tercer ciclo (PRO315 o equivalente).
- Programadores que quieren entender por qué algunas operaciones son rápidas y otras lentas.
- Quien se prepara para entrevistas técnicas (LeetCode, FAANG-style).
- Quien quiere leer código de bibliotecas estándar (Python's
dict, Java'sHashMap, etc.) y entender por dentro.
Prerrequisitos
| Materia | Por qué |
|---|---|
| Programación II | Recursión, dicts, sets, OOP. |
| Matemática básica | Logaritmos y exponentes para análisis de complejidad. |
Cómo está organizado
Cada capítulo profundiza una familia de estructuras y los algoritmos asociados:
| # | Capítulo | Contenido |
|---|---|---|
| 1 | Complejidad | Notación Big-O, análisis de tiempo y espacio |
| 2 | Listas enlazadas, pilas y colas | Estructuras lineales, casos de uso |
| 3 | Árboles | BST, AVL, heaps, recorridos |
| 4 | Hashing | Tablas hash, colisiones, aplicaciones |
Filosofía del libro
Cada estructura nace para resolver un problema. No la presentamos como "definición → implementación" sino como "¿qué problema tiene la estructura previa? → la nueva lo resuelve". Vas a entender no solo cómo se usan, sino por qué existen.
Lenguaje
Implementaciones en Python, porque ya lo manejás. Pero los conceptos son universales — los vas a ver en C, Java, Rust, Go con sintaxis diferente, misma sustancia.
Vamos.