2019-10

Semestre 2019-10

Nombre del curso: ISIS1206 Estructuras de Datos
Course Name: ——
Créditos: 3
Profesor: Mario de la Rosa Rosero (fde@uniandes.edu.co).
Luis Flores Salamanca (le.florez602@uniandes.edu.co).
Carlos Lozano Garzón (calozanog@uniandes.edu.co)
Versión PDF Click Aquí

Descripción

Estructuras de datos, es el último curso del ciclo básico de programación, el propósito de este curso es generar en el estudiante la habilidad de diseñar e implementar las estructuras de datos en memoria principal necesarias para resolver un problema, teniendo en cuenta un conjunto de restricciones y criterios de calidad.

Secciones

Sección: 1
Profesor: Fernando De la Rosa (fde@uniandes.edu.co)
Clases: Lu & Ma – 9:30 am a 10:50 am
Laboratorio: Ju 9:30 am a 10:50 am
Sección: 2
Profesor: Carlos Lozano (ca.lozano968@uniandes.edu.co)
Clases: Lu & Ju – 12:30 pm a 1:50pm
Laboratorio: Vi 12:30 pm a 1:50pm
Sección: 3
Profesor: Fernando De la Rosa (fde@uniandes.edu.co)
Clases: Ma & Ju – 2:00 pm a 3:20pm
Laboratorio: Vi 2:00 pm a 3:20pm
Sección: 4
Profesor: Luis Esteban Florez (le.florez602@uniandes.edu.co)
Clases: Lu & Ma – 3:30 pm a 4:50 pm
Laboratorio: Vi 3:30 pm a 4:50 pm

Objetivos

Al final del curso, se espera que el estudiante esté en capacidad de:

  • Diseñar e implementar una estructura contenedora abstracta, garantizando el desacoplamiento entre su descripción funcional y su representación interna.
  • Proponer y justificar el diseño de unas estructuras de datos para resolver un problema, utilizando como argumentos la complejidad de los algoritmos que implementan las operaciones críticas, el espacio ocupado en memoria y la flexibilidad.
  • Entender los diferentes tipos de estructuras de datos que se pueden utilizar para modelar los elementos de un mundo.
  • Escribir los algoritmos que manipulan las principales estructuras de datos lineales, de acceso directo, recursivas y no lineales.
  • Diseñar la solución a problemas integrando estructuras de datos apropiadas para obtener soluciones eficientes en tiempo y en espacio.

Metodología

El curso consiste en 3 horas semanales de clase presencial con el profesor, 1½ horas de trabajo supervisado en el laboratorio y 4½ horas de trabajo individual por fuera de clase. El estudiante que no asista al menos al 80% de las clases y sesiones de trabajo supervisado no podrá aprobar el curso. El curso esta organizado en 3 partes que corresponden a objetivos pedagógicos específicos y a un conjunto de conocimientos y habilidades que se introducen o refuerzan. Los medios de comunicación oficiales del curso son el sitio WEB del curso, la lista de correo electrónico y las aulas virtuales en SICUA+.

Evaluaciones

Durante el semestre se realizarán 3 exámenes escritos individuales. Además, el estudiante deberá desarrollar 3 proyectos, los cuales se desarrollarán en parejas, aunque la sustentación y la nota serán individuales. Adicionalmente los estudiantes desarrollaran individualmente talleres de refuerzos de los temas vistos. Sólo se aceptan las entregas de los proyectos y los talleres hechos según el medio electrónico definido para el curso y que es informado en los enunciados respectivos en los plazos establecidos. Sobre este último punto no hay excepciones.

Los porcentajes de calificación son los siguientes:

Concepto Porcentaje
Examen 1 17%
Examen 2 17%
Examen 3 17%
Proyecto 1 13%
Proyecto 2 13%
Proyecto 3 13%
Talleres 10%

Para aprobar el curso se debe obtener una nota numérica superior o igual a 3.0, lo cual implica que no hay ningún tipo de aproximación.

Notas finales

La nota final se calculará como la Nota Ponderada de las evaluaciones realizadas por su porcentaje respectivo, expresada con sus dos primeros decimales.

Caso Especial: NO hay aproximación a 3.00 con una nota ponderada inferior a 3.00. En particular, las notas ponderadas con 2.99 No se aproximan a 3.00.

Calendario

Semana Clase Tema Lecturas Presentación Laboratorio/Proyectos
1 1 Introducción Ambiente de desarrollo del cursoManejo de repositorios GIT–T1: Manejo de consola–Envío de talleres (estructura)Enunciado General del proyecto –Enunciado proyecto 1
2 Revisión Java
2 3 Analisis complejidad T2: Revisión Java
4 Listas
3 5 Pilas y Colas T3: Listas. Bolsas. Pilas
6 Algoritmos de ordenamiento básicos
4 7 MergeSort Seguimiento Proyecto 1- Envío Proyectos
8 Quicksort
5 9 Colas de prioridad: Binary Heap, HeapSort. T4: Ordenamiento
10 Colas de prioridad: Binary Heap, HeapSort.
6 Parcial 1 (Semana 1-4) Entrega proyecto 1 Enunciado proyecto 2
7 13 Búsquedas:tabla de símbolos, Tablas de Hash T5: Colas de prioridad: Binary Heap. HeapSort
14 Tablas de Hash
8 15 Árboles binarios T6: Tablas de Hash
16 Árboles binarios
9 17 Árboles balanceados Seguimiento proyecto 2
18 Árboles balanceados
10 Parcial 2 (Semana 5-9)
11 21 Grafos no dirigidos T7: Árboles binarios –Entrega proyecto 2 –Enunciado proyecto 3
22 Grafos no dirigidos
12 23 Grafos dirigidos T8:Grafos no dirigidos
24 Grafos dirigidos
13 25 Algoritmos sobre grafos T9:Grafos dirigidos
26 Algoritmos sobre grafos
14 27 Algoritmos sobre grafos T10:Algoritmos sobre grafos
28 Algoritmos sobre grafos
15 29 Revisión Parcial 3 Preparacion parcial 3
30 Parcial 3