20060 - ESTRUCTURAS DE DATOS
771 - Graduado/a en Ciencia e Ingeniería de Datos
800 - Microtítulo en Programación
2023/24
1.12.1. Competencias
CG2 - Diseñar y desarrollar productos y procesos en los distintos ámbitos de la ciencia e ingeniería de datos, por medio de técnicas analíticas, computacionales o experimentales apropiadas.
CG3 - Resolver problemas con iniciativa, creatividad y razonamiento crítico en el ámbito de la ciencia e ingeniería de datos.
CB2 - Que los estudiantes sepan aplicar sus conocimientos a su trabajo o vocación de una forma profesional y posean las
competencias que suelen demostrarse por medio de la elaboración y defensa de argumentos y la resolución de problemas dentro de su área de estudio.
CB3 - Que los estudiantes tengan la capacidad de reunir e interpretar datos relevantes (normalmente dentro de su área de estudio) para emitir juicios que incluyan una reflexión sobre temas relevantes de índole social, científica o ética.
CB4 - Que los estudiantes puedan transmitir información, ideas, problemas y soluciones a un público tanto especializado como no especializado.
CB5 - Que los estudiantes hayan desarrollado aquellas habilidades de aprendizaje necesarias para emprender estudios posteriores con un alto grado de autonomía.
CT1 - Trabajar en equipo de forma colaborativa y con responsabilidad compartida.
CT2 - Aprender a realizar y aceptar críticas y fomentar la autocrítica.
CT3 - Comunicar oralmente y por escrito de manera efectiva, estructurada y concisa.
CT4 - Organizar su propio autoaprendizaje con un alto grado de autonomía en nuevos métodos y tecnologías, así como adaptarse a nuevas situaciones.
CT5 - Desarrollar actitud creativa, innovadora y cooperativa.
CE4 - Evaluar la complejidad computacional de un problema, conocer estrategias algorítmicas que puedan conducir a su resolución y recomendar, desarrollar e implementar aquella que garantice el mejor rendimiento de acuerdo con los requisitos establecidos.
CE5 - Conocer, diseñar y utilizar de forma eficiente los tipos y estructuras de datos más adecuados a la resolución de problemas en el contexto de la ciencia e ingeniería de datos.
1.13. Contenidos del programa
PROGRAMA SINTÉTICO
UNIDAD 1. Tipos abstractos de datos
UNIDAD 2. Pilas y sus aplicaciones
UNIDAD 3. Colas y sus aplicaciones
UNIDAD 4. Listas, listas enlazadas
UNIDAD 5. Árboles. Árboles binarios y árboles ordenados
UNIDAD 6. Colas de prioridades y montículos
UNIDAD 7. Recursión.
PROGRAMA DETALLADO
1. Tipos abstractos de datos
1.1 Tipos primitivos de datos
1.2 Tipos abstractos de datos (TAD)
1.2.1 El papel de la abstracción: abstracción de datos
1.2.2 Beneficios de los TAD
1.2.3 Especificación de un TAD
1.2.4 Ejemplos de TAD
1.3 Implementación de tipos abstractos de datos
2 Pilas y sus aplicaciones
2.1 Introducción y primeros ejemplos
2.2 Concepto de pila
2.2.1 Organización y acceso a datos
2.2.2 Operaciones primitivas.
2.3 Implementación del TAD pila
2.3.1 Estructuras de datos de pilas basadas en arrays
2.4 Expresiones aritméticas
2.4.1 Notación prefija, infija y postfija
2.4.2 Evaluación de expresiones aritméticas
2.4.3 Traducción de expresiones aritméticas
3 Colas y sus aplicaciones
3.1 Introducción y primeros ejemplos
3.2 Concepto de Cola
3.2.1 Organización y acceso a datos
3.2.2 Operaciones primitivas
3.3 Implementación del TAD Cola
3.3.1 Estructuras de datos de colas basadas en arrays
3.3.2 Condiciones de cola llena/cola vacía y aritmética modular
3.4 Aplicaciones del TAD cola
4 Listas
4.1 Introducción y primeros ejemplos
4.2 Concepto del TAD Lista enlazada
4.2.1 Organización y acceso a datos
4.2.2 Operaciones primitivas.
4.3 Implementación del TAD Lista enlazada
4.3.1 Implementación estática de listas enlazadas
4.3.2 Implementación dinámica de listas enlazada
4.4 Otras estructuras de listas
4.4.1 Listas circulares
4.4.2 Listas doblemente enlazadas
4.5 Listas enlazadas como Estructuras de Datos para Pilas y Colas
4.5.1 Pilas sobre listas enlazadas: análisis e implementación
4.5.2 Colas sobre listas enlazadas: análisis e implementación
5 Árboles. Árboles Binarios y árboles ordenados
5.1 Árboles generales
5.1.1 Representación gráfica de un árbol
5.1.2 Terminología fundamental
5.2 Árboles binarios (AB). TAD árbol binario
5.2.1 Equilibrio
5.2.2 AB completos
5.2.3 Especificación del TAD árbol binario
5.3 Recorridos en AB
5.3.1 Recorridos en profundidad (orden previo, orden medio, orden posterior)
5.3.2 Recorrido en anchura
5.4 Implementación de árbol binario
5.4.1 Representación mediante arrays
5.4.2 Representación dinámica de nodos
5.5 Árboles de expresión (ABdE)
5.5.1 Construcción de ABdE
5.6 Árbol binario de búsqueda (ABdB)
5.6.1 Definición de árbol binario de búsqueda
5.6.2 Inserción y búsqueda en ABdB: rendimiento en tiempo
5.6.3 El ABDB como estructura de datos para implementar tipos abstractos de datos
6 Colas de prioridades y montículos
6.1 Concepto del TAD Cola de Prioridad
6.2 Implementación de una cola de prioridades
6.3 Montículos
6.3.1 Definición de montículo
6.3.2 Representación de un montículo
6.3.3 Operaciones definidas en un montículo
6.4 Ordenación por montículos
7 Recursión
7.1 Definiciones recursivas y procesos recursivos
7.2 Recursión en Python
7.3 Escritura de programas recursivos
7.4 Eficiencia de la recursión
7.5 Simulación de la recursión
PROGRAMA SINTÉTICO
UNIDAD 1. Tipos abstractos de datos
UNIDAD 2. Pilas y sus aplicaciones
UNIDAD 3. Colas y sus aplicaciones
UNIDAD 4. Listas, listas enlazadas
UNIDAD 5. Árboles. Árboles binarios y árboles ordenados
UNIDAD 6. Colas de prioridades y montículos
UNIDAD 7. Recursión avanzada
PROGRAMA DETALLADO
1. Tipos abstractos de datos
1.1 Tipos primitivos de datos
1.2 Tipos abstractos de datos (TAD)
1.2.1 El papel de la abstracción: abstracción de datos
1.2.2 Beneficios de los TAD
1.2.3 Especificación de un TAD
1.2.4 Ejemplos de TAD
1.3 Implementación de tipos abstractos de datos
1.4 Modularidad
1.4.1 Reglas de modularización en C
1.5 Orientación a objetos
1.5.1 Encapsulación y polimorfismo
2 Pilas y sus aplicaciones
2.1 Introducción y primeros ejemplos
2.2 Concepto de pila
2.2.1 Organización y acceso a datos
2.2.2 Operaciones primitivas.
2.3 Implementación del TAD pila
2.3.1 Estructuras de datos de pilas basadas en arrays
2.4 Expresiones aritméticas
2.4.1 Notación prefija, infija y postfija
2.4.2 Evaluación de expresiones aritméticas
2.4.3 Traducción de expresiones aritméticas
3 Colas y sus aplicaciones
3.1 Introducción y primeros ejemplos
3.2 Concepto de Cola
3.2.1 Organización y acceso a datos
3.2.2 Operaciones primitivas
3.3 Implementación del TAD Cola
3.3.1 Estructuras de datos de colas basadas en arrays
3.3.2 Condiciones de cola llena/cola vacía y aritmética modular
3.4 Aplicaciones del TAD cola
4 Listas
4.1 Introducción y primeros ejemplos
4.2 Concepto del TAD Lista enlazada
4.2.1 Organización y acceso a datos
4.2.2 Operaciones primitivas.
4.3 Implementación del TAD Lista enlazada
4.3.1 Implementación estática de listas enlazadas en C
4.3.2 Implementación dinámica de listas enlazadas en C
4.4 Otras estructuras de listas
4.4.1 Listas circulares
4.4.2 Listas doblemente enlazadas
4.5 Listas enlazadas como Estructuras de Datos para Pilas y Colas
4.5.1 Pilas sobre listas enlazadas: análisis e implementación
4.5.2 Colas sobre listas enlazadas: análisis e implementación
5 Árboles. Árboles Binarios y árboles ordenados
5.1 Árboles generales
5.1.1 Representación gráfica de un árbol
5.1.2 Terminología fundamental
5.2 Árboles binarios (AB). TAD árbol binario
5.2.1 Equilibrio
5.2.2 AB completos
5.2.3 Especificación del TAD árbol binario
5.3 Recorridos en AB
5.3.1 Recorridos en profundidad (orden previo, orden medio, orden posterior)
5.3.2 Recorrido en anchura
5.4 Implementación de árbol binario
5.4.1 Representación mediante arrays
5.4.2 Representación dinámica de nodos
5.5 Árboles de expresión (ABdE)
5.5.1 Construcción de ABdE
5.6 Árbol binario de búsqueda (ABdB)
5.6.1 Definición de árbol binario de búsqueda
5.6.2 Inserción y búsqueda en ABdB: rendimiento en tiempo
5.6.3 El ABDB como estructura de datos para implementar tipos abstractos de datos
6 Colas de prioridades y montículos
6.1 Concepto del TAD Cola de Prioridad
6.2 Implementación de una cola de prioridades
6.3 Montículos
6.3.1 Definición de montículo
6.3.2 Representación de un montículo
6.3.3 Operaciones definidas en un montículo
6.4 Ordenación por montículos
7 Recursión
7.1 Definiciones recursivas y procesos recursivos
7.2 Recursión en C
7.3 Escritura de programas recursivos
7.4 Eficiencia de la recursión
7.5 Simulación de la recursión