Saltar al contenido principal

Algoritmos y Estructuras de Datos

📖 Descripción de la Materia

Objetivo General

Introducir a los estudiantes en los conceptos fundamentales de algoritmos y estructuras de datos, esenciales para el desarrollo de software eficiente y efectivo. Se enfatizará la importancia de seleccionar las estructuras de datos adecuadas para resolver problemas específicos y se enseñarán métodos para evaluar la eficiencia de los algoritmos en términos de tiempo y espacio.

Objetivos Específicos

  • Dominar el uso de punteros y gestión dinámica de memoria
  • Aplicar conceptos de programación orientada a objetos en C++
  • Implementar y optimizar funciones recursivas
  • Diseñar e implementar estructuras de datos lineales y no lineales
  • Analizar la complejidad temporal y espacial de algoritmos
  • Seleccionar algoritmos de ordenamiento y búsqueda apropiados según el contexto

Competencias a Desarrollar

  • Conceptuales: Fundamentos teóricos de algoritmos, estructuras de datos y análisis de complejidad
  • Procedimentales: Implementación eficiente de estructuras de datos, optimización de algoritmos y resolución de problemas computacionales
  • Actitudinales: Pensamiento analítico, atención al detalle y compromiso con la eficiencia en el desarrollo de software

📚 Plan de Estudios

  • Unidad 1: Punteros y memorias
    • 1.1 Variables, memoria y direcciones
    • 1.2 Paso de parámetros mediates punteros
    • 1.3 Uso dinámico de la memoria. Reserva y liberación de memoria
    • 1.4 Aritmética de Punteros
    • 1.5 Usos y Ejemplos
  • Unidad 2: Conceptos básicos de objetos y clases
    • 2.1 Clases y Objetos
    • 2.2 Métodos y atributos privados y públicos
    • 2.3 Herencia
    • 2.4 Constructores
    • 2.5 usos y ejemplos
  • Unidad 3: Estructuras lineales
    • 3.1 Arreglos y Vectores
    • 3.2 Listas simplemente enlazadas
    • 3.3 Pilas
    • 3.4 Colas
    • 3.5 Usos y Ejemplos
  • Unidad 4: Complejidad algorítmica
    • 4.1 Complejidad temporal y espacial
    • 4.2 Funciones asintóticas Notación Big O, Omega O y Theta O
    • 4.3 Ejemplos
  • Unidad 5: Algoritmos de ordenamiento y búsqueda
    • 5.1 Algoritmos de ordenamiento de Orden cuadrático
    • 5.2 Algoritmos de ordenamiento de Orden logarítmico
    • 5.3 Comparación y usos apropiados de cada algoritmo
    • 5.4 Algoritmos de búsqueda: lineal, binaria y otros
    • 5.5 Usos y ejemplos
  • Unidad 6: Estructuras tipo árbol
    • 6.1 Definición y formas de implementar árboles.
    • 6.2 Árbol binario y m-ario
    • 6.3 Balances y recorridos de arboles binarios
    • 6.4 Otros tipos de árboles usuales
    • 6.5 Usos y ejemplos
  • Unidad 7: Otras estructuras de datos
    • 7.1 Tablas y funciones de dispersión
    • 7.2 Conjuntos y bolsas (set y bags)
    • 7.3 Mapas de Bits
  • Unidad 8: Grafos
    • 8.1 Definición y formas de implementar grafos
    • 8.2 Algoritmos sobre grafos dirigidos
    • 8.3 Algoritmos sobre grafos no dirigidos
    • 8.4 Usos ejemplos
  • Unidad 9: Estrategias algorítmicas
    • 9.1 Algoritmos “Divide y Vencerás”
    • 9.2 Algoritmos voraces
    • 9.3 Algoritmos de backtracking
  • Unidad 10: Visión de conjunto e historia de los algoritmos y las estructuras de datos
    • 10.1 Revisión histórica de los algoritmos y las estructuras de datos

🗂️ Índice de Contenidos

📝 Apuntes por Unidad

📚 Recursos Adicionales

📖 Bibliografía