Universidad de Costa Rica

IE0217 Estructuras Abstractas de Datos y Algoritmos para Ingeniería

Créditos:
3
Departamento:
Automática
Curso:
Troncal
Tipo:
0 - Teórico
Horas:
6h: 3h T, 3h L, 0h P, 0h T/P
Requisitos:

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)

  1. Herramientas de control de Repaso y uso obligatorio.
  2. Introducción a la programación orientada a objetos. 
  3. Conceptos básicos de OOP:
    1. Encapsulamiento (Structs como herramienta para construcción de clases)
    2. Mensajes
    3. Objetos (instancias)
    4. Clases
    5. Métodos (de clase y de instancia)
    6. Variables (de clases y de instancias)
  4. Herramientas de visualización de diseño. (UML)
  5. Relación entre punteros y objetos
    1. Relación entre clases y tipos
  6. Construcción de objetos más complejos utilizando otros objetos (composición)
  7. Sobrecarga de operadores
  8. Herencia y Herencia Múltiple.
  9. Programación genérica.

Módulo 2: Lenguajes para programación orientada a objetos (C++)

  1. Introducción al lenguaje de programación: historia, filosofía, intérprete, entre otros.
  2. Herramientas de Flujo de desarrollo (compilación, interpretación, etc.)
  3. Características básicas del lenguaje: tipos de datos, estructuras de control, etc.
  4. Aplicación de la programación orientada a objetos al lenguaje
  5. Técnicas particulares de programación para el lenguaje
    1. C++:
      1. Proceso de compilación
      2. Manejo de memoria
      3. Errores típicos de compilación
      4. Automatización del proceso de compilación (CodeBlocks, Makefiles, CMake)
  1. Consideraciones prácticas y de implementación de OOP sobre el (Memoria, velocidad)
  2. Utilidades de sistema del lenguaje:
    1. Entrada y salida
    2. Manejo de archivos
    3. Funciones de sistema
    4. Obtención de opciones de línea de comando (optparse)
  3. Estructuras de datos (bibliotecas y construcción desde cero).
  4. Bibliotecas de procesamiento científico, caso de uso Matlab/Simulink y el RealTime Coder
  5. Manejos de errores (exceptions)
  6. Expresiones regulares y construcción de calculadora básica.
  7. Introducción a la teoría de compiladores y construcción manejador matemático con ecuaciones y matrices.
  8. Uso de herramientas visuales para C++: fltk y WxWindows
  9. Depurado y análisis de rendimiento
  10. Conexión a bases de datos SQL y conceptos de mecanismos relacionales.

Módulo 3: Estructuras de Datos y Algoritmos

  1. Complejidad computacional y eficiencia de algoritmos
  2. Correctitud de algoritmos.
  3. Tipos de datos abstractos
  4. Estructuras de datos:
    1. Importancia de las estructuras de datos
    2. Memory leak
    3. Arreglo
    4. Vector
    5. Lista
    6. Pila
    7. Colas
    8. Secuencias (Hash)
    9. Conjuntos
    10. Árboles ( B-Tree)
    11. Introducción a las bases de datos relacionales (SQL) con MySQL y Postgress
    12. Grafos
  1. Búsquedas.
  2. Ordenamientos.
  3. SQL y acceso mediante C++ a MySQL y Postgres
  4. Bibliotecas: Standard C++ Library

Competencias

POR DEFINIR

© 2020 Escuela de Ingeniería Eléctrica, Universidad de Costa Rica.