Créditos
5
Horas Estimadas
37h
Temas
12
Temario
Introducción a la computación
Modelo de Von Neumann, hardware y software, lenguajes
2h 0min
Metodología de diseño descendente
Partición, refinamiento, pseudocódigo, documentación
2h 20min
Algoritmia: pseudocódigo y diagramas de flujo
Representación gráfica y textual de algoritmos
3h 40min
Estructuras de datos elementales
Arrays, pilas, colas, listas, complejidad
3h 0min
Listas enlazadas
Simple, doble, circular, inserción, eliminación
3h 20min
Árboles
ABB, AVL, balanceados, recorridos, inserción, eliminación
5h 40min
Grafos: representación y recorridos
Matriz de adyacencia, lista, BFS, DFS
4h 20min
Algoritmos de búsqueda
Lineal, binaria, hashing
2h 20min
Algoritmos de ordenamiento
Bubble, selection, insertion, merge, quick, heap sort
4h 20min
Complejidad algorítmica
Notación O, Ω, Θ, análisis de casos
3h 40min
Recursividad
Principio recursivo, pila de llamadas, recursión de cola
3h 40min
Tipos abstractos de datos
TAD lista, pila, cola, diccionario, conjunto
3h 0min
Metodología
Teoría
Clase teórica sobre estructuras de datos, algoritmos de búsqueda y ordenamiento, y complejidad.
Práctica
Laboratorio de programación con implementación en Java de estructuras de datos y algoritmos.
Actividades
- Implementación de estructuras de datos en Java
- Análisis de complejidad temporal y espacial
- Resolución de ejercicios algorítmicos
- Trabajos Prácticos programados
- Implementación de algoritmos de ordenamiento y búsqueda
Evaluación
Regularidad
Aprobar como mínimo 2 parciales con nota >= 4. Asistencia regular obligatoria (80% mínimo).
Promoción
Examen final escrito y práctico con diseño de algoritmos y análisis de complejidad.
Recuperatorio
Recuperatorio en el primer semestre del año siguiente.
Objetivos de Aprendizaje
- Diseñar algoritmos eficientes utilizando diseño descendente.
- Implementar y manipular estructuras de datos: listas, pilas, colas, árboles y grafos.
- Analizar la complejidad temporal y espacial de algoritmos.
- Aplicar recursividad para resolver problemas computacionales.
- Seleccionar la estructura de datos más adecuada para cada problema.
Competencias
- Diseñar soluciones algorítmicas con pseudocódigo y diagramas de flujo.
- Implementar estructuras de datos lineales y jerárquicas en Java.
- Analizar complejidad algorítmica con notación O, Ω, Θ.
- Implementar algoritmos de búsqueda y ordenamiento.
- Resolver problemas de grafos con BFS y DFS.
Ejercicios Tipo Parcial
Complejidad algorítmica
3/5
Analizar complejidad de doble for con j=i.
Solución: Total iteraciones: n(n+1)/2 = O(n²).
Recursividad
2/5
Función recursiva factorial y su complejidad.
Solución: O(n) temporal, O(n) espacial por pila de llamadas.
Preguntar al Tutor
Resolvé dudas sobre esta materia
Practicar
Ejercicios adaptativos por tema
Crear Flashcards
Repetición espaciada para memorizar
Cargando materiales...