Usted está aquí: Inicio web asignaturas

 

Fichas de asignaturas 2016-17


ANÁLISIS DE ALGORITMOS Y ESTRUCTURAS DE DATOS

Asignaturas
 

  Código Nombre    
Asignatura 21714014 ANÁLISIS DE ALGORITMOS Y ESTRUCTURAS DE DATOS Créditos Teóricos 3
Título 21714 GRADO EN INGENIERÍA INFORMÁTICA Créditos Prácticos 4.5
Curso   2 Tipo Obligatoria
Créd. ECTS   6    
Departamento C137 INGENIERÍA INFORMÁTICA    

 

Requisitos previos

Para poder cursar con razonables posibilidades de éxito esta asignatura es
requisito haber superado, en primer lugar las dos asignaturas de programación de
primer curso (Introducción a la Programación y Metodología de la Programación), y
en segundo lugar, en particular para el temario asociado a Análisis de
Algoritmos, es requisito tener superadas las asignaturas de matemáticas (Cálculo,
Estadística y Matemática Discreta).

Cualquier matrícula efectuada que incumpla estos requisitos obviamente es
responsabilidad exclusiva del estudiante.

 

Recomendaciones

Saber aplicar en la práctica la descomposición de problemas, el diseño modular y
la abstracción operacional.
Saber especificar de manera informal los algoritmos mediante precondiciones y
postcondiciones.
Ser capaz de definir algoritmos de una manera correcta mediante el uso de
estructuras de control, bucles, sentencias condicionales, etc. según convenga a
la finalidad, eficiencia y claridad del código.
Conocer los mecanismos de transferencia de parámetros y utilizarlos
correctamente.
Conocer y usar correctamente los tipos de datos básicos que ofrecen los lenguajes
de programación y especialmente, los tipos estructurados: cadenas de caracteres,
vectores, matrices, registros y ficheros.
Dominar el uso de punteros y la gestión dinámica de memoria.
Ser capaz de implementar, en un lenguaje de programación de alto nivel, programas
de pequeño y mediano tamaño haciendo uso de la descomposición modular del
software.
Saber elegir y diseñar adecuadamente casos de prueba para los programas y
funciones implementados.
Distinguir y saber resolver sumas aritméticas y geométricas. Reconocer otras
sumas notables: la armónica y la expresión del número e mediante serie de
potencias.
Conocer las nociones básicas de combinatoria (combinaciones y permutaciones) y
los rudimentos de la probabilidad discreta: variable aleatoria discreta, noción
de probabilidad, hipótesis de equiprobabilidad.
Saber resolver ecuaciones de recurrencia lineales sencillas.

Sería recomendable que el alumno dispusiera de un ordenador personal donde
instalarse el compilador de C++ utilizado en las prácticas, con objeto de obtener
un mejor aprovechamiento de los contenidos impartidos en la asignatura.

Los alumnos deben comprobar periódicamente el estado del curso en el campus
virtual, donde se publicarán con la debida antelación diversos materiales
docentes, convocatorias, calificaciones y, en definitiva, información vital para
el seguimiento de la asignatura.

En particular, los alumnos tienen la obligación de conocer las noticias
publicadas a través del tablón de anuncios virtual del curso, cuyos mensajes
sustituyen a los que tradicionalmente se colocaban en un tablón físico y que se
consideran la fuente oficial de comunicación de la asignatura.

Los alumnos son responsables de proteger sus ficheros y datos personales,
incluyendo sus contraseñas de acceso al correo electrónico y al campus
virtual.

 

Profesorado

Nombre Apellido 1 Apellido 2 C.C.E. Coordinador  
José Antonio Alonso de la Huerta Profesor Titular Escuela Universitaria N  
José Fidel Argudo Argudo TEU N
Mª Teresa García Horcajadas TEU S  
Jesús Román Álvarez-Ossorio Contratado T.P. N

 

Competencias

Se relacionan aquí las competencias de la materia/módulo o título al que pertenece la asignatura, entre las que el profesorado podrá indicar las relacionadas con la asignatura.

Identificador Competencia Tipo
C06 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 ESPECÍFICA
C07 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. ESPECÍFICA
C08 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 ESPECÍFICA
CB1 Que los estudiantes hayan demostrado poseer y comprender conocimientos en un área de estudio que parte de la base de la educación secundaria general, y se suele encontrar a un nivel que, si bien se apoya en libros de texto avanzados, incluye también algunos aspectos que implican conocimientos procedentes de la vanguardia de su campo de estudio GENERAL
CB4 Que los estudiantes puedan transmitir información, ideas, problemas y soluciones a un público tanto especializado como no especializado GENERAL
CB5 Que los estudiantes hayan desarrollado aquellas habilidades de aprendizaje necesarias para emprender estudios posteriores con un alto grado de autonomía GENERAL
CG08 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. GENERAL
CG09 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. GENERAL

 

Resultados Aprendizaje

Identificador Resultado
R1 Analizar empíricamente la complejidad temporal de los algoritmos.
R2 Analizar formalmente la complejidad de algoritmos elementales.
R3 Comparar algoritmos según su complejidad asintótica y otros criterios relevantes.
R4 Contrastar los resultados empíricos con los teóricos.
R5 Desarrollar programas, basándose en tipos abstractos de datos, de forma independiente de la implementación de éstos.
R6 Distinguir la complejidad de los problemas, algoritmos y programas.
R7 Organizar un determinado volumen de datos de la forma más racional posible en función de los requisitos del problema a resolver.
R8 Programar algoritmos en el laboratorio siguiendo el paradigma de la programación genérica.
R9 Relacionar la eficiencia de los programas con la de sus algoritmos.
R10 Resolver problemas utilizando los TAD mas apropiados.
R11 Ser capaz de implementar de diferentes formas una especificación de software dada. El alumno debe saber escoger entre diferentes implementaciones alternativas de una abstracción de datos, y razonar sobre la solución escogida en función de los recursos necesarios (tiempo de ejecución, espacio requerido, etc.).

 

Actividades formativas

Actividad Detalle Horas Grupo Competencias a desarrollar
01. Teoría
Las clases teóricas se basarán fundamentalmente
en las explicaciones del profesor sobre el
temario, así como en la realización de ejercicios
prácticos asociados al mismo.
24 C06 C07 CB1 CB4 CB5 CG09
02. Prácticas, seminarios y problemas
Se incentivará la participación activa del
alumnado en las clases, realizando en grupos
tanto, desarrollos de especificaciones e
implementaciones de TAD, como resolución de
problemas de análisis de algoritmos, provocando
el profesor un debate abierto sobre cada uno de
los temas que se traten, motivando a los alumnos
para que propongan soluciones alternativas a los
problemas planteados y su posterior discusión.
12 C06 C07 CB1 CB4 CB5 CG09
03. Prácticas de informática
En las clases prácticas se proporcionará al
alumno guiones de prácticas en los que se
incluirán cuestiones teóricas y una serie de
problemas de programación, que se resolverán
empleando un lenguaje de programación orientada a
objetos. los alumnos asistirán a clase con dichos
guiones, que los tendrán disponibles en el campus
virtual con suficiente antelación, y con los
problemas planteados, de forma que en clase se
discutirá en grupo la resolución de dichos
problemas y el profesor explicará aquéllos
problemas que plantean mayor dificultad,
finalmente, cada alumno resolverá los problemas
del guión con la supervisión del profesor.
24 C06 C07 C08 CB1 CB4 CB5 CG08 CG09
10. Actividades formativas no presenciales
Estas actividades se corresponden con las horas
de trabajo personal del alumno, incluyendo las
horas de estudio de los contenidos teóricos y
prácticos de la asignatura, así como la
realización de problemas y trabajos propuestos.
86 C06 C07 C08 CB1 CB4 CB5 CG08 CG09
12. Actividades de evaluación
Examen final de la asignatura.
4

 

Evaluación

Criterios Generales de Evaluación

- Adecuación de la solución a la especificación del problema.
- Elección de los tipos abstractos de datos apropiados.
- Uso correcto de los TAD según su especificación.
- Elección adecuada de la implementación de cada TAD.
- Presentación, claridad y eficiencia de la solución.
- Consistencia en la argumentación y en el razonamiento lógico.


 

Procedimiento de Evaluación

Tarea/Actividades Medios, Técnicas e Instrumentos Evaluador/es Competencias a evaluar
Examen final Rúbricas
  • Profesor/a
C06 C07 CG08 CG09
Pruebas de evaluación de resultados de actividades de aprendizaje. Rúbricas
  • Profesor/a
C06 C07 C08 CB1 CB4 CB5 CG09

 

Procedimiento de calificación

Para la convocatorias de febrero el sistema de evaluación por defecto será
evaluación continua. En el resto de convocatorias se aplicará el sistema de
evaluación final.

Evaluación continua:

A lo largo del cuatrimestre el alumno realizará una o más pruebas prácticas
para la  evaluación de resultados de las actividades de aprendizaje (EAA)
Al final del cuatrimestre los alumnos realizarán una prueba escrita que
constará de una parte teórica y una práctica (EF).
La nota correspondiente a la evaluación del alumno será obtenida de la
siguiente forma:
NEC = (EAA * 0.30) + (EF * 0.70)

Solamente en casos de fuerza mayor que hayan impedido al alumno presentarse a
dichas pruebas podrá solicitar a la profesora coordinadora de la asignatura el
cambio a sistema de evaluación final.


Evaluación final

Aquellos alumnos que se sometan a evaluación final realizarán un examen
escrito con contenidos teóricos y prácticos.
La nota correspondiente a la evaluación del alumno será obtenida de la
siguiente forma:
NEF = (Teoría * 0.40) + (Práctica * 0.60)

NEC (Nota Evaluación Continua)
NEF (Nota Evaluación Final)

 

Descripcion de los Contenidos

Contenido Competencias relacionadas Resultados de aprendizaje relacionados
            1. Órdenes asintóticos.
1.1. Órdenes asintóticos.
1.2. Interpretación gráfica.
1.3. Jerarquía de complejidad.
1.4. Operaciones asintóticas.

        
CB1 CG08 R1 R2
            2. Análisis de la complejidad de los algoritmos.
2.1. Tiempo y espacio algorítmicos.
2.2. Enfoques en el análisis de los algoritmos.
2.3. Peor caso, mejor caso y caso promedio.
2.4. Análisis de las estructuras de control.
2.5. Ejemplo: algoritmos elementales.

        
C06 CB5 CG09 R1 R2 R3 R4 R9
            3. Algunos algoritmos clásicos y su análisis.
3.1. Búsqueda secuencial
3.2. Métodos directos de ordenación.

        
C06 CB1 CB5 CG08 CG09 R4 R6 R9
            4. Tipos abstractos de datos.
4.1. Conceptos, terminología y ejemplos.
4.2. Tipos abstractos de datos.
4.3. Modularidad.
4.4. Uso de TAD.
4.5. Ejemplo: Especificación e implementación del TAD Número
Racional.
4.6. Ejemplo: Uso del TAD Número Racional.
        
C06 C07 CB4 CB5 CG08 CG09 R5 R7 R8
            5. Pilas.
5.1. Concepto de pila.
5.2. Especificación de operaciones.
5.3. Diferentes representaciones del TAD pila.

        
C06 C07 C08 CB1 CB4 CB5 CG08 CG09 R5 R6 R7 R8 R9 R10 R11
            6. Colas.
6.1. Concepto de cola.
6.2. Especificación de operaciones.
6.3. Diferentes representaciones del TAD cola.

        
C06 C07 C08 CB1 CB4 CB5 CG09 R5 R6 R7 R8 R9 R10 R11
            7. Listas.
7.1. Concepto de lista.
7.2. Especificación de operaciones.
7.3. Diferentes representaciones del TAD lista.
7.4. Otras estructuras enlazadas.
4.4.1. Listas con cabecera.
4.4.2. Listas doblemente enlazadas.
7.5. TAD lista circular.
        
C06 C07 C08 CB5 CG08 CG09 R5 R6 R7 R8 R9 R10 R11

 

Bibliografía

Bibliografía Básica

Alonso, J.A.; Argudo, J.F.; García, M.T.
   Estructuras de Datos I.
   Depto. Lenguajes y Sistemas Informáticos, UCA, 2003.
Aho, A.; Hopcroft, J.; Ullman, J.
   Estructuras de datos y algoritmos. Addison-Wesley, 1988.
Brassard, Gilles y Bratley, Paul.
   Fundamentos de algoritmia.
   Prentice-Hall. 1997.
Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L. y Stein, Clifford.
   Introduction to algorithms. MIT Press. 3ª ed. 2009.
Fernández-Valdivia, J.; Garrido, A.; García, M.
   Estructuras de datos. Un enfoque práctico usando C. 1998.
Garrido, A.; Fernández-Valdivia, J.
   Abstracción y Estructura de Datos en C++. Delta Publicaciones. 2013.
Johnsonbaugh, Richard y Schaefer, Marcus.
   Algorithms.
   Prentice-Hall. 2004.
Levitin, Anany V.
   Introduction to the design and analysis of algorithms.
   Addison-Wesley. 2ª ed. 2007.
Neapolitan, Richard y Naimipour, Kumarss.
   Foundations of algorithms.
   Jones and Bartlett. 4ª ed. 2009.
Sedgevick, Robert.
   Algorithms in C++. Parts 1-4. Fundamentals. Data
   Structures. Sorting. Searching.
   Addison-Wesley. 3ª ed. 1999.
Sedgevick, Robert.
   Algorithms in C++. Part 5. Graph algorithms.
   Addison-Wesley. 3ª ed. 2002.
Sedgewick, Robert y Wayne, Kevin.
   Algorithms.
   Addison-Wesley. 4ª ed. 2011.
   Material complementario en http://www.cs.princeton.edu/algs4.





 

Bibliografía Específica

Ammernal, L.
Programs and Data Structures in C. Wiley, 1991.
Baase, Sara y Van Gelder, Allen.
Computer algorithms. Introduction to design and analysis.
Addison-Wesley. 3ª ed. 2000.
Balcázar, José Luis.
Programación metódica.
McGraw-Hill. 1993.
Heileman, G. L.
Estructuras de Datos, Algoritmos y Programación Orientada a Objetos. McGraw-Hill, 1996.
Horowitz, Ellis; Sahni, Sartaj y Rajasekaran, Sanguthevar.
Computer algorithms / C++.
Universities Press. 2ª ed. 2008.

Langsam, Y; Augenstein, M. J.; Tenenbaum, A. M.
Estructuras de Datos con C y C++. Prentice-Hall, 1997.
Martí Oliet, Narciso; Segura Díaz, Clara M. y Verdejo López, José A.
Especificación, derivación y análisis de algoritmos. Ejercicios resueltos.
Prentice-Hall. 2007.
Peña Marí, Ricardo.
Diseño de programas. Formalismo y abstracción.
Prentice-Hall. 3ª ed. 2005.
Stroustrup, Bjarne.
The C++ programming language. Special edition.
Addison-Wesley. 2000.
Stroustrup, Bjarne.
Programming: Principles and practice using C++.
Addison-Wesley. 2008.
Weiss, M.
Data Structures and Algorithm Analysis in C. Addison-Wesley, 1996.
Wirth, N.
Algoritmos y Estructuras de datos. Prentice-Hall, 1986.

 

Bibliografía Ampliación

Kruse, R. L.; Leung, B. P.; Tondo, C. L.
Data Structures and Program Design in C. Prentice-Hall, 1991.
Liskov, B.; Guttag, J.
Abstraction and specification in program development. MIT Press, 1989.
Sedgevick, Robert y Flajolet, Philippe.
An introduction to the analysis of algorithms.
Standish, T.A.
Data Structures, Algorithms and Software Principles in C. Addison-Wesley, 1995 Addison-Wesley. 1996.

 

El presente documento es propiedad de la Universidad de Cádiz y forma parte de su Sistema de Gestión de Calidad Docente. En aplicación de la Ley 3/2007, de 22 de marzo, para la igualdad efectiva de mujeres y hombres, así como la Ley 12/2007, de 26 de noviembre, para la promoción de la igualdad de género en Andalucía, toda alusión a personas o colectivos incluida en este documento estará haciendo referencia al género gramatical neutro, incluyendo por lo tanto la posibilidad de referirse tanto a mujeres como a hombres.