Algoritmos y Estructuras de Datos

Ciencias de la Computación

ISI-106 • Nivel 1

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

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