Curso de Algoritmos y Programación a fondo es un libro pensado para enseñar a programar desde cero.
La obra propone crear algoritmos tejiendo capas progresivas de software, entendiendo que un programa se erige sobre una construcción previa, la cual se apoya sobre una base anterior, y así sucesivamente.
Cada capítulo está dividido en lecciones. Cada lección es una clase del curso, cuyo contenido tiene doble soporte: el libro en sí mismo, y un video donde el propio autor explica los temas de la lección. Ambos medios se complementan para garantizar que el estudiante adquiera la confianza que le permita internalizar los conocimientos.
Si bien la obra comienza desde cero, avanza hasta cubrir cuestiones complejas. De hecho, el capítulo 6, y a modo de corolario, propone desarrollar un programa compresor/descompresor de archivos basado en el algoritmo de Huffman.
Sobre los contenidos de la obra:
- El capítulo 1 explica las bases de la programación: variable, tipo de dato, estructura de control, lenguaje de programación, sintaxis, compilador, IDE (herramienta de desarrollo), función, argumento, parámetro y TAD (Tipo Abstracto de Dato).
- El capítulo 2 introduce el concepto de biblioteca de funciones, y propone desarrollar una API para el tratamiento de cadenas de caracteres. Luego, sobre la base de estas funciones se guía al estudiante para crear una nueva API, en este caso de tratamiento de tokens; es decir: considerar que, dentro de una cadena de caracteres, existen varias piezas de información separadas entre sí por un carácter separador.
- El capítulo 3 trata sobre gestión de archivos (ficheros), y propone desarrollar una API genérica para el tratamiento de archivos de registros de longitud fija, además de una serie de ejercicios entre los cuales se encuentran los TAD bitFileReader y bitFileWriter, preparados para leer y escribir bits. Ambas herramientas serán fundamentales para la construcción del compresor de archivos del capítulo 6.
- El capítulo 4 explica cómo analizar y resolver problemas integrales, de la vida real. Identificando, dentro de un enunciado, entradas, procesos y salidas; aceptando que los datos provienen de archivos de registros y disponiendo del TAD Coll, la herramienta que desarrollamos en el capítulo 2.
Todos los problemas propuestos en este capítulo los resolveremos dos veces: primero con el TAD Coll; luego usaremos otro tipo de colecciones, más eficientes y funcionales, que estudiaremos, desarrollaremos y encapsularemos en el capítulo 5.
- El capítulo 5 explica estructura de datos (segunda parte) y gestión de memoria: arrays, punteros y direcciones de memoria, concepto de nodo y estructuras dinámicas líneales: lista enlazada, pila y cola. También se propone el desarrollo de diversas API y TAD que faciliten y encapsulen el uso de cada una de estas estructuras. Así surgen los TAD Array (array dinámico), Map (diccionario de datos), List (lista enlazada), Stack (pila) y Queue (cola). Todos genéricos y basados en templates.
- El capítulo 6, como ya mencionamos, es un ejercicio integrador cuyo desarrollo requerirá aplicar que apliquemos los contenidos estudiados y herramientas desarrolladas durante de este curso de algoritmos y programación A FONDO.