M035 sem · 100 h20 lecciones

Sigla en azul →glosario(primera vez: expansión entre paréntesis).

M03 — Matemáticas discretas

Por qué existe

Es el lenguaje de estructuras de datos, bases de datos y algoritmos. Aquí la haces aplicada a código, no solo de pizarrón.

En resumen: lógica, conjuntos y grafos no son adorno: los usas al razonar algoritmos y modelos. Demuestras a mano y codeas lo esencial.

Objetivos de aprendizaje

Al terminar debes poder:

  1. Razonar con lógica proposicional y predicados; escribir demostraciones cortas correctas.
  2. Operar con conjuntos, relaciones y funciones (propiedades y contraejemplos).
  3. Aplicar inducción matemática y técnicas básicas de conteo.
  4. Modelar problemas con grafos; implementar representaciones y BFS (búsqueda en amplitud)/DFS (búsqueda en profundidad) en TypeScript.
  5. Conectar cada idea con evidencia en projects/m03-discretas/.

Cómo estudiar esta materia (lecciones)

M03 sigue el mismo formato que M01: lecciones cortas, completas, en orden.

  1. Abre las lecciones en orden (L01 → L20).
  2. Cada lección trae objetivo, pasos, lectura de Rosen y criterio “Hecho cuando”.
  3. Marca la lección en la UI (interfaz de usuario) solo si cumple ese criterio.
  4. Regla de rigor: cada semana ≥3 ejercicios resueltos a mano (en demos.md o anexos) antes de confiar solo en el código.
  5. Alterna teoría en papel y TypeScript (strict) según los pasos de cada lección.
  6. Método general: Cómo estudiar.

Semana tipo (20 h)

Bloque Horas Qué haces
Teoría Rosen 6–8 Capítulos de la semana + demostraciones en demos.md
Implementación 6–8 Módulos TS en projects/m03-discretas/src/
Proyecto CLI (interfaz de línea de comandos) 4–6 Grafo JSON, BFS/DFS, grados (L18–L20)
Retro 1 Una prueba o algoritmo que aún no te sale

Si un día solo tienes 2 h: una lección práctica (pasos + evidencia). No saltes la fila de lectura de esa lección.

Lecciones

Semana 1 — Lógica y demostraciones (~20 h)

ID Lección ~h
L01 Lógica proposicional y tablas de verdad 2.5
L02 Implicación, equivalencias y leyes 2.5
L03 Predicados y cuantificadores 3
L04 Métodos de demostración (intro) 3

Semana 2 — Conjuntos y funciones (~20 h)

ID Lección ~h
L05 Conjuntos: notación y membresía 2.5
L06 Operaciones conjuntistas en TypeScript 3
L07 Leyes de conjuntos y pruebas 2.5
L08 Funciones: imagen, inyectividad y biyección 3

Semana 3 — Relaciones e inducción (~20 h)

ID Lección ~h
L09 Relaciones y propiedades 2.5
L10 Equivalencias y particiones 2.5
L11 Órdenes parciales y totales 2.5
L12 Inducción matemática 3

Semana 4 — Conteo y complejidad (~20 h)

ID Lección ~h
L13 Conteo: regla del producto y la suma 2.5
L14 Permutaciones y combinaciones 3
L15 Principio de inclusión-exclusión 2.5
L16 Binomial, Pascal y Big-O de funciones propias 3

Semana 5 — Grafos y cierre (~20 h)

ID Lección ~h
L17 Grafos: modelo y terminología 2.5
L18 Representación de grafos en TS 3
L19 Búsqueda en anchura (BFS) 3
L20 DFS, CLI de grafo y cierre 3

Empieza por L01 hoy.

Lecturas (mapa rápido)

Canon: Matemáticas discretas y sus aplicaciones — Kenneth H. Rosen (ed. ES). Si tu edición numera ±1, sigue el título. Catálogo: bibliografía.

Semana Lecciones Capítulos / foco Rosen
1 L01–L04 Cap. 1 — Lógica proposicional, predicados, métodos de prueba
2 L05–L08 Cap. 2 — Conjuntos, funciones, secuencias (selecto)
3 L09–L12 Cap. 9 (relaciones) + Cap. 5 (inducción/recursión, selecto)
4 L13–L16 Cap. 6 — Conteo / combinatoria
5 L17–L20 Cap. 10 — Grafos, caminos, BFS/DFS

Regla: no avances de capítulo más rápido que las lecciones de esa semana. Los ejercicios del libro se filtran: prioriza los que piden demostrar o contar con justificación.

Prácticas

  1. P1: 10 demostraciones cortas (Markdown o escaneo) en projects/m03-discretas/demos.md.
  2. P2: Operaciones de conjuntos, matriz de relación y lista de adyacencia con tests (Vitest).
  3. P3: Big-O (notación de complejidad) justificado para 5 funciones tuyas en projects/m03-discretas/complejidad.md.

Proyecto útil

CLI que lea un grafo (JSON), imprima BFS/DFS, grados de nodos y un resumen del recorrido. Documenta en el README la teoría detrás de cada algoritmo.

Errores comunes

  • Solo leer sin demostrar nada a mano.
  • Confundir → (implicación) con ↔ (bicondicional).
  • Marcar lecciones sin cumplir “Hecho cuando”.
  • Decir “es O(n)” sin argumentar el peor caso.
  • Implementar BFS/DFS sin probar en un grafo de 4–6 nodos dibujado a mano.

Evidencia de hecho

Marca la práctica en la UI solo si existe esto (o equivalente claro):

  • P1 — Demos: 10 demostraciones numeradas en projects/m03-discretas/demos.md (enunciado + prueba).
  • P2 — Código: src/sets.ts, src/relations.ts, src/graph.ts (o nombres equivalentes) con tests que pasen.
  • P3 — Big-O: projects/m03-discretas/complejidad.md con 5 funciones y análisis de peor caso.
  • Proyecto — Grafo CLI: src/cli.ts (o bin/) lee JSON, imprime BFS/DFS y grados; README actualizado.

Criterios de dominio

  • Pruebas por inducción un sumatorio o propiedad simple sin copiar la solución.
  • Explicas por qué un grafo conviene como lista o como matriz en un caso concreto.
  • Distingues permutación de combinación en un problema nuevo.
  • No confundes O(n) con “rápido en mi laptop”.