Guía docente de la asignatura

Estructura de Datos

Curso 2021 / 2022
Fecha última actualización: 21/06/2021
Fecha de aprobación: 21/06/2021

Grado

Grado en Ingeniería Informática y Administración y Dirección de Empresas

Rama

Ciencias Sociales y Jurídicas

Módulo

Formación Específica de Rama

Materia

Programación e Ingeniería de Software

Curso

2

Semestre

1

Créditos

6

Tipo

Obligatoria

Profesorado

Teoría

  • Joaquín Fernández Valdivia. Grupos: A

Prácticas

  • Francisco Luque Sánchez. Grupos: 1 y 2

Tutorías

Joaquín Fernández Valdivia

jfv@ugr.es
    Primer semestre
    • Lunes de 11:30 a 12:30 (D12 Etsiit)
    • Martes de 10:30 a 11:30 (D12 Etsiit)
    • Martes de 12:30 a 13:30 (D12 Etsiit)
    • Miércoles de 10:30 a 12:30 (D12 Etsiit)
    • Miércoles de 13:30 a 14:30 (D12 Etsiit)
    Segundo semestre
    • Miércoles de 8:30 a 14:30 (D12 Etsiit)

Francisco Luque Sánchez

fluque@ugr.es

Prerrequisitos y/o Recomendaciones

Se recomienda la superación de los contenidos y adquisición de competencias de las materias de formación básica relacionadas con la programación, especialmente de Fundamentos de Programación y de Metodología de la Programación.

Breve descripción de contenidos (Según memoria de verificación del Grado)

  • Introducción a la eficiencia de algoritmos.
  • Tipo de Dato Abstracto (TDA).
  • Especificación e implementación de Tipos de Datos Abstractos (TDAs): listas, pilas, colas, árboles, tablas hash, grafos.

Competencias asociadas a materia/asignatura

Competencias generales

  • CG08 - Conocimiento de las materias básicas y tecnologías, que capaciten para el aprendizaje y desarrollo de nuevos métodos y tecnologías, así como las que les doten de una gran versatilidad para adaptarse a nuevas situaciones.
  • CG09 - Capacidad para resolver problemas con iniciativa, toma de decisiones, autonomía y creatividad. Capacidad para saber comunicar y transmitir los conocimientos, habilidades y destrezas de la profesión de Ingeniero Técnico en Informática.

Competencias específicas

  • CE13 - 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.

Resultados de aprendizaje (Objetivos)

  • Reconocer la importancia de la abstracción y conocer los tipos de abstracciones que aparecen en programación: funcional, de datos, de iteradores y abstracción por generalización.
  • Saber diferenciar entre la especificación, representación e implementación de un tipo de dato abstracto, conociendo los conceptos de Función de Abstracción e Invariante de la Representación.
  • Comprender cómo los conceptos de ocultamiento de información y encapsulamiento ayudan al desarrollo de tipos de datos más fiables.
  • Comprender los métodos de especificación: basados en una definición mediante axiomas o el método constructivo u operacional (basado en el uso de precondiciones y postcondiciones).
  • Ser capaz de diseñar e implementar pequeñas aplicaciones para cada uno de los distintos tipos de datos que se impartan en la materia (por ejemplo, listas, pilas, colas, colas con prioridad, conjuntos, diccionarios, árboles, tablas hash, grafos).
  • Adquirir la capacidad para comprender cómo el uso de distintos tipos de datos afecta a la eficiencia de los algoritmos que la usan.
  • Ser capaz de implementar en lenguajes de alto nivel los tipos de datos propios de la materia así como otros definidos por el usuario.
  • Conocer las distintas representaciones e implementaciones de los tipos de datos que se imparten en la materia.
  • Ser capaz de comparar implementaciones alternativas para un tipo de dato analizando los factores que influyen en la eficiencia y el uso de memoria.
  • Adquirir la capacidad de evaluar las necesidades de una aplicación específica, tomando decisiones justificadas sobre los tipos de datos y la representación más adecuadas.

Programa de contenidos teóricos y prácticos

Teórico

  • Tema 1. Introducción a la eficiencia de los algoritmos.
  • Tema 2. Abstracción de datos
  • Tema3. Tipos de datos contenedores básicos.
    • Pilas, colas, colas con prioridad.
    • Conjuntos, diccionarios.
    • Vectores y Listas.
    • Implementación de TDAs básicos.
  • Tema 4. Tipos de datos contenedores complejos.
    • Árboles, tablas hash, grafos
    • Implementación de TDAs complejos.

Práctico

Serán las siguientes:

  • Eficiencia de algoritmos. Con diversos ejemplos analizar la eficiencia teórica vs. eficiencia empírica.
  • Construcción de TDAs básicos.
  • Uso e Implementación de TDAs lineales.
  • Uso e Implementación de TDAs no lineales.

SEMINARIOS:

  • Aplicación de TDA sobre problemas reales.
  • Uso de las STL en problemas prácticos.

Bibliografía

Bibliografía fundamental

  • Rosa Rodriguez-Sánchez, J. Fdez-Valdivia, J.A. García, Estructuras de Datos en C++. Un enfoque práctico.. 2020
  • A. Garrido, J. Fdez-Valdivia, Abstracción y Estructuras de Datos en C++. Delta public.. 2006
  • A. Garrido. Estructuras de Datos avanzadas con soluciones en C++. Editorial Universidad de Granada 2018.
  • A. Garrido, Programación genérica en C++: L a biblioteca estándar. Editorial Universidad de Granada 2017.
  • A. Garrido. Fundamentos de Programación con la STL. Editorial Universidad de Granada, 2016
  • R. Musser, J. Derge y A. Saini. STL Tutorial and Reference Guide: C++ Programming with the Standard Template Library. 3 Edicicion. Adisson-Wesley 2009.
  • Robson, R. Using the STL (2nd ed.) Springer Verlag. 2013
  • Frank M. Carrano. Data Abstraction & Problem Solving with C++: Walls and Mirrors. 7ed. Pearson. 2017
  • Elliot B. Koffman and Paul AT Wolfgang. Objects, Abstraction, Data Structures and Design: Using C++. Wiley. 2006

Bibliografía complementaria

  • A. Garrido. Metodología de Programación: de bits a objetos. Editorial Universidad de Granada, 2016
  • H.Deitel and P. Deitel. C++ How to program (Early Objects Version) 9/E (2013) Pearson
  • Gilberg, R.F., Forouzan, B.A. . Data structures: A pseudocode approach with C++. Brooks/Cole. 2001
  • N.M. Josuttis, The C++ Standard Library: A Tutorial and Reference. Addison-Wesley. 1999.
  • B. Liskov. J. Guttag. Program Development in Java: Abstraction, Specification, and Object- Oriented Design. Addison-Wesley. 2000.
  • Bjarne Stroustrup. “The C++ Programming Language, 4th Edition”. Addison Wesley Professional, 2013.
  • Dale, Nell. C++ Plus Data Structures 5th (fifth) Jones & Bartlett Learning; Edición: 5. 2011
  • Varsha H. Patil . Data Structures using C++ . OUP India .2012

Enlaces recomendados

Páginas para usar como referencia:

  • C++ Reference (en inglés) http://www.cppreference.com
  • C Plus Plus (en inglés) http://www.cplusplus.com

Metodología docente

  • MD01 Lección Magistral (Clases Teóricas-Expositivas) 
  • MD02 Actividades Prácticas (Resolución de Problemas, Resolución de Casos Prácticos, Desarrollo de Proyectos, Prácticas en Laboratorio, Taller de Programación, Aula de Informática, Prácticas de Campo). 
  • MD03  Seminarios (Debates, Demos, Exposición de Trabajos Tutelados, Conferencias, Visitas Guiadas, Monografías). 
  • MD04 Actividades no presenciales Individuales. 
  • MD05 Actividades no presenciales Grupales. 
  • MD06 Tutorías Académicas. 

Evaluación (instrumentos de evaluación, criterios de evaluación y porcentaje sobre la calificación final)

Evaluación ordinaria

Actividades Formativas Ponderación
Parte teórica 60%
Parte práctica 30%
Otros (seminarios, participación, etc) 10%

Se utilizará el siguiente sistema de evaluación:

  • Para la parte teórica se realizará un examen final. La ponderación de este bloque es del 60%
  • Para la parte práctica se realizarán prácticas de laboratorio, resolución de problemas, desarrollo de proyectos (individuales o en grupo), y/o eventuales entregas de ejercicios sobre el desarrollo y los resultados de las actividades propuestas. La ponderación de este bloque es del 30%
  • En su caso, la parte de trabajo autónomo y los seminarios se evaluarán teniendo en cuenta la asistencia a los seminarios, los problemas propuestos que hayan sido resueltos y entregados por los estudiantes o la presentación oral de los trabajos desarrollados. La ponderación de estos es del 10%

La calificación global será una calificación numérica obtenida mediante la suma de las anteriores calificaciones.

Evaluación extraordinaria

Examen final con preguntas teóricas y prácticas con un valor de 10 puntos. El estudiante podrá guardar la nota obtenida en la convocatoria de Enero en los bloques de "Parte Práctica" y “Otros” y en ese caso la calificación final del examen se ajustará a 6 puntos.

Evaluación única final

De acuerdo a lo establecido en la Normativa de evaluación y de calificación de los estudiantes de la Universidad de Granada aprobada en Consejo de Gobierno de 20 de mayo de 2013 (NCG71/2), la evaluación será preferentemente continua. No obstante, el estudiante que no pueda acogerse a dicho sistema por motivos laborales, estado de salud, discapacidad o cualquier otra causa debidamente justificada podrá acogerse a la evaluación única final. Para ello deberá solicitarlo al Director del Departamento en las dos primeras semanas de impartición de la asignatura o, excepcionalmente, en las dos primeras semanas tras la matriculación en la asignatura (NCG78/9: Instrucción relativa a la aplicación del artículo 8.2).
Esta modalidad de evaluación se realizará en un único acto académico en la fecha establecida por el Centro y consistirá en u n examen escrito (evaluado de 0 a 10) que incluirá preguntas tanto de tipo teórico como práctico que garanticen que el estudiante ha adquirido la totalidad de las competencias descritas en esta misma guía docente.
Todo lo relativo a la evaluación se regirá por la normativa sobre planificación docente y organización de exámenes vigente en la Universidad de Granada.
El sistema de calificaciones se expresará mediante calificación numérica de acuerdo con lo establecido en el art. 5 del R. D 1125/2003, de 5 de septiembre, por el que se establece el sistema europeo de créditos y el sistema de calificaciones en las titulaciones universitarias de carácter oficial y validez en el territorio nacional.

Información adicional

Se recomienda la asistencia regular a las clases teóricas y prácticas.

Plataforma docente usada: PRADO

ESCENARIO A (ENSEÑANZA-APRENDIZAJE PRESENCIAL Y TELE-PRESENCIAL)

Horario (Según lo establecido en el POD)

Según se indica para la docencia normal.

Herramientas para la atención tutorial (Indicar medios telemáticos para la atención tutorial)

  • Plataforma Google Meet o similares
  • Correo electrónico
  • Plataforma PRADO

Medidas de adaptación de la evaluación (Instrumentos, criterios y porcentajes sobre la calificación)

La metodología docente utilizada en esta asignatura puede ser aplicada en el escenario A y en el escenario B sin cambios sustanciales, dado que mucho material facilitado por los profesores será puesto a disposición del estudiante en formato pdf, o vídeo-tutoriales y todo el material de la asignatura se diseña para ser impartido en un entorno completamente online si fuese necesario. En el escenario A, se seguirá la metodología indicada en el apartado “Metodología Docente”, donde el material o los video-tutoriales se estudiarán por el estudiante de forma asíncrona y las clases presenciales síncronas se realizarán en las instalaciones del Centro. En las clases síncronas aparte de la teoría o prácticas que se impartan, se resolverán dudas, realizarán ejercicios y se profundizará en los conceptos estudiados en el material suministrado a los estudiantes.

Evaluación ordinaria

No hay cambios con respecto a lo descrito en el apartado “Evaluación” de este documento.

Evaluación extraordinaria

No hay cambios con respecto a lo descrito en el apartado “Evaluación” de este documento.

Evaluación única final

No hay cambios con respecto a lo descrito en el apartado “Evaluación” de este documento.

ESCENARIO B (SUSPENSIÓN DE LA ACTIVIDAD PRESENCIAL)

Horario (Según lo establecido en el POD)

Según se indica para la docencia normal.

Herramientas para la atención tutorial (Indicar medios telemáticos para la atención tutorial)

  • Plataforma Google Meet o similares
  • Correo electrónico
  • Plataforma PRADO

Medidas de adaptación de la evaluación (Instrumentos, criterios y porcentajes sobre la calificación)

La metodología docente utilizada en esta asignatura puede ser aplicada en el escenario A y en el escenario B sin cambios sustanciales, dado que mucho material facilitado por los profesores será puesto a disposición del estudiante y todo el material de la asignatura se diseñaría para ser impartido en un entorno completamente online si fuese necesario. En el escenario B, se seguirá la metodología indicada en el apartado “Metodología Docente”, donde los apuntes o video-tutoriales se estudiarán por el estudiante de forma asíncrona y las clases telepresenciales síncronas se realizarán a través de Google Meet.

Evaluación ordinaria

  • Teoría: Examen síncrono
    • Descripción: Resolución de problemas teórico-prácticos realizados sobre plataforma online.
    • Porcentaje sobre calificación final: 60%
  • Prácticas: Aprendizaje basado en proyectos
    • Descripción: Elaboración y entregas de ejercicios/proyectos prácticos y la explicación de sus fundamentos, relacionados con todos los con todos los contenidos teóricos de la asignatura.
    • Porcentaje sobre calificación final: 40%

Evaluación extraordinaria

Examen síncrono:

  • Descripción: Resolución de problemas teórico-prácticos realizados sobre plataforma online.
  • Porcentaje sobre calificación final: 100%

El estudiante podrá guardar la nota obtenida en la convocatoria ordinaria en los bloques de "Parte Práctica" y “Otros” y en ese caso la calificación final del examen se ajustará a 6 puntos.

Evaluación única final

  • Examen por vía telemática
  • Porcentaje sobre calificación final: 100%