Gestión Académica

Universidad de Oviedo

Uniovi.es | Inicio | Buscador | Mapa Web

| |

Grado en Ingeniería Informática del Software
GIISOF01-2-003
Estructuras de Datos
Descripción General y Horario Guía Docente

Coordinador/es:

BERNARDO MARTIN GONZALEZ RODRIGUEZ
martinuniovi.es
MARIA DEL ROSARIO SUAREZ FERNANDEZ
mrsuarezuniovi.es

Profesorado:

BERNARDO MARTIN GONZALEZ RODRIGUEZ
martinuniovi.es
(English Group)
MARIA DEL ROSARIO SUAREZ FERNANDEZ
mrsuarezuniovi.es
MARIA PUERTO PAULE RUIZ
pauleuniovi.es
Óscar Rodríguez Prieto
rodriguezoscaruniovi.es
(English Group)
NESTOR GARCIA FERNANDEZ
nestoruniovi.es

Contextualización:

Asignatura de la materia de Programación impartida durante el primer semestre del segundo curso. Cuenta con 6 créditos ECTS equivalentes a 150 horas de trabajo; 60 horas presenciales y 90 horas no presenciales.

La asignatura cuenta con 2 horas de clases expositivas a la semana (hasta un total de 21 horas), 2 horas de prácticas de laboratorio semanales (hasta un total de 28 horas) a lo que se suman 7 horas semestrales de seminarios y 2 horas semestrales de tutorías grupales.

Requisitos:

El estudiante que curse esta asignatura ha de disponer de elevados conocimientos y destreza en el diseño y programación de aplicaciones informáticas. Deberá haber aprobado por tanto las asignaturas de programación del primer curso, especialmente las siguientes asignaturas:

  1. Introducción a la Programación.
  2. Metodología de la Programación.

Competencias y resultados de aprendizaje:

  • Competencias específicas:

Código

Descripción

Bas 3

Capacidad para comprender y dominar los conceptos básicos de matemática discreta, lógica y algorítmica y complejidad computacional, y su aplicación para la resolución de problemas propios de la ingeniería.

Com.6

Conocimiento y aplicación de los procedimientos algorítmicos básicos de las tecnologías informáticas para diseñar soluciones a problemas, analizando la idoneidad y complejidad de los algoritmos propuestos.

Com.7

Conocimiento, diseño y utilización de forma eficiente los tipos y estructuras de datos más adecuados a la resolución de un problema.

Com.8

Capacidad para analizar, diseñar, construir y mantener aplicaciones de forma robusta, segura y eficiente, eligiendo el paradigma y los lenguajes de programación más adecuados.

ISW-1

Capacidad para desarrollar, mantener y evaluar servicios y sistemas software que satisfagan todos los requisitos del usuario y se comporten de forma fiable y eficiente, sean asequibles de desarrollar y mantener y cumplan normas de calidad, aplicando las teorías, principios, métodos y prácticas de la Ingeniería del Software.

 

  • Competencias generales:

Código

Descripción

CG1

Competencia para el diseño de soluciones a problemas

CG4

Análisis y Síntesis

CG7

Destreza en la expresión escrita

CG10

Destreza en la comunicación oral y escrita en inglés

 

  • Resultados de aprendizaje:

Código       

Descripción

RA.P.3

Analizar, diseñar, desarrollar, seleccionar, evaluar y mantener aplicaciones y sistemas informáticos, asegurando su fiabilidad y calidad aplicando las teorías, principios, métodos y prácticas de la Ingeniería del Software, eligiendo el paradigma y los lenguajes de programación más adecuados, considerando las limitaciones derivadas del coste, del tiempo, de la existencia de sistemas ya desarrollados y de las propias organizaciones

RA.P.4

Conocer y aplicar procedimientos algorítmicos básicos, tipos y estructuras de datos más adecuados a la resolución de un problema, analizando la idoneidad y complejidad de los mismos.

RA.P.6

Capacidad de dar solución a un problema de integración en función de las estrategias, estándares y tecnologías disponibles.

RA.P.7

Documentar y exponer la solución a un problema a través de textos y diagramas, cumpliendo normas y estándares del diseño y desarrollo del software en español/inglés.

Contenidos:

1-    Conceptos Fundamentales

•    Tipos de datos predefinidos.
•    Tipos de datos estructurados.
•    Genericidad en java, contenedores de tipo <T>.
•    Introducción a la algoritmia.
•    Estimación de tiempos de ejecución.

2-    Estructuras de datos en Red  

•    Grafos genéricos.
•    Conceptos básicos de Teoría de Grafos.
•    Matrices de Adyacencia.
•    Listas de Adyacencia.
•    Caminos de coste mínimo.
•    El algoritmo de Dijkstra.
•    El algoritmo de Floyd-Warshall.
•    Búsqueda en profundidad.
•    Árboles de recubrimiento de coste mínimo.
•    Algoritmo de Prim versus Algoritmo de Kruskal.

3-    Estructuras de datos Jerárquicas

•    Árboles genéricos.
•    Conceptos básicos sobre árboles.
•    Métricas de rendimiento.
•    Árboles de búsqueda.
•    Árboles binarios.
•    Árboles de búsqueda binarios.
•    Árboles de Adelson-Velski.
•    Árboles multicamino. 
•    Árboles de Bayer & McCreight

4-    Colas de Prioridad

•    Colas de prioridad genéricas.
•    Montículos binarios genéricos.
•    Operaciones especiales utilizando montículos binarios.

5-    Estructuras Diccionario

•    Transformación de claves (hashing).
•    Tablas hash genéricas.
•    Funciones de dispersión genéricas.
•    Tablas hash abiertas.
•    Tablas hash cerradas.
•    Exploración lineal.
•    Agrupamientos (clustering).
•    Borrado Perezoso (Lazy deletion).
•    Exploración cuadrática.
•    Dispersión doble.
•    Redispersión.

Metodología y plan de trabajo:

 

 

 

TRABAJO PRESENCIAL

TRABAJO NO

PRESENCIAL

Temas

Horas totales

Clase Expositiva

Prácticas de aula /Seminarios/ Talleres

Prácticas de laboratorio /campo /aula de  informática/ aula de idiomas

Tutorías grupales

 Evaluación

Total

Trabajo grupo

Trabajo autónomo

Total

Conceptos Fundamentales

13

1

 

4

 

 

5

 

8

8

Estructuras en Red

38

5

3

6

1

 

15

 

23

23

Estructuras Jerárquicas

50

8

2

9

1

 

20

 

30

30

Colas de Prioridad

8

2

 

2

 

 

4

 

4

4

Estructuras Diccionario

41

5

2

7

 

 

14

 

25

25

Total

150

21

7

28

2

2

60

0

90

90

 

MODALIDADES

Horas

%

Totales

Presencial

Clases Expositivas

21

14

60

Práctica de aula / Seminarios / Talleres

7

4,7

Prácticas de laboratorio / campo / aula de informática / aula de idiomas

28

18,7

Tutorías grupales

2

1,3

Sesiones de evaluación

2

1,3

No presencial

Trabajo en Grupo

0

0

90

Trabajo Individual

90

60

 

Total

150

 

 

De forma excepcional, si las condiciones sanitarias lo requieren, se podrán incluir actividades de docencia no presencial. En cuyo caso, se informará al estudiantado de los cambios efectuados

Evaluación del aprendizaje de los estudiantes:

Se podrán aplicar mecanismos automatizados de detección de plagio sobre el código de los proyectos y ejercicios realizados por los estudiantes. Se aplicará la normativa al respecto en el Reglamento de evaluación de los resultados de aprendizaje y las competencias adquiridas por el alumnado.

Convocatoria Ordinaria

La evaluación del aprendizaje será continua durante el semestre y está basada en:

  1. Nota de Teoría: control de aprendizaje de la parte teórica de la asignatura mediante un examen.
  2. Nota de Laboratorio: implementación, prueba y documentación de cuatro proyectos de laboratorio de realización individual que serán sometidos a un proceso de evaluación continua durante su desarrollo. Habrá también dos sesiones de evaluación (exámenes prácticos), una sobre los contenidos de los temas 1 y 2, y otro sobre los contenidos de los temas 3, 4 y 5. En cada sesión de evaluación se deberán realizar ejercicios prácticos que ponderan la evaluación continua de los temas correspondientes.

                   Nota laboratorio = P1*10% + (P2*EX2)*30% + (P3*EX3)*36% + (P4*EX4)*24%

           Donde:

  • P1 (Algoritmia): Evaluación continua y proyecto entregado del Proyecto 1
  • P2 (Estructuras de datos en red):  Evaluación continua y proyecto entregado del Proyecto 2
  • EX2: Examen práctico correspondiente a la primera sesión de evaluación. Se puntúa entre 0 y 1.
  • P3 (Estructuras de datos jerárquicas):  Evaluación continua y proyecto entregado del Proyecto 3
  • P4 (Estructuras de datos diccionario):  Evaluación continua y proyecto entregado del Proyecto 4
  • EX3 y EX4: Estos exámenes se realizan en la segunda sesión de evaluación. Cada uno de estos exámenes se puntúa con una nota entre 0 y 1.

       De este proceso se obtiene la siguiente:

               Nota preliminar = 0.6 * Nota de laboratorio + 0.4 * Nota de Teoría

       Para superar el proceso de evaluación continua se requiere:

  1. Asistencia mínima. Será requisito una asistencia mínima solamente en prácticas de laboratorio. Se permite un máximo de 2 ausencias.
  2. Puntuación mínima en Teoría. Será requisito obtener al menos 3 puntos (sobre 10) en la nota de teoría.
  3. Puntuación mínima en Prácticas de laboratorio:
    • Es obligatorio entregar TODOS los proyectos.
    • Se ha de obtener una puntuación mínima de 3 en la nota ponderada por el examen práctico correspondiente, de los proyectos 2, 3 y 4. Esto es, (P2*EX2) >=3 y (P3*EX3)>=3 y (P4*EX4)>= 3

Si se cumplen todos los requisitos anteriores, la nota final será:

        Nota final = Nota preliminar

Si solo se cumple el requisito de requisito de Puntuación Mínima, la nota final será:

        Nota final = Mínimo (3.5; Nota preliminar).

En caso contrario, la nota final será:

        Nota final = Mínimo (2; Nota preliminar).

Se considerará No Presentado en el caso de no haber participado en un conjunto de actividades de evaluación cuyo peso en la calificación total suponga menos de un 50%.

 

Convocatorias extraordinarias y evaluación diferenciada

Nota de Teoría: control de aprendizaje de la parte teórica de la asignatura mediante un examen.

Nota de Prácticas. Los estudiantes desarrollarán un proyecto práctico en el laboratorio.

El proyecto constará de una funcionalidad básica (compuesta por varios apartados) cuyo nivel de implementación, prueba y documentación debe ser del 100% para alcanzar la nota mínima (5). El proyecto tendrá una funcionalidad avanzada cuyo nivel de implementación, prueba y documentación determinará la nota entre 5 y 10.

De este proceso se obtiene la siguiente:

        Nota preliminar = 0.6 * Nota de Prácticas + 0.4 * Nota de Teoría

Será requisito obtener al menos 3 puntos (sobre 10) en ambas notas (teoría y prácticas).

Si se cumplen todos los requisitos anteriores, la nota final será:

        Nota final = Nota preliminar

En otro caso la nota final será:

        Nota final = Mínimo (3.5; nota preliminar).

 

Consideraciones para todas las convocatorias del curso

  • Se guardará la nota de teoría aprobada (>=5) para la siguiente convocatoria
  • Se guardará la nota de laboratorio aprobada (>=5) para la siguiente convocatoria

De forma excepcional, si las condiciones sanitarias lo requieren, se podrán incluir actividades de docencia no presencial. En cuyo caso, se informará al estudiantado de los cambios efectuados.

 

Recursos, bibliografía y documentación:

GONZALEZ RODRÍGUEZ, Martín; (2013) Estructuras de Datos en Red. LULU. ISBN: 978-1-300-67031-5. Raleigh, North Carolina, USA.

GONZALEZ RODRÍGUEZ, Martín; (2013) Estructuras de Datos Jerárquicas. LULU. ISBN: 978-1-300-67083-4. Raleigh, North Carolina, USA.

GONZALEZ RODRÍGUEZ, Martín; (2013) Estructuras de Datos Diccionario. LULU. ISBN: 978-1-300-67089-6. Raleigh, North Carolina, USA.

JOYANES AGUILAR, LUIS; ZAHONERO, IGNACIO (2007) Estructuras de Datos en Java. McGraw Hill. ISBN: 9788448156312.

WEISS, Mark Allen; (2010) Estructuras de Datos en Java. Addison Wesley. ISBN 978-8478290352. 

WIRTH, Niklaus; (1980) Algoritmos + estructuras de datos. Ediciones del Castillo. ISBN 9788421901724