Encabezado Facultad de Ciencias
Presentación

Ciencias de la Computación (plan 2013) 2018-1

Segundo Semestre, Estructuras de Datos

Grupo 7033, 40 lugares. 33 alumnos.
Profesor Carlos Zerón Martínez ma ju 16 a 17:30 P212
Ayudante Edwin Antonio Galván Gámez lu mi 15 a 16 P212
Ayud. Lab. Manuel Ignacio Castillo López lu mi 12 a 14 Laboratorio de Ciencias de la Computación 1
 

La presentación se llevará a cabo el Martes 8 de Agosto en el salón asignado. se aceptan estudiantes de extraordinario largo.

La dirección electrónica del sitio de apoyo al curso es:

https://sites.google.com/a/ciencias.unam.mx/estructuras-datos/

el día mencionado se mencionará la política de acceso al sitio y a una lista de distribución que se usará para asuntos relacionados con el curso.

Objetivos Generales

Este curso tiene como propósito fundamental proporcionar al alumno las técnicas de organización y manejo de datos más usuales y los criterios que le permitan decidir cuáles de ellas resultan más apropiadas para la resolución de un problema determinado, entre los que aparece la eficiencia de las soluciones diseñadas, entre los que aparece la eficiencia, dada su importancia en la mayoría de sistemas de software, como son la Web, sistemas operativos, bases de datos, compiladores y sistemas de simulación científica.

En este curso se presentan diversas estructuras de datos, incluyendo para cada una de ellas su definición, forma(s) de implementación, eficiencia de las operaciones soportadas por la estructura de datos, así como aplicaciones a problemas concretos. Para la implementación de las distintas estructuras de datos que se revisan en el curso se hace uso del lenguaje de programación Java.

Contenido del curso

1. Conceptos Básicos
  • 1.1 Diseño Orientado a Objetos: Metas y Principios
  • 1.2 Tipo de Dato Abstracto y Estructura de Datos
  • 1.3 Introducción al Análisis de Algoritmos
2. Recursión
  • 2.1 Algoritmos Recursivos
  • 2.2 Relaciones de Recurrencia
3. Listas
  • 3.1 Implementación Basada en un Arreglo
  • 3.2 Listas Ligadas
  • 3.3 Listas Doblemente Ligadas
4. Pilas y Colas
  • 4.1 Implementación Basada en un Arreglo
  • 4.2 Implementación Basada en una Lista Ligada
5. Arboles
  • 5.1 Arboles Generales: Definiciones y Algoritmos Básicos
  • 5.2 Arboles Binarios. Implementación
  • 5.3 Arboles Binarios Completos. Heaps
  • 5.4 Arboles Binarios de Búsqueda. Implementación
6. Colas de Prioridades
  • 6.1 Implementación Basada en una Lista
  • 6.2 Implementación Basada en un Heap
7. Mapas
  • 7.1 Funciones y Tablas de Dispersión
  • 7.2 Estrategias para Manejo de Colisiones
  • 7.3 Mapas Ordenados
8. Algoritmos de Ordenamiento
  • 8.1 Ordenamiento por Selección
  • 8.2 Ordenamiento por Inserción
  • 8.3 Ordenamiento por Mezcla
  • 8.4 Ordenamiento Rápido
9. Gráficas
  • 9.1 Definiciones Básicas
  • 9.2 Implementación Basada en Matriz de Adyacencias
  • 9.3 Implementación Basada en Lista de Adyacencias
  • 9.4 Recorridos Fundamentales y Ordenamiento Topológico en Gráficas

Evaluación

6 Tareas escritas 30%
4 Exámenes parciales 30%
6 ó 7 Prácticas de programación 30%
1 Proyecto final de programación 10%
Asistencias +/- 5%

Normas Adicionales

  • 1. No existe examen final. Sólo se puede presentar la reposición de un examen parcial, una tarea y una práctica.

  • 2. Las tareas pueden entregarse en equipos de dos personas o en forma individual por medio impreso el dia especificado dentro de la hora de clase (ayudantía), no se aceptan tareas por correo.

  • 3. Las prácticas se entregan en forma individual via correo electrónico con los lineamientos establecidos por el ayudante de laboratorio

  • 4. Las tareas y prácticas se pueden entregar después del día estipulado para la entrega, pero se registrará una penalización de dos puntos por cada dia natural de retraso con respecto a la fecha de entrega original. A partir del quinto dia de retraso en la entrega de una práctica o tarea, se considerará como no entregada. La entrega podrá hacerse sin penalización si existen causas de fuerza mayor que sean comprobables documentalmente para los días en que proceda.

  • 5. Los primeros exámenes tienen duración de una hora, mientras que el cuarto será tarea - examen. Todos tienen fecha de presentación estricta, salvo por causas de fuerza mayor que sean comprobables documentalmente.

  • 6. El proyecto final puede ser entregado por equipos de dos personas o en forma individual via correo electrónico y tiene fecha de entrega estricta, salvo por causas de fuerza mayor que sean comprobables documentalmente.

  • 7. Es necesario presentar los tres exámenes y el proyecto final para poder aprobar el curso.

  • 8. Ocasionalmente se pasará lista en sesiones de clase, ayudantía o de laboratorio. Dependiendo de cómo sea el número de asistencias registradas con respecto al de inasistencias se asignará a cada alumno(a): un incremento de puntuación si el primer número es superior al segundo, un decremento si el primer número es inferior y cero si ambos números son iguales. En particular, si un(a) alumno(a) tiene todas las asistencias, obtendrá medio punto adicional sobre la calificación final obtenida y en caso de que no tenga ninguna asistencia registrada, perderá medio punto a partir de dicha calificación.

  • 9. Cada alumno(a) debe entregar por escrito al profesor el contenido de esta presentación firmado de conformidad a más tardar dos semanas después del dia que comienza el semestre, para tener derecho a calificación, de lo contrario se asignará NP.

  • 10. No se puede renunciar a la calificación final obtenida. Una persona obtendrá NP como calificación si no entrega nada o su promedio final es mayor o igual a 5 y menor estricto que 6.

Referencias

[1] López G., A.
Estructuras de Datos con Java: Un Enfoque Práctico.
Las Prensas de Ciencias, 2011.

[2] Carrano, F. M. y Prichard, J.J.
Data Abstraction and Problem Solving with Java. Se-
gunda Edición. Addison-Wesley, 2005.

[3] Weiss, M. A.
Data Structures and Algorithm Analysis in Java.
Addison-Wesley, tercera edición, 2012.

[4] Budd, T.
Classic Data Structures in Java. Addison-Wesley, 2000.

[5] Goodrich, M.T., Tamassia, R. y Goldwasser, M.H.
Data Structures and Algorithms in Java. John Wiley
and Sons, Inc., sexta edición, 2014.

[6] Riley, D.
The Object of Data Abstraction and Structures using
Java. Addison-Wesley, 2002.

[7] Shaffer, C.A.
Data Structures and Algorithm Analysis. Edición 3.2.
Prentice Hall, 2013

[8] Goldman, S. y Goldman, K.J.
A Practical Guide to Data Structures and Algorithms
Using Java. Chapman & Hall - CRC Press, 2007.

[9] Eck, D.J.
Introduction to Programming Using Java.
CreateSpace, Paramount, CA, Version 7.0, 2014.

 


Hecho en México, todos los derechos reservados 2011-2016. Esta página puede ser reproducida con fines no lucrativos, siempre y cuando no se mutile, se cite la fuente completa y su dirección electrónica. De otra forma requiere permiso previo por escrito de la Institución.
Sitio web administrado por la Coordinación de los Servicios de Cómputo de la Facultad de Ciencias. ¿Dudas?, ¿comentarios?. Escribenos. Aviso de privacidad.