Fichas de asignaturas 2012-13
![]() |
ESTRUCTURAS DE DATOS NO LINEALES |
![]() ![]() ![]() |
|
Asignatura |
![]() |
| |
Profesores |
![]() |
| |
Competencias |
![]() |
| |
Resultados Aprendizaje |
![]() |
| |
Actividades Formativas |
![]() |
| |
Sistemas de Evaluación |
![]() |
| |
Contenidos |
![]() |
| |
Bibliografía |
![]() |
Código | Nombre | |||
Asignatura | 21714016 | ESTRUCTURAS DE DATOS NO LINEALES | Créditos Teóricos | 2,5 |
Título | 21714 | GRADO EN INGENIERÍA INFORMÁTICA | Créditos Prácticos | 5 |
Curso | 2 | Tipo | Obligatoria | |
Créd. ECTS | 6 | |||
Departamento | C137 | INGENIERÍA INFORMÁTICA |
Si desea visionar el/los fichero/s referente/s al cronograma sobre el número de horas de los estudiantes pulse sobre su nombre:
Requisitos previos
Es recomendable haber aprobado al menos el 75% de cada una de las materias básicas de informática y matemáticas.
Recomendaciones
Haber cursado con aprovechamiento las asignaturas previas Cálculo, Estadística, Matemática Discreta, Introducción a la Programación, Metodología de la Programación y Análisis de Algoritmos y Estructuras de Datos. En particular, para poder seguir la asignatura con poca dificultad es aconsejable: - Conocer los aspectos relacionados con la descomposición de problemas, el diseño modular y la abstracción operacional. - Saber especificar de manera informal los algoritmos mediante precondiciones y postcondiciones. - Ser capaz de definir algoritmos de una manera correcta mediante el uso de estructuras de control, bucles, sentencias condicionales, etc. según convenga a la finalidad, eficiencia y claridad del código. - Conocer los mecanismos de transferencia de parámetros y utilizarlos correctamente. - Conocer y usar correctamente los tipos de datos básicos que ofrecen los lenguajes de programación y especialmente, los tipos estructurados: cadenas de caracteres, vectores, matrices, registros y ficheros. - Dominar el uso de punteros y la gestión dinámica de memoria. - Ser capaz de implementar, en un lenguaje de programación de alto nivel, programas de pequeño y mediano tamaño haciendo uso de la descomposición modular del software. - Saber elegir y diseñar adecuadamente casos de prueba para los programas y funciones implementados. - Distinguir y saber resolver sumas aritméticas y geométricas. Reconocer otras sumas notables: la armónica y la expresión del número e mediante serie de potencias. - Conocer las nociones básicas de combinatoria (combinaciones y permutaciones) y los rudimentos de la probabilidad discreta: variable aleatoria discreta, noción de probabilidad, hipótesis de equiprobabilidad, media y media ponderada. - Conocer los mecanismos de abstracción en programación y su importancia para la resolución de problemas. - Comprender la necesidad de separación entre los niveles de especificación, implementación y aplicación en el desarrollo de módulos software. - Conocer los conceptos de programación basada en tipos abstractos y de reutilización de los módulos de software. - Conocer el concepto de recursividad y sus tipos y saber implementar algoritmos recursivos para resolver problemas. - Saber separar perfectamente los aspectos computacionales puros de los efectos colaterales como la E/S y reconocer la importancia de que la E/S, los interfaces gráficos, etc., no deben mezclarse ni ensuciar las funciones que implementan los algoritmos y las estructuras de datos. - Saber analizar algoritmos, así como expresar, interpretar y comparar los resultados de los análisis en notación asintótica. - Saber realizar análisis empíricos de los algoritmos, utilizando técnicas de medida del tiempo en un computador. - Saber resolver ecuaciones de recurrencia sencillas y algunos casos notables.
Profesores
Nombre | Apellido 1 | Apellido 2 | C.C.E. | Coordinador | |
JOSE ANTONIO | ALONSO DE LA | HUERTA | TEU | N |
![]() |
José Fidel | Argudo | Argudo | TEU | S |
![]() |
Mª TERESA | GARCÍA | HORCAJADAS | PROFESORA TITULAR DE ESCUELA UNIVERSITARIA | N |
![]() |
Competencias
Se relacionan aquí las competencias de la Materia/módulo o título a que pertenece la asignatura, entre las que el profesor podrá indicar las relacionadas con la asignatura.
Identificador | Competencia | Tipo |
C06 | 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 idioneidad y complejidad de los algoritmos propuestos | ESPECÍFICA |
C07 | 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. | ESPECÍFICA |
CG02 | 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. | GENERAL |
CG04 | Que los estudiantes puedan transmitir información, ideas, problemas y soluciones a un público tanto especializado como no especializado. | GENERAL |
CG05 | Que los estudiantes hayan desarrollado aquellas habilidades de aprendizaje necesarias para emprender estudios posteriores con un alto grado de autonomía. | GENERAL |
G08 | 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. | ESPECÍFICA |
G09 | 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. | ESPECÍFICA |
T01 | Capacidad para la resolución de problemas | GENERAL |
T02 | Capacidad para tomar decisiones | GENERAL |
T03 | Capacidad de organización y planificación. | GENERAL |
T04 | Capacidad de aplicar los conocimientos en la práctica. | GENERAL |
T05 | Capacidad para trabajar en equipo | GENERAL |
T07 | Capacidad de análisis y síntesis. | GENERAL |
T09 | Creatividad y espíritu inventivo en la resolución de problemas científicotécnicos. | GENERAL |
T11 | Aptitud parta la comunicación oral y escrita en la lengua nativa. | GENERAL |
T12 | Capacidad para el aprendizaje autónomo. | GENERAL |
T15 | Capacidad para interpretar documentación técnica. | GENERAL |
T17 | Capacidad para el razonamiento crítico. | GENERAL |
Resultados Aprendizaje
Identificador | Resultado |
R1 | R1. Desarrollar programas, basándose en tipos abstractos de datos, de forma independiente de la implementación de éstos. |
R2 | R2. Organizar un determinado volumen de datos de la forma más racional posible en función de los requisitos del problema a resolver. |
R3 | R3. Implementar de diferentes formas una especificación de software dada. El alumno aprenderá a escoger entre diferentes implementaciones alternativas de una abstracción de datos, y razonar sobre la solución escogida en función de los recursos necesarios (tiempo de ejecución, espacio requerido, etc.). |
R4 | R4. Resolver problemas utilizando los TAD mas apropiados. |
Actividades formativas
Actividad | Detalle | Horas | Grupo | Competencias a desarrollar |
01. Teoría | Las clases teóricas se basarán fundamentalmente en las explicaciones del profesor sobre el temario, así como en la realización de ejercicios prácticos (sobre pizarra) asociados al mismo. |
20 | C06 C07 CG04 CG05 G09 T01 T02 T07 T11 T12 T15 T17 | |
02. Prácticas, seminarios y problemas | Se incentivará la participación activa del alumnado en las clases, realizando en grupos el desarrollo de especificaciones e implementaciones de TAD, y provocando el profesor un debate abierto sobre cada uno de los temas que se traten, motivando a los alumnos para que propongan soluciones alternativas a los problemas planteados y su posterior discusión. |
10 | C06 C07 CG04 CG05 G09 T01 T02 T05 T07 T09 T11 T12 T15 T17 | |
03. Prácticas de informática | En las clases prácticas se proporcionará al alumno guiones de prácticas en los que se incluirán cuestiones teóricas y una serie de problemas de programación, que se resolverán empleando un lenguaje orientado a objetos. Los alumnos asistirán a clase con dichos guiones, que los tendrán disponibles en el campus virtual con suficiente antelación, y con los problemas planteados, de forma que en clase se discutirá en grupo la resolución de dichos problemas y el profesor explicará aquéllos que puedan plantear mayor dificultad; finalmente, cada alumno programará en el ordenador las soluciones de los problemas del guión. |
30 | C06 C07 CG02 CG04 CG05 G08 G09 T01 T02 T03 T04 T05 T07 T09 T11 T12 T15 T17 | |
10. Actividades formativas no presenciales | Estas actividades se corresponden con las horas de trabajo personal del alumno, incluyendo las horas de estudio de los contenidos teóricos y prácticos de la asignatura, así como la realización de problemas y trabajos propuestos. |
86 | C06 C07 CG02 CG04 CG05 G08 G09 T01 T02 T03 T04 T05 T07 T09 T11 T12 T15 T17 | |
12. Actividades de evaluación | Examen final |
4 |
Evaluación
Criterios Generales de Evaluación
- Adecuación de la solución a la especificación del problema. - Elección de los tipos abstractos de datos apropiados. - Uso correcto de los TADs según su especificación. - Elección adecuada de la implementación de cada TAD. - Presentación, claridad y eficiencia de la solución.
Procedimiento de Evaluación
Tarea/Actividades | Medios, Técnicas e Instrumentos | Evaluador/es | Competencias a evaluar |
Examen final | Rúbrica |
|
C06 C07 CG02 CG04 CG05 G08 G09 T07 |
Pruebas de evaluación de resultados de actividades de aprendizaje | Rúbricas |
|
C06 C07 CG02 CG04 CG05 G08 G09 T07 |
Procedimiento de calificación
Para la primera convocatoria se seguirá un sistema de evaluación continua. En el resto de convocatorias, ya que no habrá docencia, se aplicará el sistema de evaluación final. Evaluación continua: A lo largo del curso, en fechas publicadas con antelación, se realizarán dos pruebas para la evaluación de los resultados de las actividades de aprendizaje. La media aritmética de las notas obtenidas en estas dos pruebas tendrá un peso del 30% en la calificación final del alumno. El 70% restante corresponderá al resultado del examen final. Solamente en casos de fuerza mayor que hayan impedido al alumno presentarse a las pruebas mencionadas éste podrá solicitar al profesor coordinador de la asignatura el cambio al sistema de evaluación final. Evaluación final: Aquellos alumnos que se sometan a evaluación final realizarán el examen final establecido para la evaluación continua y además se les hará una prueba especial para evualuar los resultados de las actividades de aprendizaje. La nota correspondiente a la evaluación del alumno se compone del 70% del examen final y el 30% de la prueba especial.
Descripcion de los Contenidos
Contenido | Competencias relacionadas | Resultados de aprendizaje relacionados |
1. Árboles. 1.1. Concepto de árbol. Definiciones básicas. 1.2. Árboles binarios. 1.2.1. Especificación de operaciones. 1.2.2. Implementación vectorial de árboles binarios. 1.2.3. Implementación mediante un vector de posiciones relativas. 1.2.4. Implementación usando celdas enlazadas. 1.3. Árboles generales. 1.3.1. Especificación de operaciones. 1.3.2. Implementación mediante listas de hijos. 1.3.3. Implementación usando celdas enlazadas. 1.4. Recorridos de árboles. Algoritmos recursivos e iterativos. 1.4.1. Preorden. 1.4.2. Inorden. 1.4.3. Postorden. 1.4.4. Recorrido por niveles. 1.5. Árboles binarios de búsqueda. 1.6. Árboles equilibrados AVL. 1.7. Árboles parcialmente ordenados (montículos). Colas con prioridad. 1.8. Árboles B. |
C06 C07 CG02 CG04 CG05 G08 G09 T02 T03 T07 T11 T12 T15 T17 | R1 R2 R3 |
2. Grafos. 2.1. Concepto de grafo. Definiciones básicas. 2.2. Diferentes representaciones de grafos. 2.2.1. Matriz de adyacencia y matriz de costes. 2.2.2. Listas de adyacencia. 2.3. Recorridos de grafos. Búsqueda. 2.3.1. En profundidad. 2.3.2. En anchura. 2.4. Algoritmos de caminos de coste mínimo. 2.4.1. Algoritmo de Dijkstra. 2.4.2. Algoritmo de Floyd. 2.4.3. Algoritmo de Warshall. 2.5. Algoritmos de árboles de extensión de coste mínimo. 2.5.1. Algoritmo de Prim. 2.5.2. Algoritmo de Kruskal. |
C06 C07 CG02 CG04 CG05 G08 G09 T02 T03 T07 T11 T12 T15 T17 | R1 R2 R3 |
PRÁCTICAS: Resolución de problemas de programación utilizando tipos abstractos de datos no lineales. Práctica 1. Entrada y salida de árboles Práctica 2. Problemas de árboles binarios I Práctica 3. Problemas de árboles binarios II Práctica 4. Problemas de árboles generales Práctica 5. Problemas de árboles binarios de búsqueda Práctica 6. Problemas de árboles parcialmente ordenados y otros árboles Práctica 7. Problemas de grafos I Práctica 8. Problemas de grafos II Práctica 9. Problemas de grafos III |
C06 C07 CG02 CG04 CG05 G08 G09 T01 T02 T03 T04 T05 T07 T09 T11 T12 T15 T17 | R1 R2 R3 R4 |
Bibliografía
Bibliografía Básica
Aho, A.; Hopcroft, J.; Ullman, J. Estructuras de datos y algoritmos.
Addison-Wesley, 1988. Alonso, J.A.; Argudo, J.F.; García, M.T.
Estructuras de Datos en C.
Depto. Lenguajes y Sistemas Informáticos, UCA, 2003.
Fernández-Valdivia, J.; Garrido, A.; García, M. Estructuras de datos. Un enfoque práctico usando C. 1998.
Heileman, G. L. Estructuras de Datos, Algoritmos y Programación Orientada a Objetos. McGraw-Hill, 1996.
Langsam, Y; Augenstein, M. J.; Tenenbaum, A. M. Estructuras de Datos con C y C++.
Prentice-Hall, 1997.
Bibliografía Específica
Hernández Figueroa, Z. J. y otros
Fundamentos de Estructuras de Datos. Soluciones en Ada, Java y C++.
Paraninfo, 2005
Nyhoff, Larry R.
TADs, estructuras de datos y resolución de problemas con C++.
Prentice-Hall, 2006.
Standish, T.A. Data Structures, Algorithms and Software Principles in C. Addison-Wesley, 1995. Stroustrup, Bjarne.
The C++ programming language. Special edition.
Addison-Wesley. 2000.
Stroustrup, Bjarne.
Programming: Principles and practice using C++.
Addison-Wesley. 2008.
Weiss, M. Data Structures and Algorithm Analysis in C.
Addison-Wesley, 1996.
El presente documento es propiedad de la Universidad de Cádiz y forma parte de su Sistema de Gestión de Calidad Docente.