Estructuras de Datos (2012)
Diagrama de temas
-
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 Asignatura
Queues, 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.
-
Tema 1. Programación imperativa
Ejemplos
-
OR-F-001. Módulo complejo (interfaz).
-
OR-F-002. Módulo complejo (implementación).
-
OR-F-003. Proyecto Java herencia múltiple.
- OR-F-004. Reutilización por composición.
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.
-
. Desastre Ariane 5 (vídeo).
- OR-F-008. «Design by contract: the lessons of Ariane». (Jezequel & Meyer, 2002).
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).
- OR-F-017. «No silver bullet: essence and accidents of software engineering». (Brooks, 1987).
Herramientas
-
OR-F-018. «Contract4J: diseño por contrato para Java».
-
OR-F-019. ESC/Java2: verificación automática de programas (Wikipedia).
Tema 2. Fundamentos de complejidad algorítimica
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).
Tema 3. Técnicas de implementación
Ejemplos
-
OR-F-023. Clase lista enlazada (pseudocódigo).
-
OR-F-024. Ejemplo lista enlazada (Java).
-
OR-F-025. Ejemplo lista enlazada (C#).
- OR-F-026. Tabla Hash cerrada (orientada a objetos).
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.
- OR-F-033. Clase magistral sobre árboles balanceados del MIT (Inglés).
Tema 4. Concepto y especificación de Tipos Abstractos de Datos
Ejemplos
-
OR-F-034. Especificación algebraica tipo Día-Semana.
-
OR-F-035. Especificación algebraica lista inserción cabeza.
- OR-F-036. Especificación algebraica conjunto.
Bibliografía y recursos
- OR-F-037. Algebraic implementation of abstract data types». (H. Ehrig, H.J. Kreowski, B. Mahr & P. Padawitz).
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).
Tema 5. Tipos Abstractos de Datos Lineales
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.
- OR-F-054. Tabla (mapa, diccionario, aplicación).
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.
Tema 6. Tipos Abstractos de Datos Jerárquicos
Recursos
Lecturas (muy) avanzadas
-
OR-F-062. Binary Space Partition (BSP) (Wikipedia).
-
Página
-
Página
-
Página
-
Página
-
Página
-
Página
-
Página
-
Página
-
Página
-
Página
-
Página
-
Página
-
Página
-
Página
-