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:

Contenidos

  1. Módulo 1: Herramientas y contextualización de espacio de desarrollo
    1. Herramientas y entorno del sistema operativo.
    2. Instalación de Code::Blocks y MS Visual Studio Code para C/C++ y Python
    3. Instalación y uso de herramienta GIT para gestión de código fuente y uso de comandos de línea.
      1. GIT en MS Windows.
      2. GIT en Linux.
      3. Herramienta alternativa visual de acceso al GIT y su uso en estudiantes.
    4. Entorno de desarrollo para ingeniería de software.
    5. Estándares y modelos internacionales.
  2. Módulo 2: Control de versiones
    1. Criterios de control de versiones.
    2. GIT
      1. Conceptos de uso
      2. Reservorio local
      3. Reservorio remoto
        1. GitHub
    3. Conceptos GIT (inglés)
      1. Create
      2. Clone
      3. Working directory
      4. Stage área
      5. Local repo
      6. Remote repo
        1. add
        2. commit
        3. push
        4. pull
        5. checkout
      7. Commands
    4. Herramienta comercial (uso libre para estudiantes)
      1. SmarGitHG
        1. Uso restringido
        2. Criterios de uso
  3. Módulo 3: Lenguaje para programación C/C++
    1. Introducción al lenguaje de programación: historia, filosofía, interprete, entre otros.
    2. Herramientas de desarrollo. 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 C++:
      1. Entorno de consola.
      2. Entorno IDE.
      3. Compilación
        1. Objetos.
        2. Librerías.
        3. Ejecutables.
        4. Librerías dinámicas.
      4. Manejo de memoria
      5. Errores típicos de compilación y manejo de excepciones.
      6. Automatización del proceso de compilación con Code::Blocks.
      7. La librería estándar: STL.
  4. Módulo 4: OOP programación orientada a objetos en C/C++
    1. Concepto de objeto en programación.
    2. Declaración de clase
    3. Instancia de objetos.
    4. Atributos y métodos.
    5. Jerarquía y herencia.
    6. Polimorfismo.
    7. Modelo de diseño orientado a objetos.
  5. Módulo 5: Estructuras dinámicas de datos y criterios de algoritmos
    1. Complejidad computacional y eficiencia de algoritmos.
    2. Corrección de algoritmos.
    3. Tipos de datos abstractos.
    4. Estructuras de datos:
      1. Importancia de las estructuras de datos
      2. Arreglo
      3. Vector
      4. Lista
      5. Pila
      6. Colas
      7. Conjuntos
      8. Aboles y criterios de diseño y uso
      9. Grafos
    5. Búsquedas.
    6. Ordenamiento.
    7. Algoritmos: criterios de diseño de un algoritmo.
      1. Métricas de diseño.
      2. Eficiencia de un algoritmo
    8. Bibliotecas: STL para manejo de estructuras dinámicas de datos.
  6. Módulo 6: Lenguaje de Programación Python
    1. Paradigma de Python y diferencias con C/C++
      1. Python 2.7
      2. Python 3.x
    2. Interprete de Python.
    3. Uso de MS Visual Studio Code
    4. Criterios de uso C++ vs Python.
      1. Uso de Python como herramienta de intercambio.
    5. Otros criterios: Lenguaje de Minería de datos R y diferencias con Python.
    6. Herramientas de desarrollo.
    7. Flujo de desarrollo en Python.
    8. Bibliotecas de Python.
    9. Características básicas del lenguaje: tipos de datos, estructuras de control, etc.
    10. Aplicación de la programación orientada a objetos al lenguaje en Python.
    11. OOP en Python, ventajas y desventajas.
    12. Estructuras de datos propias de Python.
  7. Módulo 7: Criterios básicos de minería de datos y uso de Python en el entorno mundial
    1. Criterios de ciencia de datos y minería de datos.
    2. Conceptos de clasificación (clustering)
      1. Usos de Python para manejo de datos masivos.
      2. Librerías de Python para manejo matemático.
      3. Librería Pandas y estructuras de datos.
    3. Conceptos de predicción de series de tiempo.
      1. Criterios generales

    Competencias

    POR DEFINIR

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