Programa - Cursos atendidos por Rodrigo Orizondo. Período 2015

Anuncio
PONTIFICIA UNIVERSIDAD CATÓLICA MADRE Y MAESTRA
FACULTAD DE CIENCIAS DE LA INGENIERIA
DEPARTAMENTO DE INGENIERÍA EN SISTEMAS Y COMPUTACIÓN
PROGRAMA DE ASIGNATURA
Asignatura:
Código:
Estructuras de Datos
Régimen:
ISC-213-T
Año/Período: 2do Año/ 3er Período
Horas de Clases
Área a la que pertenece: Lógica y algoritmia
DISTRIBUCION DE HORAS DE CLASES
Teóricas
Prácticas
Total General
Horas
% Materia
Horas
% Materia
Horas
% Materia
42
60%
28
40%
70
100%
T
P
C
3
2
4
I-DESCRIPCIÓN GENERAL
El estudio de las Estructuras de Datos está dirigido a que los estudiantes conozcan las características,
ventajas y desventajas en su aplicación, para poder seleccionar las más adecuadas en la resolución de
problemas computacionales. Específicamente en esta asignatura se analizan con mayor profundidad los
tipos de datos abstractos (TDA), sus modelos matemáticos y representación en memoria. Se introduce a
los estudiantes en el análisis de la complejidad algorítmica para el cálculo del tiempo de ejecución de los
programas; se consolidan los conocimientos de las estructuras de datos lineales (específicamente Colas
de Prioridad) y se inician los estudios de las estructuras de datos jerárquicas, conjuntos, grafos y tablas
hash. La asignatura está enfocada a la aplicación de estas estructuras en la solución de problemas
concretos; debe permitir que los estudiantes puedan tratar con problemas de gran escala y debe motivar
a la investigación de los temas necesarios para resolver los problemas. Las prácticas de laboratorio se
desarrollan sobre la base del diseño de aplicaciones utilizando el lenguaje de programación objeto de
estudio.
II-OBJETIVOS
Objetivos Generales:
Objetivos Específicos:
1. Proveer a los estudiantes del conocimiento acerca de las diferentes
estructuras de datos de datos así como la terminología básica.
2. Que los estudiantes sean capaces de resolver problemas de la vida
real utilizando una correcta estructura de datos teniendo en cuenta la
eficiencia de la solución presentada.
Que los estudiantes sean capaces de:
1. Reconocer las diferentes estructuras de datos de datos e identificar las
bases de la eficiencia de cada una de ellas.
2. Identificar los criterios de evaluación de algoritmos y estructuras de
3.
4.
5.
6.
datos y aplicarlos en la evaluación y selección de algoritmos y
estructuras de datos para la resolución de un problema concreto.
Juzgar la conveniencia del uso de una determinada estructura de datos
para una situación determinada.
Decidir entre dos o más soluciones algorítmicas similares sobre la base
de la eficiencia de cada una de ellas.
Combinar diferentes estructuras de datos para resolver problemas
complejos.
Implementar las operaciones básicas de un TAD mediante un lenguaje
de programación.
III-INTERRELACIÓN CON OTRAS ASIGNATURAS
Prerrequisitos: ISC-212
Asignaturas que se aconseja debe haber cursado:
ISC-219
MAT-111
IV-PROFESORADO
Profesor responsable:
Rodrigo Orizondo
Claustro de profesores:
V-METODOLOGÍA
El curso será impartido a través de cátedras, desarrollo de prácticas y exposiciones que indicará el
profesor. El proceso de aprendizaje será controlado a través de las prácticas, tareas y exámenes
desarrollados durante el curso. Se aplica como metodología de Aprendizaje basado en Problemas.
La distribución porcentual de los puntos asociados a las evaluaciones debe estar distribuido en:
70%(Eval. Parciales)+30%(Eval. Final). Las evaluaciones que cubran el 50% de los puntos de la
asignatura deben realizarse previo a las fechas de retiro parcial y total.
Los exámenes parciales tendrán una duración de 3-2 horas, deben ser confeccionados abordando
contenidos teóricos y/o prácticos.
Las tareas serán orientadas con 15 días de anticipación a la fecha de entrega programada y su
evaluación estará dividida en dos partes: la entrega formal del trabajo y la exposición oral en el curso de
las soluciones encontradas, valorando su eficiencia y claridad.
La evaluación final (30%) deberá ser evaluada a través del desarrollo de un Proyecto Final Integrador,
que involucre las asignaturas que el estudiante ha cursado, para lograr una vinculación y aplicación de
los conocimientos adquiridos. El trabajo debe ser individual o como máximo grupos de 2 estudiantes;
debe incluir la entrega de un documento (en el formato definido para la carrera) que describa el trabajo
realizado y los ficheros de código fuente; la exposición de los trabajos debe realizarse a puertas abiertas
con estudiantes y profesores del departamento como invitados.
VI-PERFIL DEL EGRESADO
Esta asignatura aporta al egresado los conocimientos teóricos y prácticos para la solución óptima de
problemas utilizando una adecuada estructura de datos. Al finalizar la asignatura los estudiantes serán
capaces de desempeñarse en roles involucrados al análisis, diseño e implementación de problemas
reales que impliquen el desarrollo de software utilizando estructuras de datos avanzadas y orientación a
objetos. Los estudiantes además podrán participar en actividades relacionadas con la optimización de
procesos.
Competencias logradas:
- Capacidad de análisis y síntesis.
- Capacidad de organización y planificación.
- Capacidad de aplicar los conocimientos en la práctica.
- Capacidad para trabajar en equipo.
- Habilidad para trabajar de forma autónoma.
- Capacidad para diseñar y debatir diferentes soluciones de un mismo problema.
VII-CONTENIDO DE LA TEORÍA
Lenguaje de programación propuesto: Java
Tema 1. Complejidad Algorítmica.
1. Conceptos básicos.
2. Medidas de comportamiento asintótico.
3. Reglas prácticas para hallar el coste
4. Útiles matemáticos.
Tema 2. Estructuras de datos jerárquicas. Árboles.
1. Fundamentos teóricos.
2. Terminología y representación de árboles.
3. Árboles binarios. Estructura de un árbol binario.
4. Árboles de expresión. Aplicaciones.
5. Recorridos de un árbol.
6. Árbol binario de búsqueda. Operaciones básicas.
7. Implementación mediante almacenamiento secuencial y por referencias. Análisis comparativo de
eficiencia.
8. Árboles balanceados. Árboles AVL. Aplicaciones.
9. Árboles Rojo-Negro. Árboles 2-3-4. Árboles B. Aplicaciones.
Tema 3. Colas de prioridades.
1. Conceptos y operaciones básicas
2. Montículos máximos y mínimos.
3. Ejercicios de aplicación sobre árboles.
Tema 4. Conjuntos.
1. Definición del TDA.
2. Terminología y operaciones básicas.
3. Implementaciones sobre arreglos, vectores y listas enlazadas.
Tema 5. Tablas Hash.
1. Transformación de claves (hashing).
2. Diccionarios. Implementaciones sobre Tablas hash abiertas y cerradas.
3. Implementación sobre árboles.
4. Ejemplos prácticos de aplicación del hashing.
Tema 6. Grafos.
1. Grafos Orientados
a. Concepto. Terminología básica. Representación gráfica.
b. Recorridos y Operaciones fundamentales.
c. Implementaciones basadas en matrices de adyacencias y listas de adyacencias. Análisis
de la eficiencia.
2. Grafos no orientados.
a. Concepto. Terminología básica. Representación gráfica.
b. Recorridos y Operaciones fundamentales.
c. Implementaciones basadas en matrices de adyacencias y listas de adyacencias. Análisis
de la eficiencia.
3. Cálculo de spanning tree de costos mínimos.
4. Algoritmos avanzados sobre grafos: Warshall, Dijkstra, Floyd, Prim, Kruskal, búsqueda en
anchura, búsqueda en profundidad, etc.
5. Ejemplos de aplicación: ordenación topológica, camino crítico, etc.
VIII-GUIA DE LAS PRÁCTICAS
Las clases de laboratorio tienen como objetivo central la adquisición de habilidades prácticas. Es
importante tener en cuenta los objetivos y distribución de contenidos de la teoría, para planificar los
laboratorios.
Guía para los laboratorios:
1. Calculo del tiempo de ejecución de algoritmos. Análisis de eficiencia.
2. Resolución de problemas que apliquen las estructuras de datos jerárquicas. Árboles Binarios de
Búsquedas, Árboles de Expresión, etc.
3. Resolución de problemas reales aplicando el concepto de Colas de Prioridades.
4. Implementación de Conjuntos.
5. Aplicación de Tablas Hash.
6. Grafos Orientados.
7. Grafos no Orientados.
IX-EVALUACIÓN
Normas de evaluación:
Guía de Evaluaciones:
La calificación final de cada estudiante será calculada sumando
las calificaciones obtenidas en las prácticas, tareas, evaluaciones
diarias, parciales y examen final.
Los aspectos a evaluar en cada caso estarán regidos por:
1. La eficiencia de la solución presentada.
2. El cumplimiento del procedimiento establecido.
3. La entrega en el marco de tiempo fijado.
4. La presentación, claridad y organización a la entrega.
1ra Tarea
2da Tarea
3ra Tarea
4ta Tarea
5ta Tarea
Resolución de problemas que apliquen las
estructuras de datos jerárquicas. Árboles
Binarios de Búsquedas y Árboles de
Expresión.
Resolución de problemas reales aplicando el
concepto de Colas de Prioridades.
Resolución de problemas aplicando el uso de
Tablas Hash.
Resolución de problemas aplicando Teoría de
Grafos.
Resolución de problemas que requieran algún
Proyecto Final
X-BIBLIOGRAFÍA
Bibliografía Básica:
 Introduction to algorithms / Thomas H. Cormen [et
al.]. (Cambridge : MIT Press, 3ra Ed. 2009)
Método de Ordenación y almacenamiento en
Ficheros. Evaluar eficiencia.
Desarrollar una aplicación que aborde los
contenidos estudiados en clase. El tema debe
estar relacionado con las asignaturas que el
estudiante ha cursado y/o aportes a la
sociedad.
Requerimientos mínimos: Utilización del
paradigma de POO, almacenamiento en
ficheros y una de las estructuras de datos
estudiadas.
Biblioteca
Internet
Bibliografía de Prácticas:

Biblioteca
Internet
Bibliografía Complementaria:
 Estructuras de Datos y Algoritmos / Aho, A. V.;
Hopcroft, J. E.; Ullman, J. D. (Addison Wesley
Iberoamericana)
 Data Structures, Algorithms and Program Style Using
C. James F. Korsh / Leonard J. Garrett Pws Pub Co
(1988)
Biblioteca
Internet
Descargar