Universidad Pública de Navarra



Año Académico: 2024/2025 | Otros años:  2023/2024  |  2022/2023  |  2021/2022  |  2020/2021 
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: Estadística, Informática y Matemáticas
Profesorado:
FARIÑA FIGUEREDO, FEDERICO (Resp)   [Tutorías ] ERICE ERRECART, CARLOS   [Tutorías ]
ROYO ROMEO, ALBERTO   [Tutorías ] MONJE PEINADO, ROBERTO   [Tutorías ]
MONREAL IBAÑEZ, CARLOS   [Tutorías ] CELAYA ECHARRI, MIKEL   [Tutorías ]

Partes de este texto:

 

Módulo/Materia

Módulo: Común a la Rama de Informática

Materia: Métodos

Subir

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 que 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

Competencias genéricas

  • CB2 - 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.
  • 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.
  • T1- Capacidad de análisis y síntesis.
  • T3- Comunicación oral y escrita.
  • T4- Resolución de problemas.
  • T8- Aprendizaje autónomo.

Subir

Competencias específicas

  • 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

Resultados aprendizaje

RA1.- Entender las primitivas que permiten construir tipos estructurados a partir de tipos básicos (tablas, tuplas, punteros).

RA2.- Comprender el concepto de tipo abstracto de dato TAD.

RA3.- Diseñar tipos de datos adecuados a los problemas que se pretende resolver.

RA4.- Resolver problemas que precisen utilizar TADs de uso extendido (pilas, colas, ...).

RA5.- Utilizar módulos que implementen TADs para programar soluciones a problemas concretos.

RA6.- Comprender técnicas de diseño de algoritmos que permitan abordar ciertos problemas usando esquemas conocidos.

RA7.- Utilizar de forma eficiente algunas estructuras de datos en el diseño de algoritmos

Subir

Metodología

 

Metodología - Actividad Horas Presenciales Horas no Presenciales
A-1 Clases magistrales 22,5 (teoría y ejemplos)  
A-2 Preparación de presentaciones de trabajos, proyectos, etc.    7,5 
A-3 Sesiones prácticas en grupos reducidos 22,5 (prácticas de laboratorio)  
A-4 Aprendizaje basado en problemas y/o casos en grupos reducidos  7,5 (corrección de problemas)  
A-5 Elaboración de trabajos y/o proyectos y escritura de memorias   22,5
A-6 Actividades de evaluación 4,5  
A-7 Tutorías en grupos muy reducidos  3 (dudas teóricas o prácticas)  
A-8 Estudio autónomo    22,5
A-9 Programación u otros trabajos en ordenador/laboratorio    22,5
A-10 Resolución de problemas, ejercicios y otras actividades de aplicación    15
Total  60  90

Subir

Evaluación

 

Resultados de
aprendizaje
Actividad de
evaluación
Peso (%) Carácter
recuperable
Nota mínima
requerida
RA1, RA2, RA3, RA4, RA5, RA6, RA7 Entrega en tiempo y forma de problemas de evaluación.  Asistencia a las sesiones de prácticas. 10 % Recuperable mediante prueba escrita No
RA1, RA2, RA3, RA4, RA6, RA7 Prueba escrita que recoja los conceptos adquiridos y su uso para la resolución de casos prácticos 45 % Recuperable mediante prueba escrita Nota mínima para que pondere en la calificación final: 4,5 sobre 10
RA1, RA2, RA5, RA6, RA7 Prueba en el ordenador que utilice el material que se haya desarrollado durante las prácticas de la asignatura. Se comprueba la corrección del trabajo y que se haya realizado siguiendo criterios de calidad. 45 % Recuperable mediante prueba práctica en el laboratorio Nota mínima para que pondere en la calificación final: 4,5 sobre 10

Si en alguna de las actividades de evaluación no se cumpliera el mínimo para ponderar, la nota de la asignatura será la media ponderada obtenida, truncada a 4,5 sobre 10 (suspenso)

 

Subir

Temario

Tema 1. Repaso a 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.0. Tipos básicos y constructores de tipos. 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. Árboles
7.1.Introducción y definiciones . 7.2. El TAD árbol binario. 7.3. Especificación del módulo árbol binario. 7.4. Recorridos de árboles binarios. 7.5. Ejemplos de uso. 7.6. Implementación de árboles binarios. 7.7. El árbol general.

Subir

Programa de prácticas experimentales

Practica 1.- Recapitulación y novedades: se repasan algunos elementos de C ya usados en las prácticas de programación, se amplía la definición de los tipos de C y se aclaran posibles dudas en su uso.

Practica 2.- Tratamiento de ficheros: se trabaja con ficheros de C (tanto binarios como de texto) en modo de lectura y de escritura.

Practica 3.- Diseño descendente en C: Se incluyen los ficheros en programas más complejos.

Práctica 4.- Módulos en C: Se crean programas que usan diferentes módulos. Se estudia el significado del linker del compilador

Practica 5.- Implementación de estructuras lineales de datos /1: se implementan pilas y colas estáticas y se usan para resolver un problema complejo.

Práctica 6.- Implementación de estructuras lineales de datos /2: se implementan estructuras de datos dinámicas y se usan para resolver un problema complejo.

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:     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 C

Autores:     A. Marzal, I. Gracia.
Título:     Introducción a la programación con C.
Editorial:    Universidad Jaume I (ISBN 978-84-693-0143-2).
 
Autores:     Kerniham & Ritchie.
Título:     El lenguaje de programación C.
Editorial:    Prentice-Hall 1991.


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 C 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 gcc.

https://gcc.gnu.org puede usted encontrar múltiples manuales.

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.

 

Parte del material utilizado en las prácticas está escrito en ingles técnico.

Subir

Lugar de impartición

Campus de Arrosadía

Subir