estructura de datos

5
Vicerrectorado de Ordenación Académica 21/06/14 2013 GUÍA DOCENTE DE LA ASIGNATURA Página 1 de 5 Graduado/a en Ingeniería Informática por la Universidad de Málaga Escuela Técnica Superior de Ingeniería Informática Estructura de Datos 204 Obligatoria Programación de Computadores Formación común 69 % teórica y 31 % práctica Castellano, Inglés 2 1 6 Nº Créditos Nº Horas de dedicación del estudiante: 150 60 72 30 Tamaño del Grupo Grande: Tamaño del Grupo Reducido: Página web de la asignatura: Nº Horas presenciales: Semestre: Curso: Módulo: Experimentalidad: Idioma en el que se imparte: Materia: Grado/Máster en: Centro: Asignatura: Código: Tipo: EQUIPO DOCENTE LENGUAJES Y CIENCIAS DE LA COMPUTACIÓN LENGUAJES Y SISTEMAS INFORMÁTICOS Mail Teléfono Laboral Despacho Horario Tutorías Coordinador/a: BLAS CARLOS RUIZ JIMENEZ PABLO LOPEZ OLIVAS FRANCISCO GUTIERREZ LOPEZ JOSE ENRIQUE GALLARDO RUIZ [email protected] [email protected] [email protected] [email protected] 952132795 952133305 952133314 952133305 - 3.2.50 - E.T.S.I. INFORMÁTICA 3.2.46 - E.T.S.I. INFORMÁTICA - Primer cuatrimestre: Martes 09:45 - 14:45, Viernes 10:40 - 11:40 Segundo cuatrimestre: Lunes 10:45 - 12:45, Miércoles 10:45 - 12:45, Viernes 11:30 - 13:30 Primer cuatrimestre: Lunes 11:00 - 14:00, Miércoles 11:00 - 14:00 Segundo cuatrimestre: Martes 12:45 - 14:45, Lunes 10:30 - 12:30, Viernes 08:00 - 10:00 Todo el curso: Lunes 10:45 - 12:45, Miércoles 10:45 - 12:45, Jueves 12:45 - 14:45 Primer cuatrimestre: Lunes 12:30 - 13:30, Miércoles 12:30 - 13:30, Jueves 09:30 - 11:30, Viernes 10:30 - 12:00, Jueves 11:30 - 12:00 Segundo cuatrimestre: Jueves 09:30 - 13:30, Miércoles 12:30 - 13:30, Viernes 10:45 - 11:45 Nombre y Apellidos Área: Departamento: RECOMENDACIONES Y ORIENTACIONES Esta asignatura requiere conocimientos básicos de matemáticas y de lenguajes de programación, y para su comprensión será necesario haber cursado las siguientes asignaturas de formación básica del primer curso: Fundamentos de la Programación, Programación Orientada a Objetos, Estructuras Algebraicas de la Computación y Matemática Discreta. CONTEXTO Esta asignatura se imparte en el primer cuatrimestre del segundo curso de los tres grados de Informática: Ingeniería Informática, Ingeniería del Software e Ingeniería de Computadores. En este mismo cuatrimestre se imparte también la asignatura Análisis y Diseño de Algoritmos. Ambas asignaturas completan el estudio de las técnicas de programación impartidas en las asignaturas de programación de primer curso. Las estructuras de datos son imprescindibles para que los algoritmos pueden describirse de manera eficiente, por ello existe gran coordinación con la asignatura Análisis y Diseño de Algoritmos. Se describirán las estructuras de datos más importantes de la programación, así como las implementaciones típicas que se suelen utilizar en un lenguaje de programación orientado a objetos y en un lenguaje funcional. La asignatura tiene una fuerte componente práctica, y dedica un número importante de clases a prácticas de laboratorio, donde se resuelven problemas clásicos con el uso de las estructuras de datos fundamentales. COMPETENCIAS 1 2 Competencias generales y básicas Competencias generales Competencias específicas Competencias específicas CG08 CG09 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. 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. DESCRIPCIÓN DE LA ASIGNATURA

Upload: lupicinio-garcia-ortiz

Post on 26-Dec-2015

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Estructura de Datos

Vicerrectorado de Ordenación Académica

21/06/14

2013GUÍA DOCENTE DE LA ASIGNATURA

Página 1 de 5

Graduado/a en Ingeniería Informática por la Universidad de MálagaEscuela Técnica Superior de Ingeniería InformáticaEstructura de Datos204ObligatoriaProgramación de ComputadoresFormación común69 % teórica y 31 % prácticaCastellano, Inglés216Nº Créditos

Nº Horas de dedicación del estudiante: 150607230

Tamaño del Grupo Grande:Tamaño del Grupo Reducido:Página web de la asignatura:

Nº Horas presenciales:

Semestre:Curso:

Módulo:Experimentalidad:Idioma en el que se imparte:

Materia:

Grado/Máster en:Centro:Asignatura:Código:Tipo:

EQUIPO DOCENTE

LENGUAJES Y CIENCIAS DE LA COMPUTACIÓN

LENGUAJES Y SISTEMAS INFORMÁTICOS

Mail Teléfono Laboral Despacho Horario Tutorías

Coordinador/a: BLAS CARLOS RUIZ JIMENEZ

PABLO LOPEZ OLIVAS

FRANCISCO GUTIERREZLOPEZ

JOSE ENRIQUE GALLARDO RUIZ

[email protected]

[email protected]

[email protected]

[email protected]

952132795

952133305

952133314

952133305

-

3.2.50 - E.T.S.I. INFORMÁTICA

3.2.46 - E.T.S.I. INFORMÁTICA

-

Primer cuatrimestre: Martes 09:45 - 14:45, Viernes 10:40 - 11:40 Segundo cuatrimestre: Lunes 10:45 - 12:45, Miércoles 10:45 - 12:45, Viernes 11:30 - 13:30

Primer cuatrimestre: Lunes 11:00 - 14:00, Miércoles 11:00 - 14:00 Segundo cuatrimestre: Martes 12:45 - 14:45, Lunes 10:30 - 12:30, Viernes 08:00 - 10:00

Todo el curso: Lunes 10:45 - 12:45, Miércoles 10:45 - 12:45, Jueves 12:45 - 14:45

Primer cuatrimestre: Lunes 12:30 - 13:30, Miércoles 12:30 - 13:30, Jueves 09:30 - 11:30, Viernes 10:30 - 12:00, Jueves 11:30 - 12:00 Segundo cuatrimestre: Jueves 09:30 - 13:30, Miércoles 12:30 - 13:30, Viernes 10:45 - 11:45

Nombre y Apellidos

Área:

Departamento:

RECOMENDACIONES Y ORIENTACIONES

Esta asignatura requiere conocimientos básicos de matemáticas y de lenguajes de programación, y para su comprensión será necesario haber cursado las siguientes asignaturas de formación básica del primer curso: Fundamentos de la Programación, Programación Orientada a Objetos, Estructuras Algebraicas de la Computación y Matemática Discreta.

CONTEXTO

Esta asignatura se imparte en el primer cuatrimestre del segundo curso de los tres grados de Informática: Ingeniería Informática, Ingeniería del Software e Ingeniería de Computadores. En este mismo cuatrimestre se imparte también la asignatura Análisis y Diseño de Algoritmos. Ambas asignaturas completan el estudio de las técnicas de programación impartidas en las asignaturas de programación de primer curso.

Las estructuras de datos son imprescindibles para que los algoritmos pueden describirse de manera eficiente, por ello existe gran coordinación con la asignatura Análisis y Diseño de Algoritmos. Se describirán las estructuras de datos más importantes de la programación, así como las implementaciones típicas que se suelen utilizar en un lenguaje de programación orientado a objetos y en un lenguaje funcional. La asignatura tiene una fuerte componente práctica, y dedica un número importante de clases a prácticas de laboratorio, donde se resuelven problemas clásicos con el uso de las estructuras de datos fundamentales.

COMPETENCIAS

1

2

Competencias generales y básicas Competencias generales

Competencias específicas Competencias específicas

CG08

CG09

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

DESCRIPCIÓN DE LA ASIGNATURA

Page 2: Estructura de Datos

Vicerrectorado de Ordenación Académica

21/06/14

2013GUÍA DOCENTE DE LA ASIGNATURA

Página 2 de 5

2 Competencias específicas Competencias específicas

Formación común

CC05CC06

CC07

CC08

CC17

Conocimiento, administración y mantenimiento sistemas, servicios y aplicaciones informáticas.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.Conocimiento, diseño y utilización de forma eficiente los tipos y estructuras de datos más adecuados a la resoluciónde un problema.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.Capacidad para diseñar y evaluar interfaces persona computador que garanticen la accesibilidad y usabilidad a los sistemas, servicios y aplicaciones informáticas.

CONTENIDOS DE LA ASIGNATURA

Introducción a la programación Funcional

Características habituales de los lenguajes funcionales

Introducción a los tipos abstractos. Estructuras Básicas y representaciones lineales.

Árboles

Tablas hash

Grafos

El estilo de programación funcional. Programación Imperativa vs Programación Funcional. Funciones puras e impuras. Ventajas de la Programación Funcional.

Introducción a Haskell. Tipos básicos. Listas y tuplas. Definiciones de funciones. Patrones. Funciones definidas parcialmente. Evaluación de expresiones. Ordenes de reducción (normal, aplicativo y perezoso). GHC y GHCi.

Polimorfismo y sobrecarga. Tipos numéricos. Parcialización. Definiciones locales. Eficiencia. Parámetros Acumuladores.

Tipos Algebraicos. Inducción sobre Listas y otras estructuras algebraicas. Corrección de funciones. Pruebas con QuickCheck.

Programación con funciones de orden superior. Composición de funciones, map, filtros, plegados. Secuencias Aritméticas y Listas por Comprensión. Sobrecarga: introducción a las clases de tipos. Módulos

Tipos de datos concretos y tipos de datos abstractos. Especificación de un tipo abstracto. Ejemplos.

Pilas, colas, colas con prioridad, listas, conjuntos, multiconjuntos y diccionarios (asociaciones). Implementaciones lineales de los tipos básicos enun LF y en un LOO. Iteradores sobre listas. Aplicaciones típicas: evaluación de expresiones.

Árboles. Definiciones y terminología. Representación y operaciones en un LF.

Árboles binarios. Auténticos , perfectos y completos. Relación entre el número de nodos y la altura. Recorrido recursivo de árboles binarios.

Montículos. Propiedad de orden del montículo (Heap-Order Prop.) Montículo binario. Implementación en un LOO vía arrays. Montículos zurdos. Invariante y propiedades. Mezcla, implementación de las operaciones y complejidad . Representación e implementación en un LF y en un LOO. Representación de Colas de prioridad con montículos. Construcción de un montículo en tiempo lineal. Heap Sort.Árboles binarios de búsqueda. Invariante y propiedades. Inserción, búsqueda y eliminación en un ABB. Complejidad. Representación e implementación en un LF y en un LOO. Tree Sort. Recorridos vía iteradores.Árboles equilibrados. Árboles AVL: Invariante y propiedades. Rotaciones. Inserción, búsqueda y eliminación. complejidad . Representación e implementación en un LF y en un LOO.Implementación de diccionarios vía árboles de búsqueda. Complejidad.

Hashing. Colisiones. Funciones Hash; congruencia modular, polinómica. Resolución de colisiones. Encadenamiento separado y Prueba lineal. Factor de carga, rendimiento y reubicación (rehashing).

Grafos dirigidos y no dirigidos. Terminología y propiedades fundamentales. Representación e implementaciones en un LF y en LOO. Exploración de grafos. Exploración en profundidad y en anchura. Implementación de los algoritmos en un LF y en LOO. Propiedades de los algoritmos de exploración. Aplicaciones: conexión, detección de ciclos, coloreado. Orden topológico y sus aplicaciones.

ACTIVIDADES FORMATIVAS

Actividades Presenciales

Actividades No Presenciales

Actividades expositivas

Actividades prácticas en instalaciones específicas

Actividades de discusión, debate, etc.

Lección magistral

Prácticas en laboratorio

Discusiones

Page 3: Estructura de Datos

Vicerrectorado de Ordenación Académica

21/06/14

2013GUÍA DOCENTE DE LA ASIGNATURA

Página 3 de 5

Actividades No Presenciales

Actividades de documentación

Actividades prácticas

Estudio personal

Búsqueda bibliográfica/documental

Resolución de problemas

Estudio personal

ACTIVIDADES DE EVALUACIÓN

RESULTADOS DE APRENDIZAJE / CRITERIOS DE EVALUACIÓN

- Entender los distintos conceptos y tipos de datos: concretos, algebraicos y abstractos. - Identificar las fortalezas y debilidades del paradigma de programación funcional comparándolas con las del paradigma orientado a objetos, sabiendo eligir las soluciones más apropiadas a distintos problemas utilizando ambos paradigmas, enfatizando la sencillez, la comprensión y la eficiencia.- Conocer e implementar las estructuras de datos fundamentales en un lenguaje orientado a objetos y en un lenguaje funcional. En particular, en los lenguajes Java y Haskell. - Aplicar los algoritmos fundamentales utilizando las distintas formas de representación de tipos algebraicos y abstractos, en un lenguaje orientado a objetos y en un lenguaje funcional. - Conocer y saber aplicar las técnicas apropiadas (y en particular las técnicas de inducción) para el estudio de la complejidad y corrección de las estructuras de datos, así como de los algoritmos sobre éstas. - Identificar los principales patrones de cómputo y estructuras, abstraerlos e implementarlos usando parametrización, funciones de orden superior y polimorfismo.

PROCEDIMIENTO DE EVALUACIÓN

La asistencia a las clases de teoría y a los laboratorios es obligatoria. Las posibles faltas puntuales deberán ser justificadas. Para aprobar la asignatura en cualquiera de las dos convocatorias ordinarias será necesario obtener al menos 5 puntos sumando las calificaciones obtenidas por cada una de las siguientes componentes: - CC (Componente continua, para aquellos alumnos que realicen las prácticas y ejercicios programados durante el curso): hasta un máximo de 4 puntos, puntuables por los siguentes items: ejercicios y trabajo personal, tareas programadas en las prácticas de laboratorio, controles programados yesporádicos. La ponderación de cada uno de los items se publicará al principio del curso.- EF (Examen final), valorado sobre 10 puntos menos la calificación obtenida por el apartado CC. Este examen se realizará el día establecido por el centro y evaluará de modo exhaustivo todos los contenidos teóricos y prácticos de la asignatura.

Para aprobar la asignatura en el resto de convocatorias extraordinarias será necesario responder correctamente el 50% de los contenidos del examena celebrar siguiendo el calendario de exámenes fijado por el centro.

Con objeto de evaluar la componente continua CC, durante las clases de teoría y en los laboratorios, el profesor propondrá trabajos y ejercicios que elalumno deberá entregar resueltos de modo satisfactorio en tiempo y forma, siguiendo las instrucciones que se determinen. Ciertos ejercicios y todas las prácticas de laboratorio deberán resolverse en ordenador, por lo que será imprescindible un conocimiento suficiente de los lenguajes y entornos de programación utilizados en los laboratorios.

BIBLIOGRAFÍA Y OTROS RECURSOS

Básica

Algorithms: a functional programming approach; Fethi Rabbi y Guy Lapalme; Addison; 1999

Algorithms; Robert Sedgewick y Kevin Wayne; Addison-Wesley; 2011

Data Structures & Algorithms in Java; Michael T. Goodrich y Roberto Tamassia; John Wiley & Sons; 2006

Introducción a la Programación Funcional; Richard Bird; 2000

Introduction to Algorihms; T.H. Cormen, C.E. Leiserson, R.L. Rivest y C. Stein; McGraw-Hill; 2010

Material elaborado para la asignatura (transparencias, listados de ejercicios, códigos ....) disponibles en el Campus Virtual

Razonando con Haskell; Blas Ruiz, Fco. Gutiérrez, Pablo Guerrero y José Gallardo; Thomson; 2004

DISTRIBUCIÓN DEL TRABAJO DEL ESTUDIANTE

ACTIVIDAD FORMATIVA PRESENCIAL

Descripción Horas Grupo grande

Lección magistral

Prácticas en laboratorio

41,4

18,6

TOTAL HORAS ACTIVIDAD FORMATIVA PRESENCIAL 60

ACTIVIDAD FORMATIVA NO PRESENCIAL

Grupos reducidos

Page 4: Estructura de Datos

Vicerrectorado de Ordenación Académica

21/06/14

2013GUÍA DOCENTE DE LA ASIGNATURA

Página 4 de 5

Descripción Horas Grupo grande

Resolución de problemas

Búsqueda bibliográfica/documental

Discusiones

Estudio personal

30

5

5

30

Descripción Horas

TOTAL HORAS ACTIVIDAD FORMATIVA NO PRESENCIAL

TOTAL HORAS ACTIVIDAD EVALUACIÓN

TOTAL HORAS DE TRABAJO DEL ESTUDIANTE

75

15

150

Grupos reducidos

Page 5: Estructura de Datos