Algoritmos y Estructuras de Datos

Ciencias de la Computación

ISI-106 • Nivel 1

Programación estructurada, diseño de algoritmos y estructuras de datos para la resolución eficiente de problemas.

Conceptos clave

Diseño de algoritmosEstructuras de datosRecursividadBúsqueda y ordenamientoComplejidad algorítmicaTAD

Créditos

5

Horas Estimadas

37h

Temas

12

Temario

1

Introducción a la computación

Modelo de Von Neumann, hardware y software, lenguajes

2h 0min

2

Metodología de diseño descendente

Partición, refinamiento, pseudocódigo, documentación

2h 20min

3

Algoritmia: pseudocódigo y diagramas de flujo

Representación gráfica y textual de algoritmos

3h 40min

4

Estructuras de datos elementales

Arrays, pilas, colas, listas, complejidad

3h 0min

5

Listas enlazadas

Simple, doble, circular, inserción, eliminación

3h 20min

6

Árboles

ABB, AVL, balanceados, recorridos, inserción, eliminación

5h 40min

7

Grafos: representación y recorridos

Matriz de adyacencia, lista, BFS, DFS

4h 20min

8

Algoritmos de búsqueda

Lineal, binaria, hashing

2h 20min

9

Algoritmos de ordenamiento

Bubble, selection, insertion, merge, quick, heap sort

4h 20min

10

Complejidad algorítmica

Notación O, Ω, Θ, análisis de casos

3h 40min

11

Recursividad

Principio recursivo, pila de llamadas, recursión de cola

3h 40min

12

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...