Descripción
El curso de Estructuras Abstractas de Datos y Algoritmos para Ingeniería tiene la finalidad de ahondar en conceptos de programación y desarrollo de algoritmos, lo que les permite a las personas estudiantes enfrentarse sistemáticamente al desarrollo de soluciones computacionales a problemas, mediante la selección de las estructuras de datos y criterios apropiados en cada situación. Al finalizar el curso, los estudiantes comprenderán los fundamentos teóricos y prácticos del uso de estructuras de datos y algoritmos más utilizados usando el lenguaje C++. Además, estarán en capacidad de proponer nuevas estructuras de datos y algoritmos para la resolución de problemas específicos.
Contenidos
Módulo 1: Programación orientada a objetos (OOP)
- Herramientas de control de Repaso y uso obligatorio.
- Introducción a la programación orientada a objetos.
- Conceptos básicos de OOP:
- Encapsulamiento (Structs como herramienta para construcción de clases)
- Mensajes
- Objetos (instancias)
- Clases
- Métodos (de clase y de instancia)
- Variables (de clases y de instancias)
- Herramientas de visualización de diseño. (UML)
- Relación entre punteros y objetos
- Relación entre clases y tipos
- Construcción de objetos más complejos utilizando otros objetos (composición)
- Sobrecarga de operadores
- Herencia y Herencia Múltiple.
- Programación genérica.
Módulo 2: Lenguajes para programación orientada a objetos (C++)
- Introducción al lenguaje de programación: historia, filosofía, intérprete, entre otros.
- Herramientas de Flujo de desarrollo (compilación, interpretación, etc.)
- Características básicas del lenguaje: tipos de datos, estructuras de control, etc.
- Aplicación de la programación orientada a objetos al lenguaje
- Técnicas particulares de programación para el lenguaje
- C++:
- Proceso de compilación
- Manejo de memoria
- Errores típicos de compilación
- Automatización del proceso de compilación (CodeBlocks, Makefiles, CMake)
- Consideraciones prácticas y de implementación de OOP sobre el (Memoria, velocidad)
- Utilidades de sistema del lenguaje:
- Entrada y salida
- Manejo de archivos
- Funciones de sistema
- Obtención de opciones de línea de comando (optparse)
- Estructuras de datos (bibliotecas y construcción desde cero).
- Bibliotecas de procesamiento científico, caso de uso Matlab/Simulink y el RealTime Coder
- Manejos de errores (exceptions)
- Expresiones regulares y construcción de calculadora básica.
- Introducción a la teoría de compiladores y construcción manejador matemático con ecuaciones y matrices.
- Uso de herramientas visuales para C++: fltk y WxWindows
- Depurado y análisis de rendimiento
- Conexión a bases de datos SQL y conceptos de mecanismos relacionales.
Módulo 3: Estructuras de Datos y Algoritmos
- Complejidad computacional y eficiencia de algoritmos
- Correctitud de algoritmos.
- Tipos de datos abstractos
- Estructuras de datos:
- Importancia de las estructuras de datos
- Memory leak
- Arreglo
- Vector
- Lista
- Pila
- Colas
- Secuencias (Hash)
- Conjuntos
- Árboles ( B-Tree)
- Introducción a las bases de datos relacionales (SQL) con MySQL y Postgress
- Grafos
- Búsquedas.
- Ordenamientos.
- SQL y acceso mediante C++ a MySQL y Postgres
- Bibliotecas: Standard C++ Library
Competencias
POR DEFINIR