Semana 3 — Laboratorio: Caza de Bugs con la IA como Tutora
Regla: IA SOLO COMO TUTORA. Le pides PISTAS y EXPLICACIONES. Jamás el código resuelto. Tú haces la corrección final, a mano.
Herramienta: Google Colab + Google AI Studio / Gemini.
Abajo hay un programa intencionalmente roto. No tiene errores rojos: corre perfecto pero da resultados equivocados. Son bugs de lógica, los más traicioneros. Tu misión: encontrarlos y arreglarlos, usando la IA solo para entender el concepto.
Paso 1 — Copia el programa roto a Colab
Pega esto tal cual en una celda y córrelo. Verás que funciona... pero los números no cuadran.
# ANALIZADOR DE NOTAS (versión rota )
# Cuenta aprobados, calcula el promedio y busca la nota más alta.
notas = [3.0, 4.5, 2.0, 3.0, 1.5, 5.0]
# --- Contar aprobados (aprobar = nota mayor o igual a 3.0) ---
aprobados = 0
for nota in notas:
if nota > 3.0:
aprobados = aprobados + 1
print("Aprobados:", aprobados)
# --- Promedio ---
suma = 0
for nota in notas:
suma = suma + nota
promedio = suma / 5
print("Promedio:", promedio)
# --- Nota más alta ---
mas_alta = 0
for nota in notas:
if nota > mas_alta:
mas_alta = nota
print("Nota más alta:", mas_alta)
Paso 2 — Audita ANTES de preguntar a la IA
Antes de tocar la IA, haz una prueba de escritorio (como en la semana 1) y responde en papel:
- A mano, ¿cuántos aprobados debería haber? (recuerda: aprobar es 3.0 o más)
- ¿El programa dio ese número, o uno diferente?
- ¿El promedio se ve raro? ¿Por cuántos números se está dividiendo realmente?
Hay 3 bugs de lógica escondidos. Intenta detectar al menos uno tú solo, sin IA. Ese músculo es el que entrenamos.
Paso 3 — Usa la IA como TUTORA (no como solución)
Ahora sí, abre la IA. Pero recuerda la regla de oro. Usa prompts así (en inglés, para practicar y porque responde mejor):
Prompt correcto (pide concepto, no solución):
You are a Python tutor for beginners. I have a program that runs without
errors but gives wrong results. DO NOT fix the code and DO NOT give me the
solution. Instead, explain the CONCEPT of a "logic bug" and give me ONE hint
about what to check when a counter gives a smaller number than expected.
Prompt PROHIBIDO esta semana:
Fix this code and give me the correct version. ← NO. Esto es trampa.
Tu tarea con cada bug:
- Pide a la IA una pista o que te explique el concepto (ej: "¿qué diferencia hay entre
>y>=?"). - Con esa pista, TÚ identificas el error.
- TÚ corriges la línea en Colab, a mano.
- Anota: "Bug encontrado: ___. Concepto: ___. Lo arreglé cambiando ___."
Las pistas de los 3 bugs (sin spoilear)
- Bug 1 (aprobados): alguien que sacó exactamente 3.0 sí aprobó. ¿El programa los está contando? Piensa en
>vs>=. - Bug 2 (promedio): ¿la lista tiene 5 o 6 notas? ¿Entre cuántas está dividiendo el código? ¿Qué pasa si mañana agregas otra nota?
- Bug 3 (nota más alta): funciona aquí... pero ¿qué pasaría si TODAS las notas fueran negativas, o si empezaras buscando desde un punto mal elegido? Piensa en con qué valor arranca
mas_alta.
El Bug 3 corre bien con estos datos pero está mal diseñado. Un buen auditor detecta el peligro antes de que explote. ¿Puedes ver por qué arrancar en
0es frágil?
Entregable y evaluación
Entrega tu notebook corregido + una pequeña bitácora (en la misma celda, como comentarios) con, por cada bug: qué era, el concepto detrás, y cómo lo arreglaste.
| Criterio | Qué miramos |
|---|---|
| Diseño lógico | ¿Entendiste el concepto del bug, no solo la línea? |
| Auditoría | ¿Detectaste los 3 (o al menos los explicaste)? |
| Uso de IA | ¿Tu historial de prompts pide PISTAS, no soluciones? |
| Explicación | ¿Puedes explicar cada arreglo con tus palabras? |
El facilitador puede pedirte tu historial de prompts. Pedir la solución = no se aprobó el reto, aunque el código quede bien. Aquí se premia cómo piensas, no el copy-paste.
Reto async (bono en casa)
Escribe TÚ un programa corto con UN bug de lógica escondido a propósito. Tráelo el miércoles y reta a un compañero a cazarlo (¡él solo puede usar la IA para pistas!). Diseñar un buen bug demuestra que entendiste de verdad.