AE-26 Estructura de Datos
AE-26 Estructura de Datos
- DATOS DE LA ASIGNATURA
Nombre de la asignatura:
Carrera:
Clave de la asignatura:
SATCA
1
Estructuras de Datos
Ingeniera Informtica e Ingeniera en
Sistemas Computacionales.
AED-1026
2 - 3 - 5
2.- PRESENTACIN
Caracterizacin de la asignatura.
La importancia de la materia radica en que aporta al perfil del egresado el conocimiento, la
correcta seleccin y aplicacin de las estructuras de datos en la solucin de problemas, as
como el determinar la eficiencia de algoritmos que permitan la seleccin de los mismos con
el fin de desarrollar soluciones eficientes.
Puesto que para llevar esta materia es indispensable conocer la programacin orientada a
objetos, esta se encuentra ubicada para ser cursada despus de las materias de
Fundamentos de Programacin y de Programacin Orientada a Objetos, siendo esta
materia pilar fundamental en el anlisis, diseo y desarrollo de sistemas de informacin.
Intencin didctica.
Esta materia est organizada en siete unidades. En ella, se distinguen claramente dos
apartados: primero, la implementacin de las estructuras de datos lineales y no lineales a
travs del manejo de memoria esttica y dinmica; segundo, el anlisis de los mtodos de
ordenamiento de datos internos para considerar su eficiencia en la aplicacin de soluciones
computacionales.
Se inicia el curso con el tratamiento de los tipos de datos abstractos. Para estudiar cada tipo
de dato abstracto, es necesario aplicar la modularidad, analizando la forma en que se
gestiona la memoria para almacenarlos.
La segunda unidad aborda la definicin, mecanismos y caractersticas de la recursividad,
aplicando stos a la creacin de procedimientos, as como el anlisis de las ventajas y
desventajas de estas soluciones recursivas. Los estudiantes identifican dichas
caractersticas de la recursividad y ejemplifican el caso de las Torres de Hanoi, Serie de
Fibonacci y Factorial entre otros para comprender mejor el mecanismo recursivo.
La tercera unidad trata sobre las estructuras lineales: listas, pilas y colas. La representacin
de pilas y colas puede darse a travs de vectores (memoria esttica) o apuntadores y/o
referencias (memoria dinmica). Se analizan tambin otras variantes como el caso de colas
circulares, colas de prioridad, listas simples y doblemente enlazadas. Los estudiantes
desarrollan aplicaciones para resolver problemas que requieran de estos tipos de
1
Sistema de asignacin y transferencia de crditos acadmicos
estructuras.
La cuarta unidad trata de las estructuras no lineales conocidas como rboles y grafos que
permiten dar solucin a problemas ms complejos a travs de la recursividad y la utilizacin
de memoria dinmica. Se analizan los recorridos tpicos de arboles binarios, bsquedas
entre otros, as como el algoritmo del viajero para operaciones con grafos.
En la quinta unidad, los estudiantes identifican la metodologa de cada algoritmo de
ordenamiento interno (memoria principal) y externos (memoria secundaria) midiendo su
comportamiento en condiciones similares.
Con la intencin de que el estudiante conozca otras estrategias para almacenar y recuperar
los datos as como fortalecer la seguridad de la informacin que se administra, se estudia la
sexta unidad encargada precisamente de los mtodos de recuperacin de informacin.
Para concluir el curso se realiza un estudio sobre el anlisis de la complejidad y eficiencia
de los algoritmos, lo cual permitir determinar cules son los algoritmos ms eficientes para
solucionar un problema. Al finalizar la materia se habr adquirido las bases para evaluar e
implementar soluciones por medio de estructuras.
Los contenidos se abordarn de manera secuencial como los marca el programa, buscando
la aplicacin del conocimiento en un proyecto integrador que incorpore de manera
progresiva los temas revisados en la materia; con un enfoque basado en actividades que
promuevan en el estudiante el desarrollo de sus habilidades para trabajar en equipo y
aplicar el conocimiento a la prctica.
El profesor adems de ser un motivador permanente en el proceso educativo deber ser
promotor y director de la enseanza a travs de la transmisin de su conocimiento, as
como la aplicacin de sus habilidades y destrezas utilizando las herramientas tradicionales y
digitales a su alcance para cautivar a sus estudiantes e interesarlos en el tema.
3.- COMPETENCIAS A DESARROLLAR
Competencias especficas:
Identificar, seleccionar y aplicar
eficientemente tipos de datos abstractos,
mtodos de ordenamiento y bsqueda para
la optimizacin del rendimiento de
soluciones de problemas del mundo real.
.
Competencias genricas:
Competencias instrumentales
Capacidad de anlisis y sntesis
Capacidad de organizar y planificar
Conocimientos bsicos de la carrera
Comunicacin oral y escrita
Habilidades bsicas de manejo de la
computadora
Habilidad para buscar y analizar
informacin proveniente de fuentes
diversas
Solucin de problemas
Toma de decisiones.
Competencias interpersonales
Capacidad crtica y autocrtica
Trabajo en equipo
Capacidad de comunicacin
interdisciplinaria
Apreciacin de la diversidad y
multiculturalidad.
Compromiso tico
Competencias sistmicas
Capacidad de aplicar los conocimientos
Habilidades de investigacin
Capacidad de aprender
Capacidad de generar nuevas ideas
(creatividad)
Liderazgo
Habilidad para trabajar en forma
autnoma
Bsqueda del logro
4.- HISTORIA DEL PROGRAMA
Lugar y fecha de
elaboracin o revisin
Participantes
Observaciones
(cambios y justificacin)
Instituto Tecnolgico de
5 al 10 de Octubre de
2009. Saltillo, Coah.
Representantes de los
Institutos Tecnolgicos
participantes en el diseo
de la carrera de Ingeniera
en Informtica.
Reunin Nacional de Diseo e
Innovacin Curricular de la
carrera de Ingeniera en
Informtica
Institutos Tecnolgicos de:
Colima, Lerdo, Tijuana y
Zacapoaxtla.
Institutos Tecnolgicos de:
Tijuana, Mexicali, Toluca.
Institutos Tecnolgicos
Superiores de:
Coatzacoalcos, Occidente
del Estado de Hidalgo,
Lerdo y Tepexi de
Rodrguez.
14 de Octubre de 2009 al
19 de Febrero de 2010.
Representantes de las
Academias de Sistemas y
Computacin.
Anlisis, enriquecimiento y
elaboracin del programa de
estudio propuesto en la
Reunin Nacional de Diseo
Curricular de la Carrera de:
Ingeniera en Informtica y
Ingeniera en Sistemas
Computacionales.
Instituto Tecnolgico de
Poza Rica, Veracruz. 22 al
26 de Febrero 2010.
Instituto Tecnolgico de
Aguascalientes, del 15 al
18 de J unio de 2010.
Representantes de los
Institutos Tecnolgicos: El
Llano, Ciudad J urez,
Colima, Comitancillo, Los
Mochis, Oaxaca y Tijuana.
Representantes de los
Institutos Tecnolgicos de:
Aguascalientes, Apizaco,
Cd. Madero, Colima, La
Paz, Toluca y
Villahermosa.
Reunin Nacional de
Consolidacin de la Carrera de
Ingeniera en Informtica.
Reunin Nacional de
Fortalecimiento Curricular de
las asignaturas comunes por
reas de conocimiento para los
planes de estudios actualizados
del SNEST.
5.- OBJETIVO(S) GENERAL(ES) DEL CURSO (competencias especficas a desarrollar
en el curso)
Identificar, seleccionar y aplicar eficientemente tipos de datos abstractos, mtodos de
ordenamiento y bsqueda para la optimizacin del rendimiento de soluciones de
problemas del mundo real.
6.- COMPETENCIAS PREVIAS
Utilizar tcnicas de modelado para la solucin de problemas.
Aplicar la sintaxis de un lenguaje orientado a objetos.
Aplicar un lenguaje orientado a objetos para la solucin de problemas.
7.- TEMARIO
Unidad Temas Subtemas
1
Introduccin a las
estructuras de datos.
1.1 Tipos de datos abstractos (TDA).
1.2 Modularidad.
1.3 Uso de TDA.
1.4 Manejo de memoria esttica.
1.5 Manejo de memoria dinmica
2 Recursividad
2.1 Definicin
2.2 Procedimientos recursivos
2.3 Ejemplos de casos recursivos
3 Estructuras lineales Listas.
Operaciones bsicas con listas.
Tipos de listas.
Listas simplemente enlazadas.
Listas doblemente enlazadas.
Listas circulares.
Aplicaciones.
Pilas.
Representacin en memoria esttica
y dinmica.
Operaciones bsicas con pilas.
Aplicaciones.
Notacin infija y postfija.
Recursividad con ayuda de pilas.
Colas.
Representacin en memoria esttica
y dinmica.
Operaciones bsicas con colas.
Tipos de colas: Cola simple, Cola
circular y Colas dobles.
Aplicaciones: Colas de prioridad.
4 Estructuras no lineales 4.1 Arboles.
4.1.1 Concepto de rbol.
4.1.2 Clasificacin de rboles.
4.1.3 Operaciones bsicas sobre rboles
binarios.
4.1.4 Aplicaciones.
4.1.5 Arboles balanceados (AVL).
4.2 Grafos.
4.2.1 Terminologa de grafos.
4.2.2 Operaciones bsicas sobre grafos.
5 Mtodos de ordenamiento 5.1 Algoritmos de Ordenamiento Internos
5.1.1 Burbuja.
5.1.2 Quicksort.
5.1.3 ShellSort.
5.1.4 Radix
5.2 Algoritmos de ordenamiento Externos
5.2.1 Intercalacin
5.2.2 Mezcla Directa
5.2.3 Mezcla Natural
6 Mtodos de bsqueda 6.1 Bsqueda secuencial
6.2 Bsqueda binaria
6.3 Bsqueda por funciones de HASH
7 Anlisis de los algoritmos
7.1 Complejidad en el tiempo.
7.2 Complejidad en el espacio.
7.3 Eficiencia de los algoritmos.
8.- SUGERENCIAS DIDCTICAS (desarrollo de competencias genricas)
El profesor debe:
Ser conocedor de la disciplina que est bajo su responsabilidad, conocer su origen y
desarrollo histrico para considerar este conocimiento al abordar los temas. Desarrollar la
capacidad para coordinar y trabajar en equipo; orientar el trabajo del estudiante y potenciar
en l la autonoma, el trabajo cooperativo y la toma de decisiones. Mostrar flexibilidad en el
seguimiento del proceso formativo y propiciar la interaccin entre los estudiantes. Tomar en
cuenta el conocimiento de los estudiantes como punto de partida y como obstculo para la
construccin de nuevos conocimientos.
Propiciar actividades de metacognicin. Ante la ejecucin de una actividad, sealar o
identificar el tipo de proceso intelectual que se realiz: una identificacin de patrones,
un anlisis, una sntesis, la creacin de un heurstico, etc. Al principio lo har el
profesor, luego ser el alumno quien lo identifique, como: reconocer el mecanismo
natural de implementacin de listas; identificar las variantes para implementar pilas y
colas.
Propiciar actividades de bsqueda, seleccin y anlisis de informacin en distintas
fuentes, como: buscar y contrastar definiciones de las estructuras de datos lineales y
no lineales identificando puntos de coincidencia entre unas y otras definiciones e
identificar cada estructura en situaciones concretas.
Fomentar actividades grupales que propicien la comunicacin, el intercambio
argumentado de ideas, la reflexin, la integracin y la colaboracin de y entre los
estudiantes, como: presentar en equipo o plenaria los resultados de las soluciones a
los problemas propuestos.
Relacionar los contenidos de esta asignatura con las dems del plan de estudios a
las que sta da soporte para desarrollar una visin interdisciplinaria en el estudiante,
como: identificar las estructuras de datos, los casos en que se aplica las estructuras
lineales y en cuales se aplican las no lineales; conocer cmo el sistema operativo
requiere de las estructuras de datos en el manejo de los diferentes procesos;
distinguir cuando aplicar los mtodos de ordenamiento y bsqueda en el manejo de
los datos.
Propiciar el desarrollo de capacidades intelectuales relacionadas con la lectura, la
escritura y la expresin oral, como: redactar reportes sobre resultados obtenidos, as
como la exposicin de las conclusiones, ante el grupo, obtenidas durante el
desarrollo de la actividad.
Propiciar el desarrollo de actividades intelectuales de induccin-deduccin y anlisis-
sntesis, que encaminen hacia la investigacin.
Desarrollar actividades de aprendizaje que propicien la aplicacin de los conceptos,
modelos y metodologas que se van aprendiendo en el desarrollo de la asignatura.
Proponer problemas que permitan al estudiante la integracin de contenidos de la
asignatura y entre distintas asignaturas, para su anlisis y solucin.
Relacionar los contenidos de la asignatura con el uso responsable de los recursos del
medio ambiente.
Cuando los temas lo requieran, utilizar Tecnologas de Informacin y Comunicacin
para una mejor comprensin del estudiante.
Propiciar el uso de las nuevas tecnologas en el desarrollo de la asignatura (lenguajes
de programacin orientados a objetos, procesador de texto, hoja de clculo, Internet,
etc.).
Promover actividades de educacin holstica, como promover valores personales y
sociales a travs de actividades de crecimiento personal, asistencia social y el
cuidado del medio ambiente.
Definicin y diseo de rbricas.
9.- SUGERENCIAS DE EVALUACIN
La evaluacin ser permanente, enfocada en los conocimientos, su aplicacin y la actitud
mostrada por el estudiante. Se considerar el desempeo en cada una de las actividades de
aprendizaje, haciendo especial nfasis en:
Reportes escritos de los resultados u observaciones obtenidas durante las
actividades realizadas en cada unidad acadmica, as como de las conclusiones
obtenidas de dichas observaciones.
Informacin recabada durante las consultas e investigaciones solicitadas, plasmadas
en documentos escritos.
Descripcin de otras experiencias concretas que se obtendrn al participar en
discusiones, exposiciones o cualquier otro medio didctico-profesional que trate sobre
la materia y que debern realizarse durante el curso acadmico.
Exmenes terico-prcticos para comprobar la efectividad del estudiante en la
comprensin de aspectos tericos y su aplicacin a la solucin de casos prcticos.
Presentacin y exposicin de cada actividad de aprendizaje. Algunas se evaluarn
por equipo.
Integracin de rbricas en el Portafolio de evidencias.
10.- UNIDADES DE APRENDIZAJE
Unidad 1: Introduccin a las estructuras de datos
Competencia especfica a
desarrollar
Actividades de Aprendizaje
Representar y aplicar los tipos de
datos abstractos por medio de un
lenguaje de programacin.
Prctica de ejercicios. Elaborar un programa
en un lenguaje de programacin que incorpore
en un vector de n elementos sus operaciones
bsicas: insertar, eliminar, ordenar, buscar,
cantidad de memoria esttica utilizada y tiempo
de ordenamiento.
Prctica de ejercicios. Elaborar un programa
en un lenguaje de programacin que incorpore
en una lista de n elementos de forma
ordenada. Considere adems las funciones de
eliminar, buscar y cantidad de memoria
dinmica utilizada.
Unidad 2: Recursividad
Competencia especfica a
desarrollar
Actividades de Aprendizaje
Comprender y aplicar la
recursividad como herramienta de
programacin para el manejo de
las estructuras de datos.
Consultar en las fuentes impresas el concepto
de recursividad.
Ejemplificar un caso recursivo de la vida
cotidiana como calcular el Factorial de un
nmero entero positivo.
Prctica de ejercicios. Identificar problemas
resueltos de manera iterativa y encontrar su
solucin recursiva mediante codificacin en
algn lenguaje de programacin.
Participar en plenaria para determinar las
ventajas y desventajas del uso de la
recursividad.
Unidad 3: Estructuras lineales
Competencia especfica a
desarrollar
Actividades de Aprendizaje
Conocer, identificar y aplicar las
estructuras lineales en la solucin
de problemas del mundo real.
Consultar las caractersticas de las estructuras
lineales en fuentes bibliogrficas y
comentarlas en plenaria.
Prcticas de ejercicios. Utilizando un lenguaje
de programacin implemente las operaciones
bsicas (insertar, eliminar y buscar) en listas
simples y doblemente enlazadas.
Prctica de ejercicios. Utilizando un lenguaje
de programacin implemente las operaciones
bsicas (insertar y eliminar) en una pila en sus
modalidades esttica y dinmica.
Prctica de ejercicios. Utilizando un lenguaje
de programacin implemente las operaciones
bsicas (insertar y eliminar) en una cola en sus
modalidades esttica y dinmica. Incorpore
adems sus variantes de cola circular y bicola.
Unidad 4: Estructuras no lineales
Competencia especfica a
desarrollar
Actividades de Aprendizaje
Conocer, identificar y aplicar las
estructuras no lineales en la
solucin de problemas del mundo
real.
Consultar en las fuentes bibliogrficas la
terminologa sobre rboles. Comentar
informacin en plenaria.
Prctica de ejercicios. Utilizando un lenguaje de
programacin implemente las operaciones
bsicas (insertar, eliminar, buscar) en un rbol
binario de bsqueda, as como los recorridos en
preorden, inorden y postorden.
Unidad 5: Mtodos de ordenamiento
Competencia especfica a
desarrollar
Actividades de Aprendizaje
Aplicar el mtodo de
ordenamiento pertinente en la
solucin de un problema real.
Consultar en las fuentes bibliogrficas los
diversos algoritmos de ordenamiento y
analizarlos en plenaria.
Plantear en el aula, problemas donde se
justifique la necesidad de utilizar mtodos de
ordenamiento.
Prctica de ejercicios. Implementar en un
lenguaje de programacin los mtodos de
ordenamiento para un conjunto de n datos
generados aleatoriamente.
Generar cuadro comparativo con los tiempos
obtenidos en cada mtodo de ordenamiento.
Unidad 6: Mtodos de bsqueda
Competencia especfica a
desarrollar
Actividades de Aprendizaje
Aplicar el mtodo de bsqueda
pertinente en la solucin de un
problema real.
Consultar en las fuentes bibliogrficas los
diversos algoritmos de bsqueda y analizarlos
en plenaria.
Prctica de ejercicios. Implementar en un
lenguaje de programacin los mtodos de
bsqueda para un conjunto de n datos
generados aleatoriamente.
Generar cuadro comparativo con los tiempos
obtenidos en cada mtodo de bsqueda.
Unidad 7: Anlisis de algoritmos
Competencia especfica a
desarrollar
Actividades de Aprendizaje
Comprender la complejidad de los
algoritmos e identificar la
eficiencia de los mismos.
Generar cuadro comparativo con los tiempos
obtenidos en cada mtodo de ordenamiento y
bsqueda.
Comentario. Emitir su propia conclusin al
observar la complejidad de los algoritmos
estudiados y contrastarla con lo que dicen al
respecto, los autores citados en las fuentes
bibliogrficas.
11.- FUENTES DE INFORMACIN
Impresas:
1. Cairo, Osvaldo; Guardati, Silvia. Estructura de Datos, Tercera Edicin. Mc Graw Hill,
Mxico, 2006.
2. Joyanes Aguilar, Luis. Fundamentos de Programacin. Algoritmos y Estructuras de
Datos. Tercera Edicin 2003. McGraw Hill.
3. Guardati, Silvia. Estructura de Datos Orientada a Objetos Algoritmos con C++, Primera
Edicin. Prentice Hall, Mxico, 2007.
4. Mark Allen Weiss. Estructura de datos en J ava. Ed. Addison Wesley.
5. C. Thomas Wu. Introduccin a la Programacin Orientada a Objetos con J ava. Ed.
Pearson Educacin.
6. Decker, Hirshfield. Programacin con J ava. Ed. International Thomson Editores.
7. Roman Martinez, Elda Quriga. Estructura de Datos Referencia practica con orientacin a
objetos. Ed. Thomson, Mexico, 2004.
Electrnicas:
Abdiel Cceres Gonzlez. Mayo 2005. Estructuras de datos en C++. [Publicacin en
lnea]. Disponible desde Internet en:
http://computacion.cs.cinvestav.mx/~acaceres/courses/estDatosCPP/index.html. [Con
acceso el 30-01-2010].
SMETE. Sin fecha. Data Structure. [Publicacin en lnea]. Disponible desde Internet
en:
http://courses.cs.vt.edu/~csonline/DataStructures/Lessons/index.html?downloadURL=
true&loId=17BEFD1C-BF52-417E-98D2-9582AF0C7662 [Con acceso el 30-01-2010].
12.- PRCTICAS PROPUESTAS
1. Introduccin a las estructuras de datos.
a. Elaborar un cuadro comparativo que muestre la representacin de la memoria
esttica y dinmica.
b. Desarrollar una aplicacin donde se utilicen TDA para comprobar el
comportamiento esttico y dinmico.
2. Recursividad.
a. Elaborar prctica de ejercicios utilizando un lenguaje de programacin que
resuelva mediante la tcnica de recursividad, para generar la Serie de
Fibonacci.
b. Elaborar prctica de ejercicios utilizando un lenguaje de programacin que
resuelva mediante la tcnica de recursividad, el nmero de movimientos de
anillos en la Torre de Hanoi.
3. Estructuras lineales.
a. Elaborar prctica de ejercicios utilizando un lenguaje de programacin que
resuelva los siguientes ejercicios de estructuras lineales:
i. Desarrollar programa que simule una lista de espera para la
asignacin de mesas en un restaurante.
ii. Desarrollar programa para simular las llamadas a funciones utilizando
una pila.
iii. Un evaluador de expresiones posfijas funciona sobre expresiones
aritmticas que tienen esta forma: op1 op2 operador. Usando dos
pilas, una para los operandos y una para los operadores. Disea e
implementa una clase Calculadora que convierta expresiones infijas a
expresiones posfijo y despus utiliza las pilas para evaluar las
expresiones.
iv. Desarrollar programa que simule la salida de aviones en un aeropuerto
utilizando colas de prioridad.
4. Estructuras no lineales.
i. Generar una aplicacin utilizando los conceptos de rboles AVL.
ii. Implementar el algoritmo El viajero mediante (camino mnimo) grafos.
iii. Construir un grafo ponderado que modele una seccin de su Estado
de origen. Utilice el algoritmo de Dijkstra para determinar el camino
ms corto, desde el vrtice inicial hasta el ltimo vrtice.
5. Mtodos de ordenamiento.
a. Elaborar prctica de ejercicios utilizando un lenguaje de programacin que
resuelva los siguientes ejercicios de mtodos de ordenamiento:
i. Aplicar los mtodos de ordenamiento a un conjunto de n datos y
determinar su complejidad.
b. Elaborar un cuadro comparativo de los registros del tiempo empleado por
cada mtodo de ordenamiento para datos en orden aleatorio, ordenados y
orden inverso.
6. Mtodos de bsqueda.
a. Aplicar los mtodos de bsqueda a un conjunto de n datos y determinar su
eficiencia.
b. Elaborar su propio mtodo de bsqueda
7. Realizar dos cuadros comparativos que reflejen la complejidad en el tiempo y en el
espacio de los mtodos de:
a. Ordenamiento.
b. Bsqueda.