Universidad Pública de Navarra



Año Académico: 2010/2011
Graduado o Graduada en Ingeniería Informática por la Universidad Pública de Navarra
Código: 240204 Asignatura: ESTRUCTURAS DE DATOS
Créditos: 6 Tipo: Obligatoria Curso: 1 Periodo: 2º S
Departamento: Ingeniería Matemática e Informática
Profesorado:
FARIÑA FIGUEREDO, FEDERICO   [Tutorías ] ARDAIZ VILLANUEVA, OSCAR   [Tutorías ]
ROYO ROMEO, ALBERTO   [Tutorías ]

Partes de este texto:

 

Descripción/Contenidos

Esta asignatura aborda dos aspectos fundamentales para el diseño de programas de tamaño medio.

En primer lugar se presentan metodologías de diseño que permiten escribir programas de calidad (correctos, fáciles de leer y entender, flexibles, eficientes y de fácil mantenimiento). Por un lado el diseño descendente que permite resolver grandes problemas como una sucesión de programas pequeños a diferentes niveles de abstracción ('divide y vencerás'). Por otro lado el diseño modular que permite organizar los programas de modo qeu sean mucho a más fáciles de mantener y chequear al limitar las decisiones de cambio a pequeños módulos.

En segundo lugar, se presenta el concepto de tipo abstracto de dato (TAD) y se trabaja con algunos TADs de amplio uso (pilas, colas, listas, etc.). Los TADs son, junto con los algoritmos, la base sobre la que se construyen los programas. En esta asignatura se trabaja con las primitivas que permiten construir TADs (tablas, tuplas y punteros), se explican diferentes implementaciones de diversos TADs, se comprueba como los TADs ayudan a resolver diferentes problemas y se resuelven problemas que aparecen al usar dichos TADs.

Subir

Descriptores

Diseño modular, diseño descendente, tipos abstractos de datos, pilas, colas, listas, tablas de dispersión (hash), árboles

Subir

Competencias genéricas

Las competencias genéricas que un alumno debería adquirir en esta asignatura son:

  • G1: Capacidad para concebir, redactar, organizar, planificar, desarrollar y firmar proyectos en el ámbito de la ingeniería en informática que tengan por objeto la concepción, el desarrollo o la explotación de sistemas, servicios y aplicaciones informáticas.
  • G5: Capacidad para 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.
  • G9: 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.
Aparte de estos conocimientos y habilidades, la asignatura  pretende la adquisición de las competencias transversales: T1- Capacidad de análisis y síntesis, T4- Resolución de problemas, T8- Aprendizaje autónomo, y T10- Motivación por la calidad.

Subir

Competencias específicas

Las competencias específicas que un alumno debería adquirir en esta asignatura son:

  • FC6: 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 idoneidad y complejidad de los algoritmos propuestos.
  • FC7 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.
  • FC8 Capacidad para analizar, diseñar, construir y mantener aplicaciones de forma robusta, segura y eficiente, eligiendo el paradigma y los lenguajes de programación más adecuados.

Subir

Metodología



Metodología - Actividad Horas Presenciales Horas no Presenciales
A-1 Clases teóricas 15 (teoría) 15 (repaso de teoría)
A-2 Prácticas 28 (con ordenador)
10 (lectura de guiones)
A-3 Debates, puestas en común, tutoría grupos 15 (problemas)
 
A-4 Elaboración de trabajo   63 (resolución de problemas)
A-7 Exámenes, pruebas de evaluación 3  
A-8 Tutorías individuales 1  
...    
Total 62 88

Subir

Evaluación


Aspecto Criterios Instrumento Peso
N1 Participación

Evaluación competencias: G9, T10, FC6, FC7
Asistencia a las sesiones presenciales.

Intervención y aportaciones
Control de firmas en el laboratorio.

Entrega en tiempo y forma de problemas de evaluación.
10%
N2 Conceptos teórico/prácticos

Evaluación competencias: G1, G5, G9, T1, T4, T8, T10, FC6, FC7, FC8
Comprensión de los conocimientos teóricos y su aplicación a la resolución de problemas.

Capacidad de análisis y síntesis.

Respuesta en tiempo, forma y adecuación de contenidos.

Aplicación de los conocimientos en casos prácticos.

Capacidad de comunicación correcta y precisa.
Corrección de los problemas de evaluación entregados.

Examen final.
45%
N3 Conceptos prácticos

Evaluación competencias: G1, G5, G9, T1, T4, T8, T10, FC6, FC7, FC8
Aplicación de los conocimientos de teoría al desarrollo de programas correctos con criterios de calidad exigidos a este nivel.

Aplicación de los conocimientos en la práctica.

Creatividad, capacidad de análisis y síntesis.

Capacidad de comunicación correcta y precisa.
Examen práctico final.
45%

Cada aspecto tendrá una nota entre 0 y 10 puntos. La nota final de la asignatura (N) se obtiene atendiendo al siguiente procedimiento:

    N= 9*min(N2, N3) + N1/10 si N2<4 o N3 <4
    N= 9*(N2+N3)/20 + N1/10 si N2>=4 y N3>=4

Superarán la asignatura los estudiantes cuya nota final N sea mayor o igual que 5,0.

Subir

Temario

Los Resultados de Aprendizaje que se pretenden alcanzar con esta asignatura se resumen a continuación: (1) Entender las primitivas que permiten construir tipos estructurados a partir de tipos básicos (tablas, tuplas, punteros) (2) Comprender el concepto de tipo abstracto de dato TAD (3) Diseñar tipos de datos adecuados a los problemas que se pretende resolver (4) Resolver problemas que orecisen utilizar TADs de amplio uso (pilas, colas, ...)(5) Utilizar módulos que implementen TADs para programar soluciones a problemas concretos. (6) Comprender técnicas de diseño de algoritmos que permitanabordar problemas usando esquemas conocidos. Para ello se propone el temario:

Programa de Teoría

Tema 1. Acciones y funciones.
1.1. Acciones y funciones (modularidad 1). 1.2. Clases de parámetros. 1.3. Declaración de acciones. 1.4.Llamadas a acciones. 1.5. Declaración de funciones. 1.6. Llamadas a funciones. 1.7. Acciones y funciones internas. 1.8 Ámbito de validez de las declaraciones.

Tema 2. Acceso secuencial: ficheros.
2.1. Introducción. 2.2. Lectura y escritura de ficheros. 2.3. Esquema de recorrido. 2.4. Esquema de búsqueda. 2.5.Composición de esquemas.

Tema 3. Diseño descendente.
3.1. Introducción. 3.2. Ejemplo 1: parejas de caracteres. 3.3. Ejemplo 2: subsecuencias. 3.4. Ventajas del diseño descendente. 3.5. Definición de tipos, tipos estructurados.

Tema 4. Diseño modular.
4.1. Conceptos elementales. 4.2. Creadores y usuarios. 4.3. Descomposición modular. 4.4.Ventajas e inconvenientes.

Tema 5. Estructuras de datos lineales.
5.1. Tipos abstractos de datos (TADs). 5.2. Especificación de TADs. 5.3. Pilas. 5.4. Colas. 5.5. Listas.

Tema 6. Tablas de dispersión
6.1.Diccionarios y conjuntos . 6.2. Tablas dispersas. 6.3. Funciones de dispersión. 6.4. Resolución de colisiones.

Tema 7. Arboles
7.1. Introducción . 7.2. El TAD árbol binario. 7.3. Implementaciones. 7.4. Recorridos de árboles. 7.5 Arboles generales

Programa de Prácticas

Las prácticas se organizan en catorce sesiones de 2h de duración con los siguientes contenidos. (Se asume que los estudiantes ya han desarrollado 14 horas de programación en Pascal de la asignatura Informática según la ficha).

Práctica  1. Compilación bajo linux

Práctica 2. Acciones y funciones.

Práctica 3. Ficheros.

Práctica 4. Diseño descendente.

Práctica 5. Diseño Modular.

Práctica 6. TADs (implementación estática).

Práctica 7. TADs (implementación dinámica).

Subir

Bibliografía

Acceda a la bibliografía que el profesorado de la asignatura ha solicitado a la Biblioteca.


Para la parte teórica de la asignatura:

Autores:    Nell Dale, Susan C. Lilly.
Título:     Pascal y Estructuras de datos.
Editorial:     McGraw-Hill 1989.

Autores:     M. Collado, R. Morales, J.J. Moreno.
Título:     Estructuras de Datos; Realización en Pascal.
Editorial:     Díaz de Santos 1987.

Autores:     Castro, Cucker, Messeguer, Rubio, Solano, Vallés.
Título:     Curso de programación.
Editorial:     McGraw-Hill 1993.
Autores:     Peña.
Título:     Diseño de programas. Formalismo y abstracción. 2ª Ed.
Editorial:     Prentice-Hall 1998.

Autores:     N. Wirth.
Título:     Algoritmos + Estructuras de datos = programas.
Editorial:     Ediciones del Castillo 1980.

El alumno tiene a su disposición, en el aulario virtual, un archivo pdf cuyo contenido son las transparencias que se explicarán en la parte teórica. También dispone de otro archivo pdf que contiene los ejercicios cuya realización se propopondrá en clase.

Para la parte práctica de la asignatura. Sobre el lenguaje de programación Pascal

Autores:     Leestma, Nyhoff.
Título:     Programación en Pascal (4ª ed.).
Editorial:    Prentice-Hall 1999.

El alumno tiene a su disposición, en el aulario virtual, un archivo pdf cuyo contenido son las prácticas de la asignatura junto con toda la teoría de Pascal necesaria para su realización.

Para la parte práctica de la asignatura. Sobre el sistema operativo Linux

http://www.zonasiete.org/manual/
http://mat21.etsii.upm.es/ayudainf/aprendainf/Linux/Linux.pdf

Para la parte práctica de la asignatura. Sobre el compilador de libre distribución FreePascal.

A partir de http://www.freepascal.org/docs.var puede usted encontrar los documentos User’s Guide, Programmer’s Guide, Reference Guide y Standard Units Reference Manual.

Para la parte práctica de la asignatura. Sobre el depurador de código de libre distribución ddd.

http://www.gnu.org/manual/ddd/pdf/ddd.pdf

Para la parte práctica de la asignatura. Sobre otro software gnu (de libre distribución) que pueda necesitar (gdb, editores, ...).

http://www.gnu.org/doc/doc.html

Subir

Idiomas


Castellano

Subir