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) y599-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
unicodedatay 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
- Antes de empezar: el camino hacia desarrollador profesional
- La tarea: un traductor de texto a código Morse
- Analizar el problema antes de programar
- Los conceptos que necesitas (repaso dirigido)
- Decisiones de diseño: tú decides
- 🚀 Proyecto del día: construcción por versiones
- 🧪 Pruebas automáticas con
assert - 📓 El diario del desarrollador
- 🌟 Proyecto extra: el mensajero cifrado del curso
- 🏗️ Mi Portafolio Profesional — Etapa 1
- 🧩 Comprueba lo aprendido
- 🤖 Programar con apoyo de IA (sin volver al infierno de los tutoriales)
- 🛠️ Observaciones sobre el material original
- 📋 Matriz de trazabilidad
- 📦 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:
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
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 erroresPseudocódigo (algoritmo en español)
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 resultado3. 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
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.zipempareja 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
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.mddel 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
- Pedir un texto al usuario y mostrar su traducción.
- Aceptar mayúsculas y minúsculas.
- Traducir letras y números (y, si quieres, signos de puntuación).
- Separar letras y palabras de forma que el resultado se pueda leer (y traducir de vuelta).
- Manejar caracteres desconocidos sin que el programa se detenga.
- 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
printniinputdentro). - 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
- 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:
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
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 quea_texto(a_morse(x))devuelvex(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.Beepen Windows) o crea un archivo de audio con el módulowave. 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:
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:
# 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
- 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. - Cada sistema en su propia función, con la misma "forma": recibe un texto y devuelve otro.
- Una opción que muestre, para un mismo mensaje, cuántos símbolos ocupa en cada sistema.
- Pruebas con
assertpara 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
printniinput. - 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):
- Crea en GitHub un repositorio para el traductor Morse (Día 70), con
.gitignorey commits pequeños y descriptivos (uno por versión). - 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. - Agrega el
DIARIO.mdde la sección 7. - 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
- ¿Qué es el "infierno de los tutoriales" y qué estrategia propone el curso para salir de él?
- ¿Por qué un diccionario es la estructura adecuada para la tabla Morse?
- ¿Por qué la función de traducción debe devolver el resultado en lugar de imprimirlo?
- ¿Por qué hace falta un separador entre letras en Morse?
- ¿Qué diferencia hay entre codificar y cifrar?
Análisis de código
' / '.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.mdcompleto (la reflexión que pide el curso). - El mensajero cifrado (proyecto extra).
- Cuaderno de errores:
KeyErrorpor minúsculas o espacios,returndentro del bucle,printen vez dereturn, códigos sin separador, tildes y ñ, caracteres desconocidos que detienen el programa.