Consulta de Guías Docentes



Curso Académico: 2023/24

20060 - ESTRUCTURAS DE DATOS


Information of the subject

Código - Nombre:
20060 - ESTRUCTURAS DE DATOS
Titulación:
771 - Graduado/a en Ciencia e Ingeniería de Datos
800 - Microtítulo en Programación
Centro:
350 - Escuela Politécnica Superior
Curso Académico:
2023/24

1. Detalles de la asignatura

1.1. Materia

Informática

1.2. Carácter

800 - Optativa
771 - Formación básica

1.3. Nivel

800 - Estudios Propios (MECES 2)
771 - Grado (MECES 2)

1.4. Curso

1

1.5. Semestre

Segundo semestre

1.6. Número de créditos ECTS

6.0

1.7. Idioma

Español

1.8. Requisitos previos

No hay

1.9. Recomendaciones

-

1.10. Requisitos mínimos de asistencia

El itinerario de Evaluación Continua requerirá una asistencia continuada a las clases teóricas,  así como presentarse al examen parcial, la entrega puntual de las prácticas y los ejercicios que se requieran. El no cumplir estos requisitos supondrá el abandono del itinerario.

En cualquier caso, la asistencia a clases se considera esencial para la superación de la asignatura, ya que dicha asistencia supone la  toma de contacto explicada con el material de la asignatura, con la que el estudiante obtiene una primera y en general suficiente comprensión de dicho material. Dicha comprensión es más costosa de obtener por otras vías.

1.11. Coordinador/a de la asignatura

Eduardo Serrano Jerez

1.12. Competencias y resultados del aprendizaje

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.12.2. Resultados de aprendizaje

  • Comprender técnicas de programación utilizando lenguajes de alto nivel.
  • Comprender tipos abstractos de datos, así como su implementación en los lenguajes de programación de alto nivel.
  • Conocer las principales estructuras de datos necesarias para implementar los tipos asbtractos.
  • Comprender la evolución de la abstracción de datos: desde los tipos abstractos hasta la orientación a objetos.
  • Conocer y practicar buenos usos de programación.

1.12.3. Objetivos de la asignatura

-

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

 

1.14. Referencias de consulta

  • Data Structures and Algorithms in Python, Michael T. Goodrich, Roberto Tamassia, Michael H. Goldwasser, Wiley (2013)
  • Fundamentals of Python : data structures, Keneeth A. Lambert (2018)

2. Metodologías docentes y tiempo de trabajo del estudiante

2.1. Presencialidad

Modalidad Horas Porcentaje
ACTIVIDADES PRESENCIALES 54 36%
ACTIVIDADES NO PRESENCIALES 96 64%

 

 

2.2. Relación de actividades formativas

ACTIVIDAD FORMATIVA: HORAS: PRESENCIALIDAD:
Clases teóricas en aula. 28 100
Prácticas con medios informáticos
(todas aquellas en las que la componente
principal es software).
24 100
Actividades de evaluación. Realización
de cuestionarios /pruebas escritas
individuales de evaluación en el aula con
la presencia del profesor.
2 100
Trabajo autónomo del estudiante 96 0

 



3. Sistemas de evaluación y porcentaje en la calificación final

3.1. Convocatoria ordinaria

Existen dos modalidades de evaluación: continua y no continua. En ambas modalidades, la nota final de la asignatura (NFA) corresponderá a la ponderación al 65% de la nota de teoría y al 35% de la nota de prácticas que se habrán de aprobar por separado para superar la asignatura.

La evaluación continua en teoría supone la realización de un examen parcial liberatorio del 50% de la materia de teoría en caso de que se supere.

La evaluación no continua supone la realización de un examen final que abarcará la totalidad de la nota de teoría.

La evaluación de prácticas supondrá la entrega en plazo de 4 prácticas distribuidas durante el curso.

3.1.1. Relación actividades de evaluación

La nota de la asignatura (NFA) corresponderá a la ponderación al 65% de la nota de teoría (NT) y al 35% de la nota de prácticas (NP):

NFA= 65%NT+ 35%NP

Para superar la asignatura será necesario aprobar la parte práctica y la parte de teoría por separado. En caso contrario se aplicará la siguiente fórmula de ponderación: NFA=0.65*MIN(5,NT)+0.35*MIN(5,NP)

La evaluación continua supone la realización de un examen parcial liberatorio del 50% de la materia de teoría en caso de que se supere y de un examen final que abarcará el resto de la materia. En este caso, la nota final de teoría (NFT) corresponderá a la ponderación entre la nota del examen parcial (NP) y la nota del examen final (NEF). NFT=(0.4*NP+0.6*NEF)/2. En el caso de que no se supere el examen parcial la nota final de teoría corresponderá al 100% de la nota del examen final que abarcará toda la materia del curso.

La evaluación no continua supone la realización de un examen final que abarcará la totalidad de la nota de teoría.

La evaluación de prácticas supondrá la entrega de 4 prácticas durante el curso. La nota de prácticas (NP) será la nota media de las tres últimas: NP=(NP2+NP3+NP4)/3. La primera de las prácticas se evaluará como APTO / NO APTO. Para superar las prácticas será necesario obtener una calificación de APTO en la P1, una nota no inferior a 4 en cada una de las restantes prácticas y una nota media (NP) no inferior a 5.   

 

 

3.2. Convocatoria extraordinaria

La convocatoria extraordinaria supondrá la elaboración de un examen de teoría que corresponderá el 100% de la nota de teoría, la entrega y superación de todas las prácticas suspendidas o no entregadas durante la evaluación ordinaria y la realización de una prueba práctica. La nota de teoría o de prácticas que correspondan a superar cada una de estas partes se conserva en la convocatoria extraordinaria.

3.2.1. Relación actividades de evaluación

La nota final de la asignatura (NFA) en la convocatoria extraordinaria corresponderá a la ponderación al 65% de la nota de teoría (NT) y al 35% de la nota de prácticas (NP):

NFA=65%NT+35%NP

Para superar la asignatura será necesario probar la parte práctica y la parte de teoría por separado. En caso contrario se aplicará la siguiente fórmula de ponderación: NFA=0.65*MIN(5,NT)+0.35*MIN(5,NP)

Para superar las prácticas sera necesario:

  • Presentar las 4 prácticas realizadas durante el curso.
  • Superar una prueba práctica que se realizará en el laboratorio.

La nota de prácticas (NP) se obtendrá a partir de la prueba práctica de laboratorio.

4. Cronograma orientativo

Semana Contenido
1

Presentación y motivación de la asignatura

Repaso del lenguaje de programación Python
2

Unidad 1: Tipos abstractos de datos.

- Se examinarán los conceptos de modularidad y abstracción de datos y se discutirán los beneficios de utilizar la abstracción de datos en el desarrollo de algoritmos y aplicaciones software.

- El alumno aprenderá a: (i) especificar informalmente un tipo de datos abstractos de dato, (ii) usar los TAD en una aplicación determinada, (iii) distinguir entre un TAD y su implementación

3

Unidad 2: Pilas y sus aplicaciones.

- Se estudiará pormenorizadamente el TAD Pila y se describirán ejemplos de aplicaciones elementales de las pilas (e.g, inversión de cadenas de caracteres, cambio de base,…).

- Se analizarán los beneficios y desventajas de las implementaciones del TAD Pila basadas en listas (arrays).

4

Cont. Unidad 2: Pilas y sus aplicaciones.

- Se aplicarán las pilas para resolver algunos problemas “clásicos” (e.g.,  utilización de las pilas en algoritmos para evaluar y traducir expresiones algebraicas)

5

Unidad 3: Colas y sus aplicaciones.

- Se estudiará pormenorizadamente el TAD Cola describiendo ejemplos de aplicaciones del mismo.

- Se discuten los beneficios y desventajas de las implementaciones del TAD Cola basadas en arrays y arrays circulares.

6

Unidad 4: Listas enlazadas

- Se introducirá el concepto de lista secuencial frente al de lista enlazada

- Se describirán diferentes Implementaciones de las listas enlazadas: con arrays y con nodos.

7

 

Cont. Unidad 4: Listas enlazadas

-Se describirán otros tipos de listas enlazadas (e.g., las listas circulares, y las doblemente enlazadas)

- Se analizará la idoneidad de las listas como estructuras de datos para implementar otros TADs (e.g., pilas y colas) 

Parcial Liberatorio (PL)

8

-Comienzo Unidad 5:  Árboles, árboles ordenados

-Se estudiará en concepto de árbol, su terminología y los recorridos en profundidad y en anchura.

-Se analizarán diferentes implementaciones del TAD árbol binario
9

-Cont. Unidad 5:  Árboles, árboles ordenados

-Se describirán los árboles de expresión como un método eficiente para representar fórmulas algebraicas

- Se introducen los árboles binarios de búsqueda y se estudiarán algunas aplicaciones habituales de los mismos.

10

Unidad 6:  Colas de prioridad,  montículos

-Se estudiará el TAD colas de prioridades y se presentarán algunas de sus aplicaciones informáticas.

-Se introduce el montículo como estructura de datos para implementar las colas de prioridades

11

Cont. 6:  Colas de prioridad,  montículos

-Se analizan el coste de las operaciones básicas (insertar y eliminar mínimo) en  un montículo.

- Se describe el algoritmo de ordenación Heap-sort

12

Unidad 7:  Recursión

-Se describirán los pasos que siguen los lenguajes de programación al llamar a un sub-programa

-Se compararán las soluciones iterativas y recursivas de diferentes problemas.

-Se describirán diferentes técnicas algorítmicas basadas en la recursión

13

Cont. Unidad 7:  Recursión

- Se estudiará un procedimiento algorítmico para eliminar la recursión, simulándola mediante  procedimientos iterativos.

14

Repaso y preparación del examen

 

Examen prácticas

Examen Final (P1 / P2)

 


Curso Académico: 2023/24

20060 - ESTRUCTURAS DE DATOS


Información de la asignatura

Código - Nombre:
20060 - ESTRUCTURAS DE DATOS
Titulación:
771 - Graduado/a en Ciencia e Ingeniería de Datos
800 - Microtítulo en Programación
Centro:
350 - Escuela Politécnica Superior
Curso Académico:
2023/24

1. Detalles de la asignatura

1.1. Materia

Informática

1.2. Carácter

800 - Optativa
771 - Formación básica

1.3. Nivel

800 - Estudios Propios (MECES 2)
771 - Grado (MECES 2)

1.4. Curso

1

1.5. Semestre

Segundo semestre

1.6. Número de créditos ECTS

6.0

1.7. Idioma

Español

1.8. Requisitos previos

No hay

1.9. Recomendaciones

-

1.10. Requisitos mínimos de asistencia

El itinerario de Evaluación Continua requerirá una asistencia continuada a las clases teóricas,  así como presentarse al examen parcial, la entrega puntual de las prácticas y los ejercicios que se requieran. El no cumplir estos requisitos supondrá el abandono del itinerario.

En cualquier caso, la asistencia a clases se considera esencial para la superación de la asignatura, ya que dicha asistencia supone la  toma de contacto explicada con el material de la asignatura, con la que el estudiante obtiene una primera y en general suficiente comprensión de dicho material. Dicha comprensión es más costosa de obtener por otras vías.

1.11. Coordinador/a de la asignatura

Eduardo Serrano Jerez

1.12. Competencias y resultados del aprendizaje

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.12.2. Resultados de aprendizaje

  • Comprender técnicas de programación utilizando lenguajes de alto nivel.
  • Comprender tipos abstractos de datos, así como su implementación en los lenguajes de programación de alto nivel.
  • Conocer las principales estructuras de datos necesarias para implementar los tipos asbtractos.
  • Comprender la evolución de la abstracción de datos: desde los tipos abstractos hasta la orientación a objetos.
  • Conocer y practicar buenos usos de programación.

1.12.3. Objetivos de la asignatura

-

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

 

1.14. Referencias de consulta

  • Data Structures and Algorithms in Python, Michael T. Goodrich, Roberto Tamassia, Michael H. Goldwasser, Wiley (2013)
  • Fundamentals of Python : data structures, Keneeth A. Lambert (2018)

2. Metodologías docentes y tiempo de trabajo del estudiante

2.1. Presencialidad

Modalidad Horas Porcentaje
ACTIVIDADES PRESENCIALES 54 36%
ACTIVIDADES NO PRESENCIALES 96 64%

 

 

2.2. Relación de actividades formativas

ACTIVIDAD FORMATIVA: HORAS: PRESENCIALIDAD:
Clases teóricas en aula. 28 100
Prácticas con medios informáticos
(todas aquellas en las que la componente
principal es software).
24 100
Actividades de evaluación. Realización
de cuestionarios /pruebas escritas
individuales de evaluación en el aula con
la presencia del profesor.
2 100
Trabajo autónomo del estudiante 96 0

 



3. Sistemas de evaluación y porcentaje en la calificación final

3.1. Convocatoria ordinaria

Existen dos modalidades de evaluación: continua y no continua. En ambas modalidades, la nota final de la asignatura (NFA) corresponderá a la ponderación al 65% de la nota de teoría y al 35% de la nota de prácticas que se habrán de aprobar por separado para superar la asignatura.

La evaluación continua en teoría supone la realización de un examen parcial liberatorio del 50% de la materia de teoría en caso de que se supere.

La evaluación no continua supone la realización de un examen final que abarcará la totalidad de la nota de teoría.

La evaluación de prácticas supondrá la entrega en plazo de 4 prácticas distribuidas durante el curso.

3.1.1. Relación actividades de evaluación

La nota de la asignatura (NFA) corresponderá a la ponderación al 65% de la nota de teoría (NT) y al 35% de la nota de prácticas (NP):

NFA= 65%NT+ 35%NP

Para superar la asignatura será necesario aprobar la parte práctica y la parte de teoría por separado. En caso contrario se aplicará la siguiente fórmula de ponderación: NFA=0.65*MIN(5,NT)+0.35*MIN(5,NP)

La evaluación continua supone la realización de un examen parcial liberatorio del 50% de la materia de teoría en caso de que se supere y de un examen final que abarcará el resto de la materia. En este caso, la nota final de teoría (NFT) corresponderá a la ponderación entre la nota del examen parcial (NP) y la nota del examen final (NEF). NFT=(0.4*NP+0.6*NEF)/2. En el caso de que no se supere el examen parcial la nota final de teoría corresponderá al 100% de la nota del examen final que abarcará toda la materia del curso.

La evaluación no continua supone la realización de un examen final que abarcará la totalidad de la nota de teoría.

La evaluación de prácticas supondrá la entrega de 4 prácticas durante el curso. La nota de prácticas (NP) será la nota media de las tres últimas: NP=(NP2+NP3+NP4)/3. La primera de las prácticas se evaluará como APTO / NO APTO. Para superar las prácticas será necesario obtener una calificación de APTO en la P1, una nota no inferior a 4 en cada una de las restantes prácticas y una nota media (NP) no inferior a 5.   

 

 

3.2. Convocatoria extraordinaria

La convocatoria extraordinaria supondrá la elaboración de un examen de teoría que corresponderá el 100% de la nota de teoría, la entrega y superación de todas las prácticas suspendidas o no entregadas durante la evaluación ordinaria y la realización de una prueba práctica. La nota de teoría o de prácticas que correspondan a superar cada una de estas partes se conserva en la convocatoria extraordinaria.

3.2.1. Relación actividades de evaluación

La nota final de la asignatura (NFA) en la convocatoria extraordinaria corresponderá a la ponderación al 65% de la nota de teoría (NT) y al 35% de la nota de prácticas (NP):

NFA=65%NT+35%NP

Para superar la asignatura será necesario probar la parte práctica y la parte de teoría por separado. En caso contrario se aplicará la siguiente fórmula de ponderación: NFA=0.65*MIN(5,NT)+0.35*MIN(5,NP)

Para superar las prácticas sera necesario:

  • Presentar las 4 prácticas realizadas durante el curso.
  • Superar una prueba práctica que se realizará en el laboratorio.

La nota de prácticas (NP) se obtendrá a partir de la prueba práctica de laboratorio.

4. Cronograma orientativo

Semana Contenido
1

Presentación y motivación de la asignatura

Repaso del lenguaje de programación Python
2

Unidad 1: Tipos abstractos de datos.

- Se examinarán los conceptos de modularidad y abstracción de datos y se discutirán los beneficios de utilizar la abstracción de datos en el desarrollo de algoritmos y aplicaciones software.

- El alumno aprenderá a: (i) especificar informalmente un tipo de datos abstractos de dato, (ii) usar los TAD en una aplicación determinada, (iii) distinguir entre un TAD y su implementación

3

Unidad 2: Pilas y sus aplicaciones.

- Se estudiará pormenorizadamente el TAD Pila y se describirán ejemplos de aplicaciones elementales de las pilas (e.g, inversión de cadenas de caracteres, cambio de base,…).

- Se analizarán los beneficios y desventajas de las implementaciones del TAD Pila basadas en listas (arrays).

4

Cont. Unidad 2: Pilas y sus aplicaciones.

- Se aplicarán las pilas para resolver algunos problemas “clásicos” (e.g.,  utilización de las pilas en algoritmos para evaluar y traducir expresiones algebraicas)

5

Unidad 3: Colas y sus aplicaciones.

- Se estudiará pormenorizadamente el TAD Cola describiendo ejemplos de aplicaciones del mismo.

- Se discuten los beneficios y desventajas de las implementaciones del TAD Cola basadas en arrays y arrays circulares.

6

Unidad 4: Listas enlazadas

- Se introducirá el concepto de lista secuencial frente al de lista enlazada

- Se describirán diferentes Implementaciones de las listas enlazadas: con arrays y con nodos.

7

 

Cont. Unidad 4: Listas enlazadas

-Se describirán otros tipos de listas enlazadas (e.g., las listas circulares, y las doblemente enlazadas)

- Se analizará la idoneidad de las listas como estructuras de datos para implementar otros TADs (e.g., pilas y colas) 

Parcial Liberatorio (PL)

8

-Comienzo Unidad 5:  Árboles, árboles ordenados

-Se estudiará en concepto de árbol, su terminología y los recorridos en profundidad y en anchura.

-Se analizarán diferentes implementaciones del TAD árbol binario
9

-Cont. Unidad 5:  Árboles, árboles ordenados

-Se describirán los árboles de expresión como un método eficiente para representar fórmulas algebraicas

- Se introducen los árboles binarios de búsqueda y se estudiarán algunas aplicaciones habituales de los mismos.

10

Unidad 6:  Colas de prioridad,  montículos

-Se estudiará el TAD colas de prioridades y se presentarán algunas de sus aplicaciones informáticas.

-Se introduce el montículo como estructura de datos para implementar las colas de prioridades

11

Cont. 6:  Colas de prioridad,  montículos

-Se analizan el coste de las operaciones básicas (insertar y eliminar mínimo) en  un montículo.

- Se describe el algoritmo de ordenación Heap-sort

12

Unidad 7:  Recursión

-Se describirán los pasos que siguen los lenguajes de programación al llamar a un sub-programa

-Se compararán las soluciones iterativas y recursivas de diferentes problemas.

-Se describirán diferentes técnicas algorítmicas basadas en la recursión

13

Cont. Unidad 7:  Recursión

- Se estudiará un procedimiento algorítmico para eliminar la recursión, simulándola mediante  procedimientos iterativos.

14

Repaso y preparación del examen

 

Examen prácticas

Examen Final (P1 / P2)