Saltar al contenido
Volver al inicio 100 Días de Código en Python — Día 82: Proyecto de portafolio — el traductor de código Morse (y cómo salir del "infierno de los tutoriales")

100 Días de Código en Python — Día 82: Proyecto de portafolio — el traductor de código Morse (y cómo salir del "infierno de los tutoriales")

Nivel: Grado décimo Área: Tecnología e Informática Modalidad: Tutorial práctico Fuente: Curso "100 Days of Code: The Complete Python Pro Bootcamp" (Angela Yu, App Brewery). Contenido del Día 82, primer proyecto de portafolio profesional (categoría Python Scripting).

Este tutorial adapta pedagógicamente el Día 82, que abre el bloque de proyectos de portafolio (Días 82 a 100). Las secciones 📝 Contenido original del curso provienen de dos archivos: 599-the-road-to-becoming-a-professional-developer.md (el mensaje de la instructora) y 599-tarea1.md (el enunciado de la tarea y su pregunta de reflexión). A partir de este día el curso no ofrece videos ni código de solución: el proyecto es completamente del estudiante. Por eso este tutorial no entrega una solución completa: ofrece el análisis del problema, los conceptos necesarios, una ruta por versiones, pruebas y retos. Todo lo que no está en esos dos archivos (conceptos, fragmentos de código, retos 🟢🟡🟠🔴, proyecto extra y la etapa 1 de Mi Portafolio Profesional) es creación de esta adaptación.

Nota sobre las verificaciones: el 27 de septiembre de 2026, con Python 3.14, se ejecutaron los fragmentos de código de este tutorial (el diccionario Morse de 26 letras, la eliminación de tildes con unicodedata y el diccionario inverso). Los códigos Morse se contrastaron con la tabla del alfabeto internacional; el enunciado del curso remite a la entrada de Wikipedia sobre el código Morse.


Tabla de contenidos

  1. Antes de empezar: el camino hacia desarrollador profesional
  2. La tarea: un traductor de texto a código Morse
  3. Analizar el problema antes de programar
  4. Los conceptos que necesitas (repaso dirigido)
  5. Decisiones de diseño: tú decides
  6. 🚀 Proyecto del día: construcción por versiones
  7. 🧪 Pruebas automáticas con assert
  8. 📓 El diario del desarrollador
  9. 🌟 Proyecto extra: el mensajero cifrado del curso
  10. 🏗️ Mi Portafolio Profesional — Etapa 1
  11. 🧩 Comprueba lo aprendido
  12. 🤖 Programar con apoyo de IA (sin volver al infierno de los tutoriales)
  13. 🛠️ Observaciones sobre el material original
  14. 📋 Matriz de trazabilidad
  15. 📦 Evidencias de aprendizaje del Día 82

0. Antes de empezar: el camino hacia desarrollador profesional

(Fuente: 599-the-road-to-becoming-a-professional-developer.md)

📝 Contenido original del curso

Los próximos 20 proyectos están diseñados para consolidar todo lo aprendido, pero sobre todo son una prueba de fuego. Uno de los mayores peligros para quien aprende por su cuenta es quedarse atrapado en el "infierno de los tutoriales" (tutorial hell): solo saber hacer lo que el tutorial enseña, sin llegar a ser un desarrollador completo.

La salida es construir proyectos por tu cuenta, sin guía. Te vas a atascar muchas veces, vas a sufrir y quizá dudes de ti. La frase clave: "esto le pasa a todo el mundo". No estás solo: cualquier profesional te dirá que su primer proyecto desde cero fue de lo más difícil y también de lo más gratificante. Tendrás que usar todas las herramientas a tu alcance: Google, StackOverflow, YouTube, libros y tus apuntes. Si no te rindes, saldrás siendo mejor desarrollador.

Estos 20 proyectos te llevan de desarrollador junior (que depende de tutoriales) a profesional (que depende de sí mismo), y construyen tu portafolio: por primera vez, todo el código será tuyo. Puedes protegerlo con derechos de autor, subirlo a GitHub para mostrarlo a reclutadores o crear tu propia empresa con él.

"¡Buena suerte! Nos vemos del otro lado. — Tu amiga, Angela".

📖 Explicación (adaptación)

¿Cómo se ve el "infierno de los tutoriales"?

Síntoma Qué hacer en su lugar
"Entiendo el video, pero frente a la pantalla en blanco no sé por dónde empezar" Empieza por escribir en español qué debe hacer el programa (sección 2)
"Busco un tutorial exacto de lo que quiero hacer" Busca piezas: "cómo recorrer un texto en Python", no "traductor Morse completo"
"Copio el código y funciona, pero no sé por qué" Escribe cada línea tú mismo y explícala en un comentario
"Si algo falla, busco otro tutorial" Lee el mensaje de error: dice qué falló y dónde (Día 13)

Cambio de roles en este bloque: hasta ahora, el curso te daba el problema y el camino. Desde hoy te da solo el problema. Este tutorial te ayuda a pensar el camino, pero las decisiones y el código son tuyos.

🏫 Para el aula: en estos proyectos, el docente acompaña con preguntas más que con respuestas. Es normal (y deseable) que dos estudiantes entreguen programas distintos para el mismo enunciado.


1. La tarea: un traductor de texto a código Morse

(Fuente: 599-tarea1.md)

📝 Contenido original del curso

Instrucciones de la tarea (tiempo estimado: 60 minutos).

Usa lo que has aprendido para crear un programa de texto (de línea de comandos) que reciba cualquier texto (String) y lo convierta a código Morse.

Ya creaste muchos programas de texto en los Días 1 a 10: revisa esos proyectos si no recuerdas cómo son.

Referencia: entrada de Wikipedia sobre el código Morse (se abre en otra pestaña).

El diseño, la funcionalidad y el estilo del código dependen totalmente de ti. "Ahora eres tú quien decide".

Pregunta de la tarea — Momento de reflexión: este es un lugar para escribir tu experiencia al completar el proyecto, para descubrir cómo mejorar como desarrollador. Escribe cómo abordaste el proyecto; qué fue difícil y qué fácil; cómo podrías mejorar en el próximo; cuál fue tu mayor aprendizaje; y qué harías distinto si lo hicieras de nuevo. "Este es tu diario de desarrollador. No hay respuestas correctas o incorrectas, solo aprendizajes".

📖 Qué es el código Morse (adaptación)

El código Morse representa cada letra con una secuencia de puntos (señales cortas) y rayas (señales largas). Se usó en el telégrafo desde el siglo XIX y aún se usa en radioafición y en señales de emergencia. El ejemplo más famoso:

Texto
S O S  ->  ... --- ...

En el alfabeto Morse internacional, las letras más frecuentes en inglés tienen los códigos más cortos (E = ., T = -), una idea de compresión que reaparece en informática.


2. Analizar el problema antes de programar

(Sección creada para esta adaptación.)

🔍 Antes de programar

Responde por escrito antes de abrir el editor:

Pregunta Tu respuesta (ejemplo de cómo pensarla)
¿Qué información tenemos? Un texto escrito por el usuario
¿Qué necesitamos obtener? El mismo texto en puntos y rayas
¿Qué datos debemos almacenar? La tabla de equivalencias letra → código
¿Qué proceso realizamos? Recorrer el texto y reemplazar cada carácter
¿Qué resultado esperamos? Un texto con los códigos separados de forma legible
¿Qué condiciones debemos considerar? Mayúsculas y minúsculas, espacios, números, signos, tildes, ñ, caracteres desconocidos

Descomposición en partes

Texto
Traductor Morse
├── 1. Datos: tabla de equivalencias (letras, números, signos)
├── 2. Preparar el texto: mayúsculas, tildes, espacios de más
├── 3. Traducir: carácter por carácter, palabra por palabra
├── 4. Manejar lo desconocido: ¿omitir?, ¿avisar?, ¿marcar con "?"?
├── 5. Interfaz: pedir el texto, mostrar el resultado, repetir o salir
└── 6. Pruebas: casos normales, bordes y errores

Pseudocódigo (algoritmo en español)

Texto
MIENTRAS el usuario quiera seguir:
    pedir un texto
    SI el texto está vacío: avisar y volver a pedir
    convertir el texto a mayúsculas
    PARA cada palabra del texto:
        PARA cada carácter de la palabra:
            SI el carácter está en la tabla: agregar su código
            SI NO: decidir qué hacer (sección 4)
        separar los códigos de las letras con un espacio
    separar las palabras con " / "
    mostrar el resultado

3. Los conceptos que necesitas (repaso dirigido)

(Sección creada para esta adaptación, con referencia a los días del curso donde se aprendió cada concepto.)

Concepto Para qué lo usas aquí Día del curso
input() y print() Pedir el texto y mostrar el resultado 1
Métodos de texto: .upper(), .split(), .strip(), ' '.join() Normalizar y armar el resultado 2, 8
Condicionales if/else Decidir qué hacer con cada carácter 3
Bucles for y while Recorrer el texto; repetir hasta salir 5
Funciones con parámetros y retorno a_morse(texto) que devuelve el resultado 8, 10
Diccionarios La tabla de equivalencias 9
Manejo de errores (try/except KeyError) Caracteres que no están en la tabla 30

🔎 Ejemplo explicado: construir la tabla sin escribir 26 líneas

Python
LETRAS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
CODIGOS = (".- -... -.-. -.. . ..-. --. .... .. .--- -.- .-.. -- -. --- "
           ".--. --.- .-. ... - ..- ...- .-- -..- -.-- --..").split()

MORSE = dict(zip(LETRAS, CODIGOS))
MORSE['S']    # '...'
MORSE['O']    # '---'
len(MORSE)    # 26
  • .split() sin argumentos separa por espacios y crea una lista de 26 códigos.
  • zip empareja la primera letra con el primer código, la segunda con el segundo…
  • dict(...) convierte esos pares en un diccionario.

¿Cómo sabes que no te equivocaste al copiar? Con pruebas (sección 6): por ejemplo, assert len(set(CODIGOS)) == 26 comprueba que no repetiste ningún código.

⚠️ Tu turno: esta tabla solo tiene letras. Los números (0–9) y algunos signos (., ,, ?) también tienen código Morse: agrégalos consultando la referencia del curso.

Un fragmento útil: quitar tildes

Python
import unicodedata

def quitar_tildes(texto):
    descompuesto = unicodedata.normalize('NFD', texto)    # "á" -> "a" + tilde
    return ''.join(c for c in descompuesto if unicodedata.category(c) != 'Mn')

quitar_tildes('Canción ÁRBOL pingüino')    # 'Cancion ARBOL pinguino'

NFD separa cada letra de su tilde, y la categoría 'Mn' corresponde a esas marcas. Pero cuidado: verificado, quitar_tildes('año') devuelve 'ano': la ñ también pierde su "tilde" y la palabra cambia de significado. Esa es una decisión de diseño (sección 4).

⚠️ Errores frecuentes

Error Qué ocurre Cómo identificarlo Solución
Buscar 's' en un diccionario con 'S' KeyError: 's' El mensaje muestra la clave que no encontró .upper() antes de traducir
Traducir el espacio como carácter KeyError: ' ' La clave del error es un espacio Separar primero por palabras con .split()
Concatenar sin separador ...---... es ambiguo: ¿"SOS"?, ¿"VTB"? Traduce de vuelta y no coincide Separa letras con espacio y palabras con /
return dentro del bucle Solo se traduce la primera letra La salida siempre tiene un código Acumula y retorna después del bucle
print en lugar de return en la función La función devuelve None y no se puede probar assert falla con None La función devuelve; la interfaz imprime

4. Decisiones de diseño: tú decides

(Sección creada para esta adaptación.)

El enunciado dice: "el diseño, la funcionalidad y el estilo dependen de ti". Estas son las decisiones que un desarrollador profesional toma y documenta:

Decisión Opciones Preguntas para decidir
Separador entre letras y entre palabras ' ' y ' / '; ' ' y ' ' (3 espacios); otros ¿Se puede traducir de vuelta sin ambigüedad? ¿Es legible?
Caracteres desconocidos (@, emojis) Omitirlos; reemplazarlos por ?; avisar al usuario ¿Qué es más útil para quien usa el programa?
Tildes y ñ Quitar tildes pero conservar la ñ con un código no estándar (--.--); quitar todo; rechazar El Morse internacional no define la ñ: ¿qué pasa si el receptor no conoce tu código?
Interfaz Una traducción y termina; menú que se repite; argumentos de línea de comandos (sys.argv) ¿Quién lo va a usar y cómo?
Organización Todo en un archivo; la tabla en un módulo aparte (morse_tabla.py) ¿Qué es más fácil de leer y de probar?

📝 Anota tus decisiones en el README.md del proyecto, con una línea de justificación cada una. Eso también es parte del portafolio: muestra cómo piensas.


5. 🚀 Proyecto del día: construcción por versiones

(Desarrolla la tarea 599-tarea1.md. Las versiones son una propuesta de esta adaptación; la tarea original deja la organización al estudiante.)

Problema

Crear un programa de consola que convierta cualquier texto en código Morse.

Contexto

Imagina que el club de radioafición o el grupo scout del colegio necesita practicar mensajes en Morse y quiere una herramienta sencilla para comprobar sus traducciones.

Objetivo

Un programa propio, organizado en funciones, probado y documentado, publicado en GitHub.

Requisitos funcionales

  1. Pedir un texto al usuario y mostrar su traducción.
  2. Aceptar mayúsculas y minúsculas.
  3. Traducir letras y números (y, si quieres, signos de puntuación).
  4. Separar letras y palabras de forma que el resultado se pueda leer (y traducir de vuelta).
  5. Manejar caracteres desconocidos sin que el programa se detenga.
  6. Permitir traducir varios textos sin reiniciar el programa, y salir cuando el usuario quiera.

Restricciones técnicas

  • La traducción en una función que recibe un texto y devuelve otro (sin print ni input dentro).
  • La tabla de equivalencias en un diccionario.
  • Nombres descriptivos y un comentario en cada decisión de diseño.
  • El proyecto en un repositorio de GitHub con README.md (Día 70).

Planificación

  1. Comprender el problema (sección 1). 2. Entradas: un texto. 3. Procesos: normalizar → traducir → unir. 4. Salidas: el texto en Morse. 5. Dividir el problema (sección 2). 6. Diseñar: tomar las decisiones de la sección 4. 7. Implementar por versiones. 8. Probar (sección 6). 9. Corregir. 10. Mejorar con los retos.

Construcción paso a paso

Versión 1 — Una letra. Crea el diccionario y traduce una sola letra escrita por el usuario. Prueba con S, o (minúscula) y ñ. ¿Qué pasa con cada una?

Versión 2 — Una palabra. Crea la función a_morse(palabra) que recorre la palabra con un for, acumula los códigos en una lista y los une con ' '.join(...). Esqueleto:

Python
def a_morse(texto):
    """Devuelve el texto traducido a código Morse."""
    codigos = []
    for caracter in texto.upper():
        ...    # tu código: ¿qué haces si el carácter está en MORSE? ¿y si no?
    return ' '.join(codigos)

Versión 3 — Frases. Separa el texto en palabras, traduce cada una y únelas con tu separador de palabras. Prueba con "hola mundo" y con espacios de más: " hola mundo ".

Versión 4 — Lo desconocido. Aplica tu decisión para tildes, ñ, números, signos y caracteres desconocidos. Ningún texto debe detener el programa.

Versión 5 — Interfaz. Un bucle while que pide textos hasta que el usuario escriba, por ejemplo, salir. Muestra un mensaje de bienvenida con instrucciones.

Versión final — Calidad. Pruebas automáticas, README.md, docstrings, publicación en GitHub y diario del desarrollador (sección 7).

Pruebas

Entrada Salida esperada (con separadores ' ' y ' / ')
SOS ... --- ...
sos ... --- ...
Hola mundo .... --- .-.. .- / -- ..- -. -.. ---
hola .... --- .-.. .-
2026 ..--- ----- ..--- -....
(vacío) Un aviso, no un error
canción Según tu decisión sobre las tildes
@ Según tu decisión sobre lo desconocido

🧪 Prueba y depuración

Python
def a_morse(texto):
    for letra in texto:
        codigo = MORSE[letra]
        return codigo

mensaje = input("Texto: ")
print(a_morse(mensaje))

Encuentra cuatro problemas: el return dentro del bucle solo traduce la primera letra; no se convierte a mayúsculas (KeyError con minúsculas); un espacio produce KeyError: ' '; y no se manejan caracteres desconocidos. Corrígelo sin mirar una solución completa: usa los mensajes de error como guía.

⭐ Extensión del proyecto

  • 🟢 Reto 1 — Aplicación: agrega los números y 5 signos de puntuación.
  • 🟡 Reto 2 — Ampliación: la traducción inversa (Morse → texto) con un diccionario invertido: {codigo: letra for letra, codigo in MORSE.items()}. Comprueba que a_texto(a_morse(x)) devuelve x (en mayúsculas).
  • 🟠 Reto 3 — Desafío: reproduce el sonido del Morse. Investiga cómo generar un tono con la biblioteca estándar (por ejemplo, winsound.Beep en Windows) o crea un archivo de audio con el módulo wave. Respeta las duraciones: raya = 3 puntos; espacio entre letras = 3 puntos; entre palabras = 7.
  • 🔴 Reto 4 — Pensamiento computacional: el Morse usa códigos cortos para las letras más frecuentes en inglés. Cuenta la frecuencia de las letras en un texto largo en español (por ejemplo, un capítulo de un libro de dominio público) y diseña tu propia asignación de códigos. ¿Cuántos símbolos ahorrarías con tu código frente al internacional para ese texto?

6. 🧪 Pruebas automáticas con assert

(Sección creada para esta adaptación.)

En lugar de probar a mano cada vez, escribe las pruebas como código. assert condición no hace nada si la condición es verdadera, y lanza AssertionError si es falsa:

Python
def probar():
    assert a_morse("SOS") == "... --- ..."
    assert a_morse("sos") == "... --- ..."
    assert a_morse("  hola   ") == ".... --- .-.. .-"
    # agrega aquí tus casos de borde: vacío, números, tildes, desconocidos
    print("Todas las pruebas pasaron ✅")

probar()

Por qué importa: cuando cambies algo (por ejemplo, agregues los signos), ejecutas probar() y sabes en un segundo si rompiste lo que ya funcionaba. Esta es la base de las pruebas unitarias que usan los equipos profesionales (en Python, con bibliotecas como unittest o pytest).

Buena práctica: escribe la prueba antes de programar la funcionalidad. Si la prueba falla primero y luego pasa, sabes que tu código es el que la hizo pasar.


7. 📓 El diario del desarrollador

(La pregunta de reflexión proviene de 599-tarea1.md; la plantilla es de esta adaptación.)

Copia esta plantilla en un archivo DIARIO.md de tu repositorio y complétala al terminar el proyecto:

Markdown
# Diario del desarrollador — Traductor Morse
**Fecha:**  **Tiempo dedicado:**

## ¿Cómo abordé el proyecto?
(¿Empecé por el diccionario? ¿Por la interfaz? ¿Hice pseudocódigo?)

## ¿Qué fue fácil y qué fue difícil?

## Errores que encontré y cómo los resolví
| Error (mensaje) | Causa | Solución |
|---|---|---|

## ¿Qué busqué en Internet o consulté? ¿Qué fuentes me sirvieron?

## Mi mayor aprendizaje

## ¿Qué haría distinto la próxima vez?

"No hay respuestas correctas o incorrectas, solo aprendizajes". Con el tiempo, este diario te mostrará cuánto has avanzado: los errores que hoy te toman una hora mañana te tomarán un minuto.


8. 🌟 Proyecto extra: el mensajero cifrado del curso

(Proyecto creado para esta adaptación; no existe en el curso original.)

Situación

Tu curso quiere un "mensajero" de consola que traduzca mensajes a varios sistemas de codificación y permita comparar su longitud.

Requisitos

  1. Un menú que permita elegir: Morse, cifrado César (Día 8), binario (el código de cada carácter en 8 bits: format(ord(c), '08b')) y, si quieres, braille en Unicode.
  2. Cada sistema en su propia función, con la misma "forma": recibe un texto y devuelve otro.
  3. Una opción que muestre, para un mismo mensaje, cuántos símbolos ocupa en cada sistema.
  4. Pruebas con assert para cada función.

Decisiones que debes tomar (y justificar)

  • ¿Cómo organizas el código para que agregar un sistema nuevo sea fácil? (Pista: un diccionario {'morse': a_morse, 'cesar': a_cesar, ...} que guarde funciones.)
  • ¿Cuáles de estos sistemas son cifrados (ocultan el mensaje) y cuáles solo codificaciones (lo representan de otra forma)?

Casos de prueba

  • Todas las funciones devuelven texto y ninguna usa print ni input.
  • El mensaje vacío no produce errores en ningún sistema.

9. 🏗️ Mi Portafolio Profesional — Etapa 1

(Proyecto integrador creado para esta adaptación. Acompaña el bloque de proyectos de portafolio del curso y continúa en el Día 83.)

La idea: al terminar el curso, tener un portafolio con proyectos propios, cada uno con su código en GitHub, su documentación y su diario, y un sitio web que los presente.

Etapa 1 (hoy):

  1. Crea en GitHub un repositorio para el traductor Morse (Día 70), con .gitignore y commits pequeños y descriptivos (uno por versión).
  2. Escribe el README.md: qué hace, cómo se ejecuta, un ejemplo de uso, tus decisiones de diseño y cómo ejecutar las pruebas.
  3. Agrega el DIARIO.md de la sección 7.
  4. Crea un archivo proyectos.json (en un repositorio aparte o en tu computador) con la primera ficha de tu portafolio: título, descripción de una línea, tecnologías, enlace al repositorio y fecha. Lo usarás en el Día 83.

Producto de la etapa: el repositorio publicado y la ficha del proyecto.

🏫 Para el aula: si publicas en GitHub, usa un nombre de usuario que no revele datos personales sensibles y revisa con tu docente (y tu familia, si eres menor de edad) qué información es apropiado mostrar. GitHub exige una edad mínima para crear una cuenta: consulta sus términos vigentes.


10. 🧩 Comprueba lo aprendido

Conceptuales

  1. ¿Qué es el "infierno de los tutoriales" y qué estrategia propone el curso para salir de él?
  2. ¿Por qué un diccionario es la estructura adecuada para la tabla Morse?
  3. ¿Por qué la función de traducción debe devolver el resultado en lugar de imprimirlo?
  4. ¿Por qué hace falta un separador entre letras en Morse?
  5. ¿Qué diferencia hay entre codificar y cifrar?

Análisis de código

Python
' / '.join(' '.join(MORSE[c] for c in palabra) for palabra in "SOS SOS".split())

¿Qué devuelve? Explica qué hace cada join.

Predicción

¿Qué imprime print(dict(zip("ABC", [".-", "-...", "-.-."]))["B"])? ¿Y si la lista tuviera solo 2 elementos y pidieras "C"?

Depuración

"Mi traductor funciona con HOLA pero se detiene con Hola, mundo". Da dos causas posibles.

Modificación

Cambia tu programa para que los caracteres desconocidos se muestren como [?] y, al final, se informe cuántos hubo.

Creación

Escribe es_morse_valido(texto) que devuelva True si un texto contiene solo puntos, rayas, espacios y /, y False en caso contrario.


11. 🤖 Programar con apoyo de IA (sin volver al infierno de los tutoriales)

En un proyecto de portafolio, la IA no debe escribir el proyecto por ti: el objetivo es demostrar que tú puedes hacerlo. Úsala como un tutor, no como un autor.

Ciclo de trabajo: formula el problema → inténtalo tú primero → consulta a la IA sobre un punto concreto → lee y entiende → prueba → compara con la documentación oficial → modifica → explica con tus palabras.

✅ Buen uso ❌ Mal uso
"¿Qué significa KeyError: ' ' en mi código?" "Hazme un traductor Morse en Python"
"¿Cómo se invierte un diccionario en Python?" Copiar el programa completo que genere
"Revisa si mi función maneja bien los espacios" Entregar código que no puedes explicar línea por línea

Actividad 1 — Verificar datos. Pide a una IA la tabla Morse completa. Compárala, letra por letra, con la referencia del curso usando una prueba automática. ¿Hay errores?

Actividad 2 — Revisión de código. Cuando termines la versión 5, pide a una IA que revise tu código y sugiera mejoras, sin reescribirlo. Aplica solo las sugerencias que entiendas y anota en tu diario cuáles aceptaste y por qué.

Actividad 3 — Declarar el uso. Agrega al README.md una sección "Uso de IA" que diga honestamente en qué te ayudó. Es una práctica profesional cada vez más común.


12. 🛠️ Observaciones sobre el material original

Archivo Observación Tratamiento
599-tarea1.md El enunciado no define separadores, manejo de caracteres desconocidos ni de letras propias del español (tildes, ñ); lo deja a decisión del estudiante Sección 4 (decisiones de diseño), sin alterar el propósito
599-tarea1.md Remite a la entrada de Wikipedia en inglés Válida; el Morse internacional no define la ñ ni las vocales con tilde (salvo É)
599-tarea1.md "60 minutos para finalizar" Es una estimación de la plataforma; en clase, con pruebas, documentación y publicación, conviene planear 2 o 3 sesiones
599-tarea1.md Contiene metadatos de la plataforma (número de soluciones de estudiantes, avatar del instructor) No forman parte del contenido pedagógico
599-the-road...md "Puedes proteger tu código con derechos de autor" En Colombia, el software está protegido por el derecho de autor desde su creación; publicar en GitHub con una licencia (por ejemplo, MIT) define qué pueden hacer otros con él

13. 📋 Matriz de trazabilidad

Contenido original Archivo de origen Concepto desarrollado Ejercicio original Reto adicional Proyecto relacionado
20 proyectos de portafolio, "infierno de los tutoriales", "esto le pasa a todo el mundo", herramientas de búsqueda, código propio y derechos de autor 599-the-road-to-becoming-a-professional-developer.md Sección 0 — Síntomas y estrategias Secciones 5 y 9
Programa de texto que convierte cualquier texto a Morse; referencia a los Días 1–10 y a Wikipedia; diseño libre 599-tarea1.md Secciones 1 a 4 Traductor Morse Retos 1–4 de la sección 5 Secciones 5, 8 y 9
Momento de reflexión: diario del desarrollador 599-tarea1.md Sección 7 Pregunta de reflexión Plantilla DIARIO.md Sección 9
(No existe en el curso original) — Sección 6 — Pruebas con assert Secciones 5 y 8
(No existe en el curso original) — — — Mensajero cifrado Sección 8
(No existe en el curso original) — — — Mi Portafolio Profesional, etapa 1 Sección 9

14. 📦 Evidencias de aprendizaje del Día 82

  • El análisis escrito del problema (tabla de la sección 2 y pseudocódigo).
  • El traductor Morse funcionando, con la tabla de pruebas superada y las pruebas con assert.
  • El repositorio en GitHub con README.md (incluidas las decisiones de diseño) y commits por versión.
  • El DIARIO.md completo (la reflexión que pide el curso).
  • El mensajero cifrado (proyecto extra).
  • Cuaderno de errores: KeyError por minúsculas o espacios, return dentro del bucle, print en vez de return, códigos sin separador, tildes y ñ, caracteres desconocidos que detienen el programa.