Saltar al contenido
Logotipo de Trainontech Trainontech

Lenguajes y Fundamentos de Programación · LNG-300

Algoritmos y estructuras de datos

Listas, pilas, colas, árboles, grafos y tablas hash implementados y medidos en Python.

Bajo demanda Intermedio 7 módulos · 37 clases

Formato asíncrono Desarrollo, Alumnado, Docentes FP Python, JupyterLab

Lo que aprenderás

  • Elegir entre lista, diccionario y conjunto según el coste de búsqueda, inserción y borrado.
  • Implementar pila y cola sobre listas y sobre collections.deque, comparando su comportamiento real.
  • Construir listas enlazadas simples y dobles con inserción y borrado en posición arbitraria.
  • Recorrer árboles binarios de búsqueda en inorden, preorden y posorden de forma recursiva e iterativa.
  • Representar grafos con listas de adyacencia y recorrerlos en anchura y en profundidad.
  • Explicar la notación O grande y contrastarla con tiempos medidos con timeit en el cuaderno.

Contenido del curso

7 módulos · 37 clases en vídeo · práctica guiada en cada módulo

Módulo 1 · Punto de partida 5 clases
  • Por qué la estructura de datos decide el rendimiento
  • El cuaderno de trabajo y cómo medir con timeit
  • Repaso de listas, diccionarios y conjuntos de Python
  • Coste de las operaciones nativas que ya usas
  • Cómo se leerá el código a lo largo del curso
Módulo 2 · Estructuras lineales 6 clases
  • Arrays dinámicos: qué ocurre al crecer una lista
  • Pilas: implementación y usos reales
  • Colas con deque frente a colas con lista
  • Listas enlazadas simples: inserción y borrado
  • Listas doblemente enlazadas y centinelas
  • Ejercicio: historial de deshacer y rehacer
Módulo 3 · Tablas hash 5 clases
  • Función hash, cubetas y factor de carga
  • Colisiones: encadenamiento y direccionamiento abierto
  • Implementar un diccionario propio y compararlo con dict
  • Conjuntos como caso particular de tabla hash
  • Cuándo una tabla hash deja de ser rápida
Módulo 4 · Árboles 6 clases
  • Terminología: raíz, altura, hojas y grado
  • Árbol binario de búsqueda: inserción y búsqueda
  • Recorridos inorden, preorden y posorden
  • Borrado de un nodo con dos hijos
  • Degeneración del árbol y noción de equilibrio
  • Montículos y colas de prioridad con heapq
Módulo 5 · Grafos 5 clases
  • Matriz de adyacencia frente a lista de adyacencia
  • Recorrido en anchura y camino más corto sin pesos
  • Recorrido en profundidad y detección de ciclos
  • Orden topológico sobre dependencias
  • Componentes conexas en un grafo no dirigido
Módulo 6 · Ordenación y búsqueda 5 clases
  • Búsqueda lineal frente a búsqueda binaria
  • Ordenaciones cuadráticas y por qué se estudian
  • Mergesort y quicksort explicados con trazas
  • Estabilidad de una ordenación y cuándo importa
  • Qué hace realmente sorted en Python
Módulo 7 · Proyecto de cierre 5 clases
  • Enunciado: buscador sobre un catálogo de datos
  • Elegir estructuras y justificar la decisión
  • Implementar la solución por partes
  • Medir el coste y comparar dos alternativas
  • Preparar la explicación para una entrevista técnica

Requisitos

  • Programación en Python a nivel de funciones, bucles, listas y diccionarios.
  • Haber escrito algún programa completo, aunque sea pequeño.
  • Basta con un navegador: todas las prácticas se hacen en cuadernos de JupyterLab.

Descripción

Un programa que funciona con cien registros puede volverse inservible con cien mil. La causa casi nunca es el lenguaje, sino la estructura de datos elegida para guardar la información y el algoritmo que la recorre. Quien no distingue una búsqueda lineal de una búsqueda en tabla hash acaba escribiendo código correcto pero lento, y sin herramientas para explicar por qué.

El curso alterna implementación y medición. Cada estructura se construye desde cero en un cuaderno de JupyterLab, se prueba con casos límite y después se compara con la versión de la biblioteca estándar midiendo tiempos. Los algoritmos de ordenación y búsqueda se analizan con la misma disciplina: primero el razonamiento sobre el coste, después la comprobación empírica sobre volúmenes crecientes.

Lo que queda es criterio para leer código ajeno, justificar una decisión de diseño y responder con soltura en una entrevista técnica. También es la base directa para el curso de algoritmos avanzados y complejidad, donde entran programación dinámica, algoritmos voraces y grafos ponderados, y para cualquier trabajo posterior de optimización sobre bases de código reales.

¿Para quién es este curso?

  • Personas que programan a diario y quieren dejar de elegir estructuras por costumbre.
  • Alumnado de ciclos de Desarrollo de Aplicaciones que prepara pruebas técnicas de acceso al empleo.
  • Profesorado de FP de Informática que necesita ejemplos ejecutables y medibles para el aula.
Bajo demanda

Curso diseñado con la ficha cerrada. Se produce al confirmarse un grupo o un contrato.

Código
LNG-300
Nivel
Intermedio
Público
Desarrollo, Alumnado, Docentes FP
Entorno
Python, JupyterLab

Este curso incluye

  • 37 clases en vídeo bajo demanda
  • Práctica íntegramente en JupyterLab, solo con un navegador
  • Tutorización en el campus
  • Acceso desde móvil, tableta y ordenador
  • Actualizaciones cuando cambia la versión de la herramienta
  • Certificado de finalización

Sigue aprendiendo

Cursos relacionados

PY-104Lenguajes y Fundamentos de Programación

Ficheros, excepciones y módulos

Lectura y escritura robusta, gestión de errores e importaciones para código que otros mantendrán.

Python

Intermedio 32 clases