General
Estructuras de Datos (2012)
Estructuras de Datos (2012)
|
Estructuras de Datos (2012)
Profesores Mario Aldea Rivas Pablo Sánchez BarreiroDepartamento de Matemáticas, Estadística y Computación
|
La asignatura tiene como objetivo dar a conocer los fundamentos de análisis, diseño, implementación, verificación y pruebas de los tipos abstractos de datos básicos y más comúnmente utilizados en el desarrollo de aplicaciones informáticas. Además, el alumno/a aprenderá a usar dichos tipos abstractos de datos como base para la construcción de aplicaciones informáticas, sabiendo elegir según las particularidades de cada aplicación, aquél tipo abstracto de datos que resulte más adecuado, atendiendo principalmente a criterios de eficiencia espacial y temporal.
The goal of this subject is to make the student able to analyse, design, implement, verify and test basic abstract data types that are most frequently used for the development of software systems. Moreover, the student will learn how to use abstract data types as a cornerstone for the development of software systems, being able to select the abstract data type that is most suitable for an application according to its specific characteristics and considering as the temporal as the spatial efficiency.
Palabras Clave de la AsignaturaQueues, Tables, Tablas Hash, Hash, Estructuras de Datos, Algebraic Specifications, Colas, Pilas, Tablas de Dispersión, Lists, Stacks, Data Structures, Complexity, Complejidad Algorítmica, Trees, Abstract Data Types, Árboles, Tipos Abstractos de Datos, Especificaciones Algebraicas, Listas. |
Datos identificativos de la Asignatura
|
Tema 1.1. Modularidad e interfaces.
Tema 1.2. Relaciones de herencia: formas de implementar herencia múltiple.
Tema 1.3. Estructuras de datos genéricas.
Tema 1.4. Buenas prácticas de programación.
Tema 2.1. Notación O(n).
Tema 2.2. Cálculo de complejidad en algoritmos iterativos.
Tema 2.3. Cálculo de complejidad en algoritmos recursivos.
Tema 3.1. Simples: vectores, enlazado mediante punteros y cursores.
Tema 3.2. Tabla hash: funciones de hashing. Técnicas de resolución de colisiones: abierto y cerrado. Implementación de tablas hash.
Tema 3.3. Estructuras arbóreas de búsqueda: árboles binarios y de búsqueda.
Tema 3.4. Árboles binarios equilibrados, árboles AVL y árboles rojinegros.
Tema 3.5. Implementación de árboles.
Tema 4.1. Concepto de Tipo Abstracto de Datos.
Tema 4.2. Especificación algebraica de Tipos Abstractos de Datos.
Tema 4.3. Implementación de Tipos Abstractos de Datos.
Tema 4.4. Relación especificación-implementación.
Tema 4.5. Maude: un entorno de reescritura lógica para la especificación de Tipos Abstractos de Datos.
Tema 5.1. Conjuntos, bolsas, listas y vectores.
Tema 5.2. Pilas, colas.
Tema 5.3. Tablas, aplicaciones o mapas.
Tema 5.4. Relaciones de orden: colas de prioridad.
Tema 5.5. Aplicaciones de las estructuras de datos lineales.
Tema 6.1. El tipo abstracto de datos árbol.
Tema 6.2. Recorrido y ordenación de árboles.
Tema 6.3. Aplicaciones.
P.1. Introducción.
P.2. Complejidad algorítmica.
P.3. Tipos enumerados.
P.4. Polimorfismo y enlazado dinámico.
P.5. Listas e Iteradores.
P.6. Estructuras enlazadas.
P.7. Tablas de dispersión.
P.8. Árboles Binarios de Búsqueda.
P.9. Implementación de TADs.
P.10. Desarrollo de una mini aplicación utilizando TADs.
Ricardo Peña (2005): «Diseño de programas: formalismo y abstracción». Pearson Educacion. 3ª Ed. (Especificación Algebraica, Complejidad Algorítmica, TADs).
Bertrand Meyer (2000): «Construcción de software orientada a objetos». Prentice Hall. 2ª Ed. (Principios de Orientación a Objetos, TADs, Implementación de TADs).
Alfred V. Aho, Jeffrey D. Ullman & John E. Hopcroft (1988): «Estructuras de datos y algoritmos». Addison-Wesley.
Bertrand Meyer (2009): «Touch of class: learning to program well with objects and contracts». Springer. Septiembre. (Principios de Orientación a Objetos, TADs, Implementación de TADS).
Mark A. Weiss (2000): «Estructuras de datos en Java». Addison Wesley.
David A. Watt & Deryck F. Brown (2001): «Java collections». Wiley.
Frank M. Carrano & Janet J. Prichard (2001): «Data sbstraction and problem solving with Java». Addison Wesley.
Michell Waite (1998): «Data structures & algorithms in Java». Waite Group Press.
MC-F-001. Presentación del Tema 1.
MC-F-002. Diseño por contrato: desarrollo de software fiable.
MC-F-003. Lenguaje de pseudocódigo.
MC-F-004. Presentación del Tema 2.
MC-F-006. Presentación del Tema 3. Parte 1: Lineales.
MC-F-007. Presentación del Tema 3. Parte 2: Tablas Hash.
MC-F-008. Presentación del Tema 3. Parte 3: Árboles.
MC-F-009. Presentación del Tema 3. Parte 4: Árboles binarios de búsqueda.
MC-F-010. Presentación del Tema 4.
MC-F-011. Verificación de Propiedades de un Tipo Abstracto de Datos usando su Especificación Algebraica.
MC-F-012. Presentación del Tema 5.
MC-F-013. Presentación del Tema 6.
PR-F-001. Práctica 1. Computando bajo el frío.
PR-F-004. Práctica 2. En fin Marcial, más corre el logaritmo que el lineal (actualizado).
PR-F-010. Práctica 3. Mis amigos los enumerados.
PR-F-016. Práctica 4. Una clase para ordenarlos a todos.
PR-F-019. Práctica 5. Lista implementada con Array. Iterador.
PR-F-020. Práctica 6. Listas doblemente enlazadas. Operaciones de acceso posicional.
PR-F-021. Tabla de dispersión abierta. Operaciones básicas.
PR-F-022. Árboles binarios de búsqueda. Operaciones básicas.
PR-F-025. Práctica 10.0. Hogares inteligentes que no lo son tanto.
PR-F-026. Práctica 10.1. Directo al grano.
PR-F-027. Práctica 10.2. ¡¡Extra, Extra!! Un dispositivo ha cambiado su estado.
EP-F-001. Ejercicios del Tema 1.
EP-F-004. Ejercicios del Tema 3.
EP-F-005. Ejercicios del Tema 4.
EP-F-006. Ejercicios Clase Implementación TAD Cola.
EP-F-007. Solución ejercicios implementación.
EP-F-008. Ejercicios Clase usando TADs.
EP-F-009. Solución Ejerciciso usando TADs.
EP-F-010. Ejercicios Tema 5.
EP-F-011. Ejercicios Diseño Funciones Dispersión.
Ejemplos
OR-F-001. Módulo complejo (interfaz).
OR-F-002. Módulo complejo (implementación).
OR-F-003. Proyecto Java herencia múltiple.
Referencias
OR-F-005. «On the criteria to be used in decomposing systems into modules». (Parnas, 1972).
OR-F-006. Entrada Interesante sobre herencia en un Blog.
OR-F-007. Desastre Ariane 5 (vídeo).
Lecturas (muy) avanzadas
OR-F-009. «Doubts about the positive impact of static type systems on programming tasks in single developer projects - An empirical study». (Hanenberg).
OR-F-010. «An experiment about static and dynamic type systems». (Hanenberg).
OR-F-011. Disertación de Barbara Liskov sobre el «Poder de la abstracción».
OR-F-012. «Matters of (Meta-) modelling». (Khüne, 2006).
OR-F-013. «Can programming be liberated from the two-level style?: multi-level programming with DeepJava». (Khüne & Schreiber, 2007).
OR-F-014. «Object-oriented programming with flavors». (Moon, 1986).
OR-F-015. «A monotonic superclass linearization for Dylan». (Barrett et al).
OR-F-016. «Morphing: safely shaping a class in the image of others». (Huang et al).
Herramientas
OR-F-018. «Contract4J: diseño por contrato para Java».
OR-F-019. ESC/Java2: verificación automática de programas (Wikipedia).
Bibliografía y recursos
OR-F-020. «Fundamentos de algoritmia». (Brassard & Bratley).
OR-F-021. Gráficas con tasas de crecimiento.
OR-F-022. Lista de problemas NP completos (Wikipedia).
Ejemplos
OR-F-023. Clase lista enlazada (pseudocódigo).
OR-F-024. Ejemplo lista enlazada (Java).
OR-F-025. Ejemplo lista enlazada (C#).
Recursos
OR-F-027. Implementación libre colecciones Java.
OR-F-028. Apuntes sobre Tablas Hash (Universidad de Granada).
OR-F-029. Animación sobre árboles binarios de búsqueda.
OR-F-030. Otra animación sobre árboles de búsqueda.
OR-F-031. Animación sobre árboles AVL.
OR-F-032. Animación sobre Árboles Rojinegros.
Ejemplos
OR-F-034. Especificación algebraica tipo Día-Semana.
OR-F-035. Especificación algebraica lista inserción cabeza.
Bibliografía y recursos
Lecturas (muy) avanzadas
OR-F-038. «The algebraic specification of abstract data types». (Guttag & Horning, 1976).
OR-F-039. «Limits of the "algebraic" specification of abstract data types». (Majster, 1977).
OR-F-040. «Formalizing design patterns: a case study for the iterator pattern». (Alfoudari & Steggles, 2002).
OR-F-041. «Abstract data types and software validation». (Guttag et al, 1978).
OR-F-042. «Formal specification and analysis of domain specific models using maude». (Rivera et al, 2011).
Especificaciones Algebraicas TADs Lineales
OR-F-043. Bolsas.
OR-F-044. Conjuntos.
OR-F-045. Secuencias.
OR-F-046. Secuencias sin repeticiones.
OR-F-047. Vector.
OR-F-048. Matriz.
OR-F-049. Pila (Stack).
OR-F-050. Cola (Queue).
OR-F-051. Secuencia ordenada.
OR-F-052. Secuencias sin repeticiones ordenada.
OR-F-053. Colas con prioridad.
TADs Lineales en lenguajes de programación actuales
Recursos
OR-F-058. «LZW data compression». (Nelson, 1989).
OR-F-059. Proyecto Java cálculo expresiones polaca inversa.
Recursos
Lecturas (muy) avanzadas
OR-F-062. Binary Space Partition (BSP) (Wikipedia).
MÉTODOS DE EVALUACIÓN "ESTRUCTURAS DE DATOS" |
||||
Descripción |
Tipología |
Evaluación final |
Recuperación |
% |
Problemas y ejercicios |
Trabajo |
No |
No |
0% |
|
||||
Prácticas |
Evaluación en laboratorio |
No |
Sí |
5% |
|
||||
Exámenes prácticos |
Evaluación en laboratorio |
No |
Sí |
45% |
|
||||
Examen final |
Examen escrito |
Sí |
Sí |
50% |
|
||||
Examen final de prácticas |
Evaluación en laboratorio |
Sí |
Sí |
0% |
|
||||
TOTAL |
100% |
|||
OBSERVACIONES:
|
||||
OBSERVACIONES para alumnos/as a tiempo parcial:
|
![]() |
Mario Aldea Rivas
Departamento de Matemáticas, Estadística y Computación UNIVERSIDAD DE CANTABRIA |
![]() |
Pablo Sánchez Barreiro
Departamento de Matemáticas, Estadística y Computación UNIVERSIDAD DE CANTABRIA |
Contacto Información legal Sobre OCW RSS Universidad de Cantabria