Ir al contenido
wannacode

Ingeniería de software: JavaScript

El curso es el mismo para los cuatro lenguajes, y el código aquí está en JavaScript. Cada módulo dice qué lecciones del lenguaje necesitas antes.

Módulo 0

Bienvenida

1 lección · qué enseña el curso y qué necesitas saber

  1. Bienvenida

Módulo 1

Patrones de diseño

14 lecciones · Strategy, Observer, Builder, State…

  1. Por qué patrones
  2. Strategy
  3. Observer
  4. Factory Method y Simple Factory
  5. Builder
  6. Singleton e inyección de dependencias
  7. Adapter y Facade
  8. Decorator
  9. Composite
  10. Command
  11. State
  12. Template Method e Iterator
  13. Repository
  14. La tienda: qué patrón dónde

Módulo 2

Código limpio y refactorización

8 lecciones · nombres, funciones, malos olores, pasos pequeños

  1. Nombres en el código
  2. Funciones: una tarea, pocos parámetros, sin efectos secundarios ocultos
  3. Comentarios que mienten y comentarios que ayudan
  4. Code smells: método largo, clase grande, duplicación, primitivos en vez de tipos, cadenas largas de if
  5. Las pruebas como red de seguridad
  6. Refactorización en pasos pequeños
  7. SOLID sin dogma
  8. Ejercicio: una clase desordenada, limpiada paso a paso

Algoritmos y complejidad

Módulo 3

Complejidad

5 lecciones · Big-O, tiempo y memoria, medición

  1. Complejidad en tiempo: contar pasos
  2. Big-O: cómo crece el trabajo
  3. Mejor caso, caso promedio y peor caso
  4. Complejidad en espacio
  5. Complejidad amortizada

Módulo 4

Búsqueda

3 lecciones · búsqueda lineal y binaria

  1. Búsqueda lineal
  2. Búsqueda binaria
  3. Búsqueda binaria sobre la respuesta

Módulo 5

Ordenamiento

6 lecciones · insertion, merge, quick, heap, counting

  1. Ordenamiento por inserción y por selección
  2. Ordenamiento por mezcla y «divide y vencerás»
  3. Quicksort y el mal pivote
  4. Montículo y ordenamiento por montículo
  5. Ordenamiento por conteo y radix
  6. Ordenamiento estable y el ordenamiento incorporado

Módulo 6

Recursión

4 lecciones · la pila de llamadas, divide y vencerás

  1. La pila de llamadas por dentro
  2. De la recursión al bucle
  3. Exponenciación rápida
  4. Divide y vencerás y el árbol de recursión

Módulo 7

Estructuras de datos

8 lecciones · arreglo, lista, tabla hash, árboles, heap

  1. El arreglo dinámico por dentro
  2. Lista enlazada
  3. Pila y cola
  4. Tabla hash
  5. Árbol binario de búsqueda
  6. Cola de prioridad
  7. Trie
  8. Union-Find

Módulo 8

Grafos

6 lecciones · BFS, DFS, Dijkstra, dependencias

  1. Grafo: lista de adyacencia y matriz
  2. BFS: las menos paradas
  3. DFS: islas y ciclos
  4. Ordenamiento topológico
  5. Dijkstra
  6. Árbol de expansión mínima

Módulo 9

Programación dinámica

5 lecciones · memoización, tabla, mochila

  1. Subproblemas superpuestos
  2. El problema del cambio
  3. El problema de la mochila
  4. La subsecuencia común más larga y diff
  5. Reconocer un problema de DP

Módulo 10

Algoritmos voraces

2 lecciones · cuándo funcionan y cuándo engañan

  1. Algoritmos voraces y cuándo funcionan
  2. Cuándo falla un algoritmo voraz

Módulo 11

Técnicas para resolver problemas

4 lecciones · dos punteros, ventana deslizante, sumas de prefijos

  1. Dos punteros
  2. Ventana deslizante
  3. Sumas prefijas
  4. Una tabla hash como contador

Módulo 12

Proyecto: navegación por la ciudad

1 lección · el mapa como grafo, BFS, Dijkstra

  1. Navegación por la ciudad

Módulo 13

Concurrencia y condiciones de carrera

9 lecciones · bloqueos, deadlock, async

  1. Por qué hilos
  2. Condición de carrera
  3. Bloqueo
  4. Operaciones atómicas y objetos inmutables
  5. Deadlock
  6. Productor y consumidor
  7. Grupo de hilos y tareas
  8. async no es un hilo
  9. Cómo probar código concurrente

Módulo 14

Seguridad para programadores

9 lecciones · entrada no confiable, contraseñas, sesiones, tokens, secretos

  1. Entrada no confiable
  2. Inyecciones: cuando los datos se vuelven una orden
  3. XSS: un script ajeno en tu página
  4. Contraseñas
  5. Sesiones, cookies y CSRF
  6. JWT y sus trampas
  7. Secretos en el código y en git
  8. Dependencias: el código ajeno que ejecuta el tuyo
  9. Criptografía que no escribes tú

Módulo 15

Arquitectura de software

9 lecciones · capas, módulos, eventos, API, caché, escalado

  1. Capas
  2. Arquitectura hexagonal y clean architecture
  3. Monolito, monolito modular, servicios
  4. Eventos y colas
  5. Transactional Outbox
  6. Diseño de API: contrato, versiones, solicitudes repetidas
  7. Caché
  8. Escalado
  9. ADR: registros de decisiones de arquitectura

Módulo 16

El arquitecto en acción

9 lecciones · NFR, compromisos, integración, migraciones, revisión

  1. Requisitos no funcionales que puedes medir
  2. Trade-offs
  3. Cuando el vecino es lento: timeout, retry, circuit breaker
  4. Una transacción entre servicios (Saga)
  5. Integrar sistemas antiguos y ajenos
  6. Cambiar un sistema en marcha (Strangler Fig, Expand–Contract)
  7. Revisión de arquitectura
  8. El panorama de la empresa y sus capacidades
  9. Tu primera tarea de arquitectura

Creado por Ivo Gergov como parte de la campaña de Evo Tech por una educación accesible en programación ·