Logo Studenta

EDD_Portafolio_JorgeMenaTorres

¡Este material tiene más páginas!

Vista previa del material en texto

INSTITUTO TECNOLÓGICO SUPERIOR PROGRESO
PROGRAMA ACADÉMICO DE INGENIERÍA EN SISTEMAS COMPUTACIONALES
ASIGNATURA
Estructura de Datos
DOCENTE
Dr. Holzen A. Martínez García
TRABAJO
Portafolio de evidencias
PRESENTA
Jorge Abraham Mena Torres 04200016
Progreso Yucatán, 28 de Septiembre de 2021.
PORTAFOLIO DE EVIDENCIAS
	NOMBRE DEL /LA
ESTUDIANTE
	JORGE ABRAHAM MENA TORRES
	MATRICULA
	04200016
	CARRERA
	INGENIERÍA EN SISTEMAS COMPUTACIONALES
	CORREO ELECTRÓNICO
	Jmena722@gmail.com
	SEMESTRE
	TERCERO
	TUTOR
	DR. HOLZEN MARTÍNEZ GARCÍA
	CORREO ELECTRÓNICO
	Holzen.mg@progreso.tecnm.mx
Contenido
No se encontraron entradas de tabla de contenido.
REGLAS DE COMPORTAMIENTO DE GRUPO
DERECHOS DEL ALUMNO:
1. Ser respetado por el maestro y el alumno
2. Participar libremente durante las clases
3. Recibir asesorías en caso de no haber comprendido un tema, o aclarar dudas, dicha asesoría se deberá solicitar con un día de anticipación.
4. Recibir retroalimentación en el momento que decida hacerlo
5. Que se le justifique la inasistencia, siempre y cuando presente la evidencia que justifique la falta.
6. Se le reciban, revisen y regresen los trabajos, proyectos de evaluación, prácticas, tareas y actividades evaluadas.
7. Recibir sus promedios de evaluaciones o después de ser evaluado.
OBLIGACIONES:
1. Respetar a su maestro y a sus compañeros
2. Asistir puntualmente a sus clases programadas.
3. Mantener disciplina en las clases y exposiciones del maestro
4. No ingerir alimentos dentro del aula y horarios de clases
5. Mantener limpio y ordenado el salón de clases
6. Cumplir con actividades, tareas, proyectos, investigaciones individuales y en equipo que se le asignen
7. Evitar el uso de celular o aparatos electrónicos que alteren el orden y disciplina en las clases.
8. Integrar y reportar al maestro cada vez que lo requiera el portafolio de evidencias del módulo, el cual incluya trabajos, tareas, actividades, proyectos, que evidencien las competencias generadas en el desarrollo del módulo.
	
	
	
	DR. Holzen Martínez García DOCENTE
	
	Jorge Abraham Mena Torres
INSTRUMENTACIÓN DIDÁCTICA
	Periodo:
	2021B
	Nombre de la asignatura: 
	Estructuras de Datos
	Plan de estudios: 
	ISIC-2010-224
	Clave de asignatura: 
	AED-1026
	Horas teoría – horas prácticas – créditos: 
	2-3-5
1. Caracterización de la asignatura 
	Esta asignatura proporciona al perfil del egresado habilidades para la selección y aplicación de algoritmos y las estructuras de datos en el desarrollo e implementación de programas que permitan la solución de problemas.
La relevancia de la asignatura es que el alumno identifique claramente la forma en cómo se estructuran y organizan los datos internamente, para poder hacerlos más eficientes en cuanto a la administración del tiempo de procesador y el uso de la memoria.
Para cursar esta asignatura se requiere tener habilidades básicas de programación e interpretación de algoritmos y tener el dominio del paradigma orientado a objetos. Además, debe de conocer y manejar los conceptos generales de la lógica matemática, relaciones y la teoría de grafos, por esta razón se encuentra ubicada para ser cursada después de Fundamentos de Programación y de Programación Orientada a Objetos y Matemáticas Discretas, a su vez, esta asignatura es el pilar fundamental en el análisis, diseño y desarrollo de aplicaciones de software de bajo y alto nivel.
2. Intención didáctica 
	Esta asignatura está organizada en seis temas. En ella, se distinguen claramente dos apartados: primero, la implementación de las estructuras de datos lineales y no lineales a través del manejo de memoria estática y dinámica; segundo, el análisis de los métodos de ordenamiento de datos internos para considerar su eficiencia en la aplicación 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. Se realiza además un estudio sobre el análisis de la complejidad y eficiencia de los algoritmos, lo cual permitirá determinar cuáles son los algoritmos más eficientes para solucionar un problema.
El segundo tema aborda la definición, mecanismos y características de la recursividad, aplicando éstos a la creación de procedimientos, así como el análisis de las ventajas y desventajas de estas soluciones recursivas. Los estudiantes identifican dichas características 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 segunda unidad aborda la definición, mecanismos y características de la recursividad, aplicando éstos a la creación de procedimientos, así como el análisis de las ventajas y desventajas de estas soluciones recursivas. Los estudiantes identifican dichas características 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 representación de pilas y colas puede darse a través de vectores (memoria estática) o apuntadores y/o referencias (memoria dinámica). Se analizan también 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 estructuras.
La cuarta unidad trata de las estructuras no lineales conocidas como árboles y grafos que permiten dar solución a problemas más complejos a través de la recursividad y la utilización de memoria dinámica. Se analizan los recorridos típicos de árboles binarios, búsquedas entre otros, así como el algoritmo del viajero para operaciones con grafos.
En la quinta unidad, los estudiantes identifican la metodología de cada algoritmo de ordenamiento interno (memoria principal) y externos (memoria secundaria) midiendo su comportamiento en condiciones similares.
Con la intención de que el estudiante conozca otras estrategias para almacenar y recuperar los datos así como fortalecer la seguridad de la información que se administra, se estudia la sexta unidad encargada precisamente de los métodos de recuperación de información.
Para concluir el curso se realiza un estudio sobre el análisis de la complejidad y eficiencia de los algoritmos, lo cual permitirá determinar cuáles son los algoritmos más 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 abordarán de manera secuencial como los marca el programa, buscando la aplicación 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 práctica. El profesor además de ser un motivador permanente en el proceso educativo deberá ser promotor y director de la enseñanza a través de la transmisión de su conocimiento, así como la aplicación 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. Competencia de la asignatura 
	Conoce, comprende y aplica eficientemente estructuras de datos, métodos de ordenamiento y búsqueda para la optimización del rendimiento de soluciones a problemas del mundo real.
4. Análisis por competencias específicas 
Competencia No.: 1	Conoce y comprende las diferentes estructuras de datos, su clasificación y forma de manipularlas para buscar la manera más eficiente de resolver problemas.
	Temas y subtemas para desarrollar la competencia especifica
	Actividades de aprendizaje
	Actividades de enseñanza
	Desarrollo de competencias genéricas
	Horas teórico-práctica
	
INTRODUCCIÓNA LAS ESTRUCTURAS DE DATOS
1.1 Clasificación de las estructuras de datos
1.2 Tipos de datos abstractos (TDA)
1.3 Ejemplos de TDA’s
1.4 Manejo de memoria
1.4.1 Memoria estática
1.4.2 Memoria dinámica
1.5 Análisis de algoritmos
1.5.1 Complejidad en el tiempo
1.5.2 Complejidad en el espacio
1.5.3 Eficiencia de los algoritmos
	Investigar las diferentes estructuras de datos y su clasificación para elaborar un cuadro sinóptico.
Hacer un resumen sobre el concepto de Tipos de datos abstractos y su implementación en la programación orientada a objetos.
Discutir en plenaria las diferencias entre el manejo de memoria estática y dinámica, así como ventajas y desventajas.
Escribir un programa para la generación de vectores en tiempo de ejecución.
Escribir un programa que ejemplifique el uso de la memoria dinámica. 
Identificar la eficiencia de dos algoritmos distintos que resuelven un mismo problema y elaborar un cuadro comparativo.
	La enseñanza se llevará a cabo dentro y fuera del aula mediante las siguientes técnicas y herramientas:
· Foros de discusión.
· Resúmenes clave.
· Ilustraciones del tema.
· Mapas conceptuales.
· Sesión plenaria.
· Ejemplos interactivos.
	Capacidad de análisis y síntesis.
Habilidad en el manejo de equipo de cómputo.
Capacidad para trabajar en equipo.
Habilidad para buscar y analizar información proveniente de fuentes diversas.
	4-6
	Indicadores de alcance
	Valor del indicador
	a) Conocer los tipos de datos abstractos y su implementación en la programación orientada a objetos.
b) Identificar los tipos de datos abstractos y su implementación en la programación orientada a objetos.
c) Presentar las diferencias de la memoria estática y dinámica.
d) Utilizar los conocimientos previos para codificar dos algoritmos distintos que resuelven un mismo problema.
e) Aplicar un juicio ingenieril por escrito acerca de los dos algoritmos previos con base en la resolución del problema.
	a) 8%
b) 7%
c) 10%
d) 10%
e) 5%
Niveles de desempeño:
	Desempeño
	Nivel de desempeño
	Indicadores de alcance
	Valoración numérica
	Competencia alcanzada
	Excelente
	De acuerdo a los puntajes obtenidos en cada una de las rúbricas de las evidencias de aprendizaje relacionadas a los cinco niveles de alcance
	95-100
	
	Notable
	De acuerdo a los puntajes obtenidos en cada una de las rúbricas de las evidencias de aprendizaje relacionadas a los cinco niveles de alcance
	90-94
	
	Bueno
	De acuerdo a los puntajes obtenidos en cada una de las rúbricas de las evidencias de aprendizaje relacionadas a los cinco niveles de alcance
	77-89
	
	Suficiente
	De acuerdo a los puntajes obtenidos en cada una de las rúbricas de las evidencias de aprendizaje relacionadas a los cinco niveles de alcance
	70-76
	Competencia no alcanzada
	Insuficiente
	De acuerdo a los puntajes obtenidos en cada una de las rúbricas de las evidencias de aprendizaje relacionadas a los cinco niveles de alcance
	Menos de 70
Matriz de evaluación:
	Evidencia de aprendizaje
	%
	Indicador de alcance
	Evaluación formativa de la competencia
	
	
	A
	B
	C
	D
	E
	
	Ensayo TDA’s
	15
	
	
	
	
	
	a) Conocer los tipos de datos abstractos y su implementación en la programación orientada a objetos.
	
	
	
	
	
	
	
	b) Identificar los tipos de datos abstractos y su implementación en la programación orientada a objetos.
	Reporte de práctica
	25
	
	
	
	
	
	c) Presentar las diferencias de la memoria estática y dinámica.
	
	
	
	
	
	
	
	d) Utilizar los conocimientos previos para codificar dos algoritmos distintos que resuelven un mismo problema.
	
	
	
	
	
	
	
	e) Aplicar un juicio ingenieril por escrito acerca de los dos algoritmos previos con base en la resolución del problema, que permita diferenciar entre uso de memoria estática y dinámica.
	
	Total: 40 (40% Parcial 1)
	
	
	
	
	
	
Competencia No.: 2 Aplica la recursividad en la solución de problemas valorando su pertinencia en el uso eficaz de los recursos.
	Temas y subtemas para desarrollar la competencia especifica
	Actividades de aprendizaje
	Actividades de enseñanza
	Desarrollo de competencias genéricas
	Horas teórico-práctica
	RECURSIVIDAD
2.1 Definición
2.2 Procedimientos recursivos
2.3 Ejemplos de casos recursivos
	Redactar una definición propia del concepto de recursividad después de consultar en diferentes fuentes bibliográficas.
Enumerar las ventajas y desventajas del uso de la recursividad en una plenaria.
Trasladar un catálogo de problemas iterativos a recursivos, donde distinga el segmento recursivo y la condición de salida, elaborar un reporte de práctica de ejercicios.
Desarrollar programas en los cuales se aplique la recursividad y entregar informe.
	La enseñanza se llevará a cabo dentro y fuera del aula mediante las siguientes técnicas y herramientas:
· Foros de discusión.
· Resúmenes clave.
· Ilustraciones del tema.
· Mapas conceptuales.
· Sesión plenaria.
· Ejemplos interactivos.
	Habilidad para buscar y analizar información proveniente de fuentes diversas.
Capacidad de análisis y síntesis
Habilidad en el manejo de equipo de cómputo
Capacidad para trabajar en equipo.
Capacidad de aplicar los conocimientos en la práctica.
	4-6
	Indicadores de alcance
	Valor del indicador
	a) Conocer el concepto de recursividad
b) Identificar las ventajas y desventajas de la recursividad.
c) Presentar ejemplos de la vida cotidiana, resueltos de manera iterativa y recursiva.
d) Utilizar los conocimientos adquiridos para resolver un problema clásico de ingeniería.
e) Aplicar los conocimientos para modelar un problema clásico de ingeniería.
	a) 5%
b) 10%
c) 15%
d) 15%
e) 15%
Niveles de desempeño:
	Desempeño
	Nivel de desempeño
	Indicadores de alcance
	Valoración numérica
	Competencia alcanzada
	Excelente
	De acuerdo a los puntajes obtenidos en cada una de las rúbricas de las evidencias de aprendizaje relacionadas a los cinco niveles de alcance
	95-100
	
	Notable
	De acuerdo a los puntajes obtenidos en cada una de las rúbricas de las evidencias de aprendizaje relacionadas a los cinco niveles de alcance
	90-94
	
	Bueno
	De acuerdo a los puntajes obtenidos en cada una de las rúbricas de las evidencias de aprendizaje relacionadas a los cinco niveles de alcance
	77-89
	
	Suficiente
	De acuerdo a los puntajes obtenidos en cada una de las rúbricas de las evidencias de aprendizaje relacionadas a los cinco niveles de alcance
	70-76
	Competencia no alcanzada
	Insuficiente
	De acuerdo a los puntajes obtenidos en cada una de las rúbricas de las evidencias de aprendizaje relacionadas a los cinco niveles de alcance
	Menos de 70
Matriz de evaluación:
	Evidencia de aprendizaje
	%
	Indicador de alcance
	Evaluación formativa de la competencia
	
	
	A
	B
	C
	D
	E
	
	Investigación y algoritmo Ackerman
	5
	
	
	
	
	
	a) Conocer el concepto de recursividad
	
	10
	
	
	
	
	
	b) Identificar las ventajas y desventajas de la recursividad.
	Resultados de las pruebas de Ackermann
	15
	
	
	
	
	
	c) Presentar resultados de un problema resuelto de manera recursiva.
	Modelo Torre Hanoi
	30
	
	
	
	
	
	d) Utilizar los conocimientos adquiridos para resolver un problema clásico de ingeniería.
	
	
	
	
	
	
	
	e) Aplicar los conocimientos para modelar un problema clásico de ingeniería.
	
	Total: 60 (60% del Parcial 1)
	
	
	
	
	
	
Competencia No.: 3 Comprende y aplica estructuras de datos lineales para solución de problemas.
	Temas y subtemas para desarrollar la competencia especifica
	Actividades de aprendizaje
	Actividades de enseñanza
	Desarrollo de competencias genéricas
	Horas teórico-práctica
	ESTRUCTURAS LINEALES
3.1 Pilas
3.1.1 Representación en memoria
3.1.2 Operaciones básicas
3.1.3 Aplicaciones
3.2 Colas
3.2.1 Representación en memoria
3.2.2 Operaciones básicas
3.2.3 Tipos de colas: simples, circulares
y bicolas
3.2.4 Aplicaciones
3.3 Listas
3.3.1 Operaciones básicas
3.3.2 Tipos de listas: simplemente
enlazadas, doblemente enlazadas y
circulares
3.3.3 Aplicaciones
	Consultar las características y aplicación de las estructuras lineales en diversas fuentes bibliográficas y comentarlasen plenaria.
Programar las operaciones básicas de pilas y colas de manera estática (usando arreglos) entregando los códigos correspondientes.
Utilizar las clases predefinidas para el manejo de pilas, colas y listas enlazadas (dinámicas).
Utilizar las estructuras lineales en la elaboración de códigos para la resolución de problemas elaborando un reporte.
	La enseñanza se llevará a cabo dentro y fuera del aula mediante las siguientes técnicas y herramientas:
· Foros de discusión.
· Resúmenes clave.
· Ilustraciones del tema.
· Mapas conceptuales.
· Sesión plenaria.
· Ejemplos interactivos.
	Habilidad para buscar y analizar información proveniente de fuentes diversas.
Capacidad de análisis y síntesis
Habilidad en el manejo de equipo de cómputo
Capacidad para trabajar en equipo.
Capacidad de investigación.
Capacidad de aplicar los conocimientos en la práctica.
	4-6
	Indicadores de alcance
	Valor del indicador
	a) Conocer el concepto de Pilas, Colas y Listas.
b) Identificar las características de las estructuras lineales.
c) Presentar programas computacionales que impliquen pilas y colas estáticas.
d) Utilizar un lenguaje de programación para implementar operaciones básicas en listas.
e) Aplicar los conocimientos de listas enlazadas para implementar pilas y colas dinámicas.
	a) 5%
b) 5%
c) 10%
d) 15%
e) 15%
Niveles de desempeño:
	Desempeño
	Nivel de desempeño
	Indicadores de alcance
	Valoración numérica
	Competencia alcanzada
	Excelente
	De acuerdo a los puntajes obtenidos en cada una de las rúbricas de las evidencias de aprendizaje relacionadas a los cinco niveles de alcance
	95-100
	
	Notable
	De acuerdo a los puntajes obtenidos en cada una de las rúbricas de las evidencias de aprendizaje relacionadas a los cinco niveles de alcance
	90-94
	
	Bueno
	De acuerdo a los puntajes obtenidos en cada una de las rúbricas de las evidencias de aprendizaje relacionadas a los cinco niveles de alcance
	77-89
	
	Suficiente
	De acuerdo a los puntajes obtenidos en cada una de las rúbricas de las evidencias de aprendizaje relacionadas a los cinco niveles de alcance
	70-76
	Competencia no alcanzada
	Insuficiente
	De acuerdo a los puntajes obtenidos en cada una de las rúbricas de las evidencias de aprendizaje relacionadas a los cinco niveles de alcance
	Menos de 70
Matriz de evaluación:
	Evidencia de aprendizaje
	%
	Indicador de alcance
	Evaluación formativa de la competencia
	
	
	A
	B
	C
	D
	E
	
	Reporte de programa y código fuente
	10
	
	
	
	
	
	a) Conocer el concepto de Pilas, Colas y Listas.
	
	10
	
	
	
	
	
	b) Identificar las características de las estructuras lineales.
	
	20
	
	
	
	
	
	c) Presentar programas computacionales que impliquen pilas y colas estáticas.
	Reporte de Práctica de listas enlazadas para operar pilas y colas
	25
	
	
	
	
	
	d) Utilizar un lenguaje de programación para implementar operaciones básicas en listas.
	
	25
	
	
	
	
	
	e) Aplicar los conocimientos de listas enlazadas para implementar pilas y colas dinámicas.
	
	Total: 100 (100% Parcial 2).
	
	
	
	
	
	
Competencia No.: 4	Comprende y aplica estructuras no lineales para la solución de problemas.
	Temas y subtemas para desarrollar la competencia especifica
	Actividades de aprendizaje
	Actividades de enseñanza
	Desarrollo de competencias genéricas
	Horas teórico-práctica
	ESTRUCTURAS NO LINEALES
4.1 Árboles
4.1.1 Clasificación de árboles
4.1.2 Operaciones básicas sobre árboles binarios.
4.1.3 Aplicaciones
4.2 Grafos
4.2.1 Representación de grafos
4.2.2 Operaciones básicas
	Elaborar un cuadro sinóptico o esquema con la clasificación de los árboles y sus aplicaciones.
Implementar las operaciones básicas de inserción, eliminación y búsqueda en un árbol binario.
Hacer un mapa conceptual o mental del uso y aplicaciones de los grafos.
Desarrollar aplicaciones con grafos y elaborar un reporte de prácticas.
	La enseñanza se llevará a cabo dentro y fuera del aula mediante las siguientes técnicas y herramientas:
· Foros de discusión.
· Resúmenes clave.
· Ilustraciones del tema.
· Mapas conceptuales.
· Sesión plenaria.
· Ejemplos interactivos.
	Habilidad para buscar y analizar información proveniente de fuentes diversas.
La comprensión y manipulación de ideas y pensamientos.
Metodologías para solución de problemas, organización del tiempo y para el aprendizaje.
Habilidad en el manejo de equipo de cómputo
Capacidad para trabajar en equipo.
Capacidad de aplicar los conocimientos en la práctica.
	4-6
	Indicadores de alcance
	Valor del indicador
	a) Conocer la clasificación de estructuras no lineal de tipo árboles.
b) Identificar las operaciones básicas de una estructura árbol binario.
c) Presentar un programa que implemente operaciones básicas y recorridos en árboles.
d) Utilizar un lenguaje de programación para implementar recorridos en árboles binarios.
e) Aplicar los conocimientos para resolver problemas relacionados con grafos.
	a) 10%
b) 10%
c) 20%
d) 30%
e) 30%
Niveles de desempeño:
	Desempeño
	Nivel de desempeño
	Indicadores de alcance
	Valoración numérica
	Competencia alcanzada
	Excelente
	De acuerdo a los puntajes obtenidos en cada una de las rúbricas de las evidencias de aprendizaje relacionadas a los cinco niveles de alcance
	95-100
	
	Notable
	De acuerdo a los puntajes obtenidos en cada una de las rúbricas de las evidencias de aprendizaje relacionadas a los cinco niveles de alcance
	90-94
	
	Bueno
	De acuerdo a los puntajes obtenidos en cada una de las rúbricas de las evidencias de aprendizaje relacionadas a los cinco niveles de alcance
	77-89
	
	Suficiente
	De acuerdo a los puntajes obtenidos en cada una de las rúbricas de las evidencias de aprendizaje relacionadas a los cinco niveles de alcance
	70-76
	Competencia no alcanzada
	Insuficiente
	De acuerdo a los puntajes obtenidos en cada una de las rúbricas de las evidencias de aprendizaje relacionadas a los cinco niveles de alcance
	Menos de 70
Matriz de evaluación:
	Evidencia de aprendizaje
	%
	Indicador de alcance
	Evaluación formativa de la competencia
	
	
	A
	B
	C
	D
	E
	
	Reporte de investigación Operaciones Básicas en Árboles
	10
	
	
	
	
	
	a) Conocer la clasificación de estructuras no lineal de tipo árboles.
	
	10
	
	
	
	
	
	b) Identificar las operaciones básicas de una estructura árbol binario.
	Reporte y programa de recorridos sobre árboles binarios.
	20
	
	
	
	
	
	c) Presentar un programa que implemente operaciones básicas y recorridos en árboles.
	
	30
	
	
	
	
	
	d) Utilizar un lenguaje de programación para implementar recorridos en árboles binarios.
	Práctica de grafos
	30
	
	
	
	
	
	e) Aplicar los conocimientos para resolver problemas relacionados con grafos.
	
	Total: 100 (100% Parcial 3)
	
	
	
	
	
	
Competencia No.: 5	Conoce, comprende y aplica los algoritmos de ordenamiento para el uso adecuado en el desarrollo de aplicaciones que permita solucionar problemas del entorno.
	Temas y subtemas para desarrollar la competencia especifica
	Actividades de aprendizaje
	Actividades de enseñanza
	Desarrollo de competencias genéricas
	Horas teórico-práctica
	MÉTODOS 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 Intercalación
5.2.2 Mezcla Directa
5.2.3 Mezcla Natural
	Consultar en fuentes bibliográficas los diversos algoritmos de ordenamiento y generar un cuadro comparativo.
Resolver problemas donde se justifique la necesidad de utilizar métodos de ordenamiento, describiendo los resultados obtenidos en exposición grupal.
Realizar ejercicios donde se elaboren programas de los diferentes métodos de ordenamiento y entregar el código.
	La enseñanza se llevará a cabo dentro y fuera del aula mediante las siguientes técnicas y herramientas:
· Foros de discusión.
· Resúmenes clave.
· Ilustraciones del tema.
· Mapas conceptuales.
· Sesión plenaria.
· Ejemplos interactivos.
	Habilidad para buscar y analizar información proveniente de fuentes diversas.
La comprensión y manipulación de ideas y pensamientos.Metodologías para solución de problemas, organización del tiempo y para el aprendizaje.
Habilidad en el manejo de equipo de cómputo.
Capacidad para trabajar en equipo.
Capacidad de aplicar los conocimientos en la práctica.
	8-12
	Indicadores de alcance
	Valor del indicador
	a) Conocer los métodos de ordenamiento computacional.
b) Identificar las diferencias entre ordenamiento interno y externo.
c) Presentar problemas donde se justifique la necesidad de utilizar métodos de ordenamiento.
d) Utilizar un lenguaje de programación para ordenamiento de datos.
e) Aplicar los conocimientos para determinar la diferencia en tiempo entre cada algoritmo.
	5%
10%
5%
15%
15%
Niveles de desempeño:
	Desempeño
	Nivel de desempeño
	Indicadores de alcance
	Valoración numérica
	Competencia alcanzada
	Excelente
	De acuerdo a los puntajes obtenidos en cada una de las rúbricas de las evidencias de aprendizaje relacionadas a los cinco niveles de alcance
	95-100
	
	Notable
	De acuerdo a los puntajes obtenidos en cada una de las rúbricas de las evidencias de aprendizaje relacionadas a los cinco niveles de alcance
	90-94
	
	Bueno
	De acuerdo a los puntajes obtenidos en cada una de las rúbricas de las evidencias de aprendizaje relacionadas a los cinco niveles de alcance
	77-89
	
	Suficiente
	De acuerdo a los puntajes obtenidos en cada una de las rúbricas de las evidencias de aprendizaje relacionadas a los cinco niveles de alcance
	70-76
	Competencia no alcanzada
	Insuficiente
	De acuerdo a los puntajes obtenidos en cada una de las rúbricas de las evidencias de aprendizaje relacionadas a los cinco niveles de alcance
	Menos de 70
Matriz de evaluación:
	Evidencia de aprendizaje
	%
	Indicador de alcance
	Evaluación formativa de la competencia
	
	
	A
	B
	C
	D
	E
	
	Cuadro comparativo
	5
	
	
	
	
	
	a) Conocer los métodos de ordenamiento computacional.
	
	10
	
	
	
	
	
	b) Identificar las diferencias entre ordenamiento interno y externo.
	Práctica de laboratorio.
	5
	
	
	
	
	
	c) Presentar problemas donde se justifique la necesidad de utilizar métodos de ordenamiento.
	
	15
	
	
	
	
	
	d) Utilizar un lenguaje de programación para ordenamiento de datos.
	Video comparativo.
	15
	
	
	
	
	
	e) Aplicar los conocimientos para determinar la diferencia en tiempo entre cada algoritmo.
	
	Total: 50 (50%Parcial 4)
	
	
	
	
	
	
Competencia No.: 6 - Conoce, comprende y aplica los algoritmos de búsqueda para el uso adecuado en el desarrollo de aplicaciones que permita solucionar problemas del entorno.
	Temas y subtemas para desarrollar la competencia especifica
	Actividades de aprendizaje
	Actividades de enseñanza
	Desarrollo de competencias genéricas
	Horas teórico-práctica
	MÉTODOS DE BÚSQUEDA
6.1 Búsqueda secuencial
6.2 Búsqueda binaria
6.3 Búsqueda por funciones de HASH
	Consultar en fuentes bibliográficas los diversos algoritmos de búsqueda y elaborar cuadro comparativo.
Resolver problemas donde se justifique la necesidad de utilizar métodos de búsqueda para una lista de datos generados aleatoriamente, describiendo los resultados obtenidos en exposición grupal.
Realizar ejercicios donde se elaboren programas de los diferentes métodos de búsqueda y entregar el código.
	La enseñanza se llevará a cabo dentro y fuera del aula mediante las siguientes técnicas y herramientas:
· Foros de discusión.
· Resúmenes clave.
· Ilustraciones del tema.
· Mapas conceptuales.
· Sesión plenaria.
· Ejemplos interactivos.
	La comprensión y manipulación de ideas y pensamientos.
Metodologías para solución de problemas,
organización del tiempo y para el aprendizaje
Habilidad en el manejo de equipo de cómputo
Capacidad para trabajar en equipo.
Capacidad de aplicar los conocimientos en la práctica.
	8-12
	Indicadores de alcance
	Valor del indicador
	a) Conocer los métodos de búsqueda computacional.
b) Identificar las diferencias entre los diversos tipos de búsqueda.
c) Presentar problemas donde se justifique la necesidad de utilizar métodos de búsqueda.
d) Utilizar un lenguaje de programación para búsqueda de datos.
e) Aplicar los conocimientos para determinar la diferencia en tiempo entre cada algoritmo.
	a) 5%
b) 5%
c) 5%
d) 20%
e) 15%
Niveles de desempeño:
	Desempeño
	Nivel de desempeño
	Indicadores de alcance
	Valoración numérica
	Competencia alcanzada
	Excelente
	De acuerdo a los puntajes obtenidos en cada una de las rúbricas de las evidencias de aprendizaje relacionadas a los cinco niveles de alcance
	95-100
	
	Notable
	De acuerdo a los puntajes obtenidos en cada una de las rúbricas de las evidencias de aprendizaje relacionadas a los cinco niveles de alcance
	90-94
	
	Bueno
	De acuerdo a los puntajes obtenidos en cada una de las rúbricas de las evidencias de aprendizaje relacionadas a los cinco niveles de alcance
	77-89
	
	Suficiente
	De acuerdo a los puntajes obtenidos en cada una de las rúbricas de las evidencias de aprendizaje relacionadas a los cinco niveles de alcance
	70-76
	Competencia no alcanzada
	Insuficiente
	De acuerdo a los puntajes obtenidos en cada una de las rúbricas de las evidencias de aprendizaje relacionadas a los cinco niveles de alcance
	Menos de 70
Matriz de evaluación:
	Evidencia de aprendizaje
	%
	Indicador de alcance
	Evaluación formativa de la competencia
	
	
	A
	B
	C
	D
	E
	
	Cuadro comparativo
	5
	
	
	
	
	
	a) Conocer los métodos de búsqueda computacional.
	
	5
	
	
	
	
	
	b) Identificar las diferencias entre las diversas formas de búsqueda.
	Práctica de laboratorio métodos de búsqueda.
	5
	
	
	
	
	
	c) Presentar problemas donde se justifique la necesidad de utilizar métodos de búsqueda.
	
	20
	
	
	
	
	
	d) Utilizar un lenguaje de programación para búsqueda de datos.
	Video comparativo.
	15
	
	
	
	
	
	e) Aplicar los conocimientos para determinar la diferencia en tiempo entre cada algoritmo.
	
	Total: 50 (50% Parcial 4).
	
	
	
	
	
	
5. Fuentes de información y apoyos didácticos
	Fuentes de información:
	Apoyos didácticos: 
	Cairo, O. y Guardati, S. (2006) Estructura de Datos, Tercera Edición. México: Mc Graw Hill.
Joyanes, L. (2007) Estructuras de Datos en C++. España: McGraw – Hill.
Aho A.V., Hopcroft J.E., Ullman J.D. (1988) Estructuras de Datos y Algoritmos. Addison Wesley.
	https://compilandoconocimiento.com/estructurasdedatos/
https://scholar.google.com.mx
https://www.tutorialspoint.com/data_structures_algorithms/
6. Calendarización de evaluación en semanas:
	Semana
	1
	2
	3
	4
	5
	6
	7
	8
	9
	10
	11
	12
	13
	14
	15
	16
	17
	TP
	EF1
	EF1
	EF2
	EF2/ES
	EF3
	EF3
	EF3
	EF3/ES
	EF4
	EF4
	EF4
	EF4/ES
	EF5
	EF5
	EF6
	EF6/ES
	
	TR
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	SD
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
TP= tiempo planeado						TR= tiempo real			SD= seguimiento departamental
ED= evaluación diagnostica	 	EFn= evaluación formativa (competencia especifica n)		ES= evaluación sumativa
Fecha de elaboración: 12 de agosto 2021.
	
	
	
	Holzen Atocha Martínez García
Nombre y firma del (de la) profesor (a)
	
	Manuel Antonio Cantún Cámara
Nombre y firma del (de la) jefe (a) del departamento Académico
EVALUACIÓN DIAGNÓSTICA
UNIDAD 1
EVIDENCIA 1-PARCIAL1
¿QUÉ SON LOS TIPOS DE DATOS ABSTRACTOS?
En computación, los tipos de datos abstractos son modelos matemáticos utilizados en una determinada clase de estructuras de datos con comportamientos similares, o para diversos tipos de datos de uno o varios lenguajes de programación que comparten similitudes. Un tipo de dato abstracto es definido de forma indirecta de acuerdo con las operaciones que se pueden realizar en él y por las restricciones de las mismas.
De manera concreta, puede tomarse como ejemplo la interfaz del Java List, misma que no define algún comportamiento debido a la inexistencia de una clase List concreta. Solamente define un conjunto de métodos que otras clases deberían de utilizar al crear una lista.
Asimismo, se considera a collection como un tipo de dato aún más abstracto que la interfaz List, ya que List utiliza algunas especificaciones extras además de las de lainterfaz collection en los métodos iterator, add, remove, equals y hashcode.
Cuando se define el tipo de dato abstracto como un concepto matemático, no hay preocupación por la eficiencia del tiempo o el espacio, esto se resuelve durante la implementación. En ocasiones no es posible implementarlos en una pieza de hardware o usando un sistema de software y se puede observar en un entero que no puede ser implementado universalmente. Con base a esto, se puede afirmar que un usuario solamente necesita saber lo que puede hacer un tipo de datos, pero no la manera de implementarlos.
List contiene elementos del mismo tipo colocados en orden secuencial y las siguientes operaciones se pueden realizar en ella.
· get (): devuelve un elemento de la lista en cualquier posición dada.
· insert (): inserta un elemento en cualquier posición de la lista.
· remove (): elimina la primera aparición de cualquier elemento de una lista no vacía.
· removeAt (): elimina el elemento en una ubicación específica de una lista no vacía.
· replace (): reemplaza un elemento en cualquier posición por otro elemento.
· size (): devuelve el número de elementos de la lista.
· isEmpty (): devuelve verdadero si la lista está vacía; de lo contrario, devuelve falso.
· isFull (): devuelve verdadero si la lista está llena; de lo contrario, devuelve falso.
El siguiente tipo de datos es el Stack o pila, donde en lugar de almacenar en nodos, se guarda el puntero a los datos, el programa asigna la memoria para los datos y la dirección pasa a la pila o Stack. El nodo principal y los nodos de datos están encapsulados y la función que llama solamente puede ver el puntero al Stack.
Una pila contiene elementos del mismo tipo dispuestos en orden secuencial. Todas las operaciones tienen lugar en un solo extremo que está en la parte superior del Stack y se pueden realizar las siguientes operaciones:
push (): inserta un elemento en un extremo de la pila llamado top.
pop (): elimina y devuelve el elemento en la parte superior de la pila, si no está vacío.
peek (): devuelve el elemento en la parte superior de la pila sin quitarlo, si la pila no está vacía.
size (): devuelve el número de elementos de la pila.
isEmpty (): devuelve verdadero si la pila está vacía; de lo contrario, devuelve falso.
isFull (): devuelve verdadero si la pila está llena; de lo contrario, devuelve falso.
Una cola o Queue contiene elementos del mismo tipo dispuestos en orden secuencial. Las operaciones se realizan en ambos extremos, la inserción se realiza al final y la eliminación se realiza en la parte delantera. Se pueden realizar las siguientes operaciones:
enqueue (): inserta un elemento al final de la cola.
dequeue (): elimina y devuelve el primer elemento de la cola, si la cola no está vacía.
peek (): devuelve el elemento de la cola sin eliminarlo, si la cola no está vacía.
size (): devuelve el número de elementos en la cola.
isEmpty (): devuelve verdadero si la cola está vacía; de lo contrario, devuelve falso.
isFull (): devuelve verdadero si la cola está llena; de lo contrario, devuelve falso.
EVIDENCIA 2- PARCIAL 1
OBJETIVO: El alumno comprenderá e identificará las diferencias entre la memoria estática y la dinámica en tiempo de compilación y ejecución.
1.- Elabora el siguiente código y ejecútalo.
1-¿Qué hace el código? Detalla todo lo que puedas de la manera más clara posible.
Lo primero que se hace en el código es declarar el arreglo con nombre datos y señalar que el mismo va a tener 10 espacios para almacenar los valores de cada posición. Seguidamente se recorre con un ciclo for y de manera simultánea se van agregando datos equivalentes al número de posición multiplicado por 10. Se procede a leer y mostrar en pantalla los que se guardó, mostrando valores avanzando de 10 en 10, iniciando con 0 y terminando en 90, debido a que la variable i que ocupa la posición se encuentra inicializada con 0 y la máquina considera el 0 como un lugar.
2.- Cambia la línea 6 en su segundo parámetro, quedando i<=10. Ejecútalo después de volver a construirlo. ¿Ahora, qué sucede? ¿A qué se debe?
Al cambiar la línea 6, me arroja una excepción en main. Esto es debido a que al llegar al número 10 iniciando con 0, ya se consideran 11 lugares y al inicio solamente se encuentra definido el arreglo para 10 espacios.
3.- Ahora, procede a transcribir y ejecutar el siguiente código.
 
¿Qué hace este otro código? Detalla todo lo que puedas de la manera más clara posible.
En ese código se agregan los datos en forma de pila de manera que el último dato registrado ocupa siempre la primera posición, tomando así el valor máximo, al entrar al método extraer con el valor máximo se va a eliminar al último dato que se agregó a la pila y se van a conservar los restantes ordenados teniendo siempre el primero que se agrega como el último lugar.
4.- Intenta describir gráficamente (con cuadros dibujos y breves notas). Lo que sucede en el ejercicio 1, y después lo que sucede en el ejercicio 2, internamente (en la memoria).
Ejercicio 1:
Ejercicio 2:
ENLACE DE LA PRÁCTICA: https://drive.google.com/file/d/1aQAnuzOaSLW5swV45nBmrlKd8e--xKhl/view?usp=drivesdk
EVIDENCIA 3- PARCIAL 1
EL ALGORITMO DE ACKERMAN 
En teoría de la computación, una función de Ackerman es una función matemática recursiva encontrada en 1926 por Wilhelm Ackerman. Tiene un crecimiento extremadamente rápido, lo que es de interés para la ciencia computacional teórica y la teoría de la computabilidad. Hoy en día hay una serie de funciones que son llamadas funciones de Ackerman. Todas ellas tienen una forma similar a la ley original la función de Ackerman y también tienen un comportamiento de crecimiento similar. Esta función toma dos números naturales como argumentos y devuelve un único número natural. Como norma general se define como sigue: 
 
En 1928, Wilhelm Ackerman consideró una función doblemente recursiva A(m, n, p) de tres variables: m → n → p en la notación de Conway. Ackermann demostró que se trata de una función recursiva que no es primitiva recursiva. Esa definición fue simplificada por Rózsa Péter y Raphael Robinson a la versión de dos variables. Rozsa Peter también demostró que la doble recursión no se puede reducir a recursión primitiva (y que de igual forma la triple recursión no se puede reducir a recursión primitiva y doble recursión, etc). Sin embargo, la primera función doblemente recursiva que no es recursiva primitiva fue descubierta por Gabriel Sudan en 1927. 
Debido a su definición, profundamente recursiva, la función de Ackermann se utiliza con frecuencia para comparar compiladores en cuanto a su habilidad para optimizar la recursión. Por ejemplo, un compilador capaz de notar que A(3, 30) se puede calcular basándose en potencias de 2, o que guarda resultados intermediarios tales como A(3, n) y A(2, n) en lugar de recalcularlos cada vez, ahorraría tiempo de ejecución por un factor de 100 o 1000. Igualmente, al calcular directamente A(1, n) en lugar de hacer una llamada recursiva se realizan ahorros significativos. Es posible calcular el término A(4, 2), pero no recursivamente, sino por otros medios. 
 
De hecho, A[4,2] = 22222 − 3 = 265536 − 3 es un número natural con más de 19.000 dígitos en base 10. sea Aunque correcto y funcional, no permite calcular A[4,2] en un tiempo razonable, en ningún ordenador actual. Sin embargo, el número 265536 − 3 se calcula en segundos. Lo que enlentece el cálculo de la función de Ackerman, es tener que ir de uno en uno hacia atrás y hacia delante varias veces antes de alcanzar el número final, que acaba siendo enumerado muchas veces. 
Esto proporciona un contraejemplo a la creencia de principios del siglo XX de que toda función computable era también recursiva primitiva. Por su definición inicial, la función de Ackerman crece más rápido que cualquier función exponencial, e incluso cualquier función exponencial múltiple. 
EL ALGORITMO DE ACKERMAN 
 
 
 
EVIDENCIA 4- PARCIAL 1
https://youtu.be/s4MgkU4yKOQ
AUTOEVALUACIÓN
Tomando como referencia tu desempeño en el salónde clases, se pide realizar una autoevaluación tomando como referencia la siguiente escala de calificación.
	Nunca
	Ocasionalmente
	Frecuentemente
	Siempre
	0
	2
	4
	6
	
	
	
	
	COMPETENCIA
	Autoevaluación
	
	Nunca
	Ocasionalmente
	Frecuentemente
	Siempre
	Respeto las ideas de los otros integrantes del salón de clases.
	
	
	
	6
	Desempeño un papel activo en la búsqueda de información relevante y la comparto con el grupo.
	
	
	
	6
	Soy puntual a las reuniones para desarrollar las actividades encomendadas.
	
	
	
	6
	Soy capaz de reconocer y enmendar mis errores.
	
	
	
	6
	Llego con puntualidad a las clases.
	
	
	
	6
	Participo de manera activa con preguntas o comentarios en la clase.
	
	
	
	6
	
	Puntuación Total
	36
COMENTARIOS FINALES
Durante el primer parcial, la verdad es que las clases me resultaron demasiado entendibles y el profesor sabe cómo utilizar de la mejor manera cada uno de los recursos digitales para poder explicar de forma clara y precisa, ejemplificando también cada uno de los casos en los que sea necesario una muestra de lo que ocurre con un bloque de código o al ejecutar una acción.
En lo personal, me entretuve demasiado jugando con las torres de Hanói, actividad que fue muy de mi agrado, así como para mis compañeros, con quienes resolvía y jugamos para resolver el nivel más alto en menos movimientos antes de conocer su algoritmo de resolución.

Otros materiales