Programación estructurada, diseño de algoritmos y estructuras de datos para la resolución eficiente de problemas.
Conceptos clave
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
Objetivos
- 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.
Metodología de cursada
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
Forma de 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.
Criterios
- 2 Parciales (cada uno 40% de la nota de cursada)
- Trabajos Prácticos programados (20%)
- Examen final (100% de la nota final)
Bibliografía
Oficial
- •Weiss, M. Estructuras de Datos y Algoritmos. 4ª edición. Pearson.
- •Sedgewick, R. Algorithms. 4ª edición. Addison-Wesley.
- •Cormen, T. et al. Introduction to Algorithms (CLRS). 4ª edición. MIT Press.
Complementaria
- •Skiena, S. The Algorithm Design Manual. Springer.
- •Horowitz, E. & Sahni, S. Fundamentals of Computer Algorithms. CBS Publishers.
- •Ercolano, J. Guía de Ejercicios de AED. EUA-UTN.
Ejercicios tipo parcial
Preguntas oficiales con resolución para practicar antes del examen.
Complejidad algorítmica
Pregunta: Analizar complejidad de doble for con j=i.
Solución: Total iteraciones: n(n+1)/2 = O(n²).
Recursividad
Pregunta: 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...