Este libro trata con un aspecto esencial para la programación avanzada de computadoras: algoritmos y estructuras de datos; campo fundamental en todo programa curricular de ciencias de la computación o informática, así como en otros programas curriculares en los que la programación sea de alto interés tales como la ingeniería eléctrica, automatización, electrónica, telecomunicaciones, economía, física y otras áreas científico-tecnológicas. Puede usarse tanto en cursos de pregrado como de postgrado.
Borradores de este libro han sido usados, y se emplean actualmente, como texto principal, en los cursos obligatorios de Programación 3 y Diseño y Análisis de Algoritmos del programa de Ingeniería de Sistemas de la Universidad de Los Andes. Del mismo modo, también se emplea como texto principal en el curso obligatorio de Diseño y Análisis de Algoritmos en la especialización y Maestría de Computación de la Universidad de Los Andes.
El texto cubre prácticamente todo el corpus teórico y práctico de los cursos de Algoritmos y de Estructuras de Datos, así como también contiene partes avanzadas. Desde la perspectiva teórica el texto discute detalladamente las consideraciones de diseño de cada aspecto presentado, así como un riguroso análisis matemático. Desde la perspectiva práctica, una característica muy particular de este texto, podría decirse novedosa, es que él contiene, en sí mismo, la instrumentación de todas las estructuras de datos y algoritmos presentados. Huelga decir que esta instrumentación ha sido ampliamente usada en sistemas programados reales, de pequeña y larga escala.
El texto está estructurado en siete capítulos. Progresivamente, a partir del segundo comienzan a tratarse temas avanzados, los cuales, según el programa y audiencia, pueden delegarse a cursos de postgrado. Los capítulos 6 y 7 ya contienen material bastante avanzado y pueden emplearse parcial o totalmente en cursos de postgrado.
El primer capítulo, versa sobre las técnicas de abstracción empleadas en la programación. El segundo capítulo trata sobre la estructuras de datos más simples y comunes: las secuencias (arreglos y listas). El tercer capítulo, ``Crítica de algoritmos'', presenta las técnicas de análisis de algoritmos y estructuras de datos, sus métodos de diseño y los principales mecanismos conocidos para demostrar la correctitud. El cuarto capítulo presenta y profundiza el concepto de ``árbol'', una estructura de dato avanzada y fundamental en los algoritmos. El quinto capítulo se consagra a estudiar otra estructura esencial: la ``tabla hash''. El sexto capítulo, titulado ``Árboles equilibrados'' se dedica a especializar la estructura árbol para la búsqueda eficiente de claves en memoria. Finalmente, el capítulo siete trata sobre grafos. A ese tenor, presenta los conceptos principales y fundamentales, así como otros de avanzada e implementaciones genéricas, originales y de muy buen desempeño.