En el diseño de algoritmos para la resolución de problemas se toman en cuenta diversos aspectos a considerar como robustez del código fuente generado, lógica de programación, eficiencia en recursos empleados en su construcción, número de líneas de código, entre otros. Igualmente, para un problema existen diversas estructuras de datos donde se requieren dos elementos fundamentales: eficacia y eficiencia. En este libro se pretende dar una introducción básica para la construcción y desarrollo de algoritmos empleando estructuras de datos eficientes. Por ello, se estudia los tipos de datos presentes en diversos lenguajes de programación así como su influencia en un programa computacional. Luego, se muestra el enfoque de recursión y backtracking como técnica de búsqueda. Del mismo modo, se estudia el comportamiento de un programa a través del estudio de su comportamiento en el tiempo (complejidad). Igualmente, estructuras de datos conocidas como listas, pilas, colas, árboles, entre otras son estudiadas en este trabajo. Todos los aspectos son explicados de forma didáctica para la compresión adecuada del lector.