Plan de desarrollo por clases¶
Clase 1¶
Introducción a la entrevista técnica y pensamiento algorítmico
Objetivos:
- Comprender qué buscan los entrevistadores (no solo la solución, sino razonamiento, claridad y comunicación).
- Introducir el marco de análisis: entender el problema → pensar en casos → elegir la estrategia → implementar → analizar complejidad.
Temas a trabajar:
- Etapas de una entrevista de programación.
- Importancia de la comunicación verbal y escrita en entrevistas.
- Notación de O grande (Big-O notation): recordatorio práctico.
- Estrategias de abordaje de problemas:
- Preguntar y clarificar.
- Resolver ejemplos pequeños.
- Progresar de la solución naive a la optimizada.
Ejemplos:
- Problemas introductorios de LeetCode (Suma de dos números, Validación de Paréntesis).
Ejercicio para casa:
Resolver 2 o 3 problemas fáciles de arreglos (arrays) y/o cadenas de caracteres (strings).
Clase 2¶
Búsqueda, recursión y backtracking
Objetivos:
- Practicar problemas que requieren explorar múltiples caminos.
- Identificar cuándo aplicar fuerza bruta y cuándo optimizar.
Temas a trabajar:
- Recorridos lineales y búsqueda binaria.
- Recursión: estructura y casos base.
- Backtracking: definición, ejemplos clásicos.
- Cortes de control.
Ejemplos a trabajar en clase:
- Búsqueda binaria.
- Generar combinaciones/permutaciones.
- Problema del reloj binario o caminos en un árbol binario.
Ejercicio para casa:
Resolver un problema de backtracking y uno de búsqueda binaria.
Clase 3¶
Árboles
Objetivos:
- Aplicar estrategias de resolución en estructuras más avanzadas.
Temas a trabajar:
- Recorridos en árboles (DFS, BFS, determinar si es binario de búsqueda).
- Manipulación de árboles (espejar).
- Simulación de entrevista: 30-40 minutos resolviendo un problema en tiempo real.
Ejemplos en clase:
- Binary Tree Level Order Traversal.
- Number of Islands (LeetCode).
- Shortest Path in Graph (introductorio).
Ejercicio para casa:
Resolver un problema de backtracking y uno de búsqueda binaria.
Clase 4¶
Programación dinámica
Objetivos:
- Comprender qué es un subproblema y cómo se reutiliza.
- Entrenar la detección de problemas que requieren DP.
- Simular una entrevista real.
Temas a trabajar:
- Diferencia entre memoización (top-down) y tabulación (bottom-up).
- Ejemplos de DP lineal: Fibonacci, Climbing Stairs.
- Ejemplos de DP en tablas: Knapsack, Longest Common Subsequence.
- Complejidad y optimización en DP.
- Cómo planificar la práctica después del curso (ej. entrenar por familias de problemas, escalando dificultad).
Ejemplos en clase:
- Climbing Stairs (LeetCode).
- Coin Change.
- Longest Increasing Subsequence (LIS).
Ejercicio para casa:
Un problema de DP sobre strings (edit distance o sub-secuencias).
Cierre:
- Plan de práctica recomendado (ejercicios diarios/semanales).
- Recursos gratuitos y estrategias de entrenamiento.