Guía docente de Estructura de Datos (2161125)
Grado
Rama
Módulo
Materia
Curso
Semestre
Créditos
Tipo
Profesorado
Teórico
Práctico
- Ignacio Aguilera Martos Grupo: 1
- Carlos Gustavo Porcel Gallego Grupo: 2
Tutorías
Joaquín Fernández Valdivia
Email- Primer semestre
- Lunes de 10:30 a 12:30 (D12 (Etsiit))
- Martes de 11:30 a 13:30 (D12 (Etsiit))
- Miércoles
- 09:30 a 10:30 (D12 (Etsiit))
- 11:30 a 12:30 (D12 (Etsiit))
- Segundo semestre
- Miércoles de 08:30 a 14:30 (D12 (Etsiit))
Ignacio Aguilera Martos
EmailCarlos Gustavo Porcel Gallego
Email- Primer semestre
- Lunes de 12:30 a 13:30 (Tut (Etsiit))
- Martes de 11:30 a 14:00 (Fo10 (Etsiit))
- Miércoles de 09:30 a 12:00 (Fo10 (Etsiit))
- Segundo semestre
- Miércoles
- 10:30 a 12:30 (Fo11 (Etsiit))
- 13:30 a 14:30 (Tut (Etsiit))
- Jueves de 13:30 a 14:30 (Tut (Etsiit))
- Viernes de 17:30 a 19:30 (Fo11 (Etsiit))
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.
Resultados del proceso de formación y de aprendizaje
Conocimientos o Contenidos
- C01. Conoce las materias básicas y tecnologías que capacitan para el aprendizaje y desarrollo de nuevos métodos y tecnologías, así como las que dotan de una gran versatilidad para adaptarse a nuevas situaciones.
Competencias
- COM01. Concebir, redactar, organizar, planificar, desarrollar y firmar proyectos en el ámbito de la ingeniería en informática que tengan por objeto, de acuerdo con los conocimientos adquiridos, la concepción, el desarrollo o la explotación de sistemas, servicios y aplicaciones informáticas.
- COM02. Dirigir las actividades objeto de los proyectos del ámbito de la informática de acuerdo con los conocimientos adquiridos.
- COM04. Definir, evaluar y seleccionar plataformas hardware y software para el desarrollo y la ejecución de sistemas, servicios y aplicaciones informáticas.
- COM05. Concebir, desarrollar y mantener sistemas, servicios y aplicaciones informáticas empleando los métodos de la ingeniería del software como instrumento para el aseguramiento de su calidad.
- COM06. Concebir y desarrollar sistemas o arquitecturas informáticas centralizadas o distribuidas integrando hardware, software y redes.
- COM08. Realizar mediciones, cálculos, valoraciones, tasaciones, peritaciones, estudios, informes, planificación de tareas y otros trabajos análogos de informática.
- COM10. Aplicar los elementos básicos de economía y de gestión de recursos humanos, organización y planificación de proyectos, así como la legislación, regulación y normalización en el ámbito de los proyectos informáticos, de acuerdo con los conocimientos adquiridos.
- COM11. Diseñar, desarrollar, seleccionar y evaluar aplicaciones y sistemas informáticos, asegurando su fiabilidad, seguridad y calidad, conforme a principios éticos y a la legislación y normativa vigente.
- COM12. Planificar, concebir, desplegar y dirigir proyectos, servicios y sistemas informáticos en todos los ámbitos, liderando su puesta en marcha y su mejora continua y valorando su impacto económico y social.
- COM13. Elaborar el pliego de condiciones técnicas de una instalación informática que cumpla los estándares y normativas vigentes.
- COM14. Administrar y mantener sistemas, servicios y aplicaciones informáticas.
Habilidades o Destrezas
- HD01. Resuelve problemas con iniciativa, toma de decisiones, autonomía y creatividad, y sabe comunicar y transmitir los conocimientos, habilidades y destrezas de la profesión de Ingeniero Técnico en Informática.
- HD03. Emplea técnicas de negociación, hábitos de trabajo efectivos, liderazgo y comunicación en todos los entornos de desarrollo de software.
- HD04. Diseña soluciones a problemas aplicando los procedimientos algorítmicos básicos de las tecnologías informáticas y analiza la idoneidad y complejidad de los algoritmos propuestos.
- HD05. Diseña y utiliza de forma eficiente los tipos y estructuras de datos más adecuados a la resolución de un problema.
- HD06. Analiza, diseña, construye y mantiene aplicaciones de forma robusta, segura y eficiente, eligiendo el paradigma y los lenguajes de programación más adecuados.
- HD12. Aplica los principios, metodologías y ciclos de vida de la ingeniería de software.
- HD13. Diseña y evalúa interfaces persona computador que garanticen la accesibilidad y usabilidad a los sistemas, servicios y aplicaciones informáticas.
- HD15. Posee la capacidad de organizar y planificar, así como de gestionar la información.
- HD16. Toma decisiones basadas en criterios objetivos (datos experimentales, científicos o de simulación disponibles), y argumenta y justifica lógicamente dichas decisiones, sabiendo aceptar otros puntos de vista.
- HD19. Trabaja en equipo, usando competencias demostrables mediante la elaboración y defensa de argumentos.
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
- Tema 3. 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
- 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 la 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. 2012.
- 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. Jones & Bartlett Learning; 6a edición. 2016
- Varsha H. Patil . Data Structures using C++ . New Delhi, India: Oxford University Press, .2018
Enlaces recomendados
Metodología docente
- MD01. Lección magistral.
- MD02. Actividades prácticas.
- MD03. Seminarios.
- MD04. Actividades no presenciales.
- MD05. Tutorías académicas.
Evaluación (instrumentos de evaluación, criterios de evaluación y porcentaje sobre la calificación final)
Evaluación ordinaria
Porcentajes de evaluación
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
Información de interés para estudiantado con discapacidad y/o Necesidades Específicas de Apoyo Educativo (NEAE): Gestión de servicios y apoyos (https://ve.ugr.es/servicios/atencion-social/estudiantes-con-discapacidad).