Unidad 1
Introducción 📜
Sección titulada «Introducción 📜»El objetivo de esta unidad es que puedas comprender la arquitectura de un computador digital moderno. Para ello usaremos como caso de estudio un computador simple, pero didáctico llamado computador Hack. Programarás este computador utilizando su lenguaje ensamblador y desarrollarás programas simples, pero interactivos que harán uso de operaciones de entrada/salida.
Set: ¿Qué aprenderás en esta unidad? 💡
Sección titulada «Set: ¿Qué aprenderás en esta unidad? 💡»- Comprender la arquitectura de un computador.
- Conocer el lenguaje ensamblador.
- Desarrollar programas interactivos simples.
- Manipular la memoria.
- Realizar operaciones aritmético-lógicas.
- Controlar el flujo de un programa.
- Manejar la entrada y salida de datos.
Actividad 01
Sección titulada «Actividad 01»Ciclo fetch-decode-execute
Sección titulada «Ciclo fetch-decode-execute»El siguiente programa está escrito en el lenguaje ensamblador del computador Hack. Este computador no es un computador comercial, sino un computador didáctico que te permitirá acercarte a los conceptos fundamentales de manera amigable.
@1D=A@2D=D+A@16M=D@END(END)0;JMP
¿Qué crees que haga este programa?
Para responder a esta pregunta vamos a analizarlo paso a paso usando un simulador de la CPU Hack que está aquí.
Para ejecutar este programa la CPU realiza un ciclo constante llamado Fetch-Decode-Execute.
El ciclo Fetch-Decode-Execute describe cómo la CPU ejecuta instrucciones de un programa. Aquí está explicado de forma breve y simple:
Fetch (buscar): la CPU obtiene (lee) la siguiente instrucción desde la memoria. El contador de programa (PC) indica dónde se encuentra esa instrucción en la memoria ROM.
Decode (decodificar): la CPU interpreta la instrucción que acaba de leer. Esto significa entender qué operación debe realizarse y qué datos o recursos necesita.
Execute (ejecutar): la CPU realiza la operación indicada. Por ejemplo, puede ser una operación matemática, mover datos entre registros, o acceder a la memoria.
Este ciclo se repite continuamente mientras la computadora esté encendida, procesando instrucciones una tras otra. Es la base del funcionamiento de cualquier procesador.
Seek: Investigación 🔎
Sección titulada «Seek: Investigación 🔎»Una vez has comprendido los conceptos básicos, es hora de profundizar en el funcionamiento del computador Hack y su lenguaje ensamblador.
Actividad 02
Sección titulada «Actividad 02»Explorando la arquitectura del computador Hack
Sección titulada «Explorando la arquitectura del computador Hack»Ahora vamos a analizar juntos el siguiente programa. Este programa tendrá todos los conceptos que vamos investigar en la siguiente fase de la unidad de manera más profunda. En qué nos enfocaremos:
- Las partes del computador Hack.
- El modelo de programación de la CPU.
- La diferencia entre memoria RAM y registros.
- Los tipos de instrucciones del lenguaje ensamblador.
- Cómo leo el teclado y muestro en pantalla.
- Cómo implemento un bucle.
- Cómo implemento una condición.
- ¿Qué es la ALU y qué operaciones realiza?
En “este” enlace está la documentación del computador Hack.
@SCREEND=A@iM=D(READKEYBOARD)@KBDD=M@KEYPRESSEDD;JNE@iD=M@SCREEND=D-A@READKEYBOARDD;JLE@iM=M-1A=MM=0@READKEYBOARD0;JMP
(KEYPRESSED)@iD=M@KBDD=D-A@READKEYBOARDD;JGE@16A=MM=-1@iM=M+1@READKEYBOARD0;JMP
Apply: Aplicación 🛠
Sección titulada «Apply: Aplicación 🛠»Actividad 03
Sección titulada «Actividad 03»Control de flujo con saltos
Sección titulada «Control de flujo con saltos»Vamos a resolver juntos este problema:
Escribe un programa que compare el valor almacenado en la dirección de memoria 5 con el valor 10. Si el valor es menor que 10, guarda el valor 1 en la dirección 7. Si el valor es mayor o igual a 10, guarda el valor 0 en la dirección 7.
Actividad 04
Sección titulada «Actividad 04»Implementando un ciclo simple
Sección titulada «Implementando un ciclo simple»Vamos a resolver juntos este problema:
“Crea un programa que use un ciclo para sumar los números del 1 al 5 y guarde el resultado en la dirección de memoria 12.”
Reflect: Consolidación y metacognición 🤔
Sección titulada «Reflect: Consolidación y metacognición 🤔»Hoy dedicaremos esta sesión a mirar hacia adentro y hacia los lados. Primero, haremos un ejercicio individual para que compruebes cuánto has aprendido sobre la arquitectura de computadores. Segundo, trabajarás con un compañero para darse retroalimentación constructiva sobre sus bitácoras. Y, por último, tendrán un espacio para darme feedback a mí y así poder mejorar la siguiente unidad. El objetivo es que todos aprendamos y mejoremos juntos.
Tiempos estimados para cada actividad: te voy a pedir que midas el tiempo de cada actividad como sigue.
Autoevaluación: 35 minutos
Coevaluación: 35 minutos
Feedback al profesor: 15 minutos
Actividad 05
Sección titulada «Actividad 05»Autoevaluación
Sección titulada «Autoevaluación»Mirando hacia adentro: autoevaluación de conceptos y proceso
El objetivo de esta actividad es doble. Primero, que puedas recuperar de tu memoria los conceptos fundamentales de la unidad sin ayuda de tus notas. Este proceso de “recordar” es una de las formas más efectivas de fortalecer tu memoria a largo plazo. Segundo, que reflexiones sobre cómo has aprendido, para que puedas identificar qué estrategias te funcionan mejor.
Actividad 06
Sección titulada «Actividad 06»Coevaluación
Sección titulada «Coevaluación»Aprendiendo juntos: coevaluación constructiva
Ahora es el momento de aprender de un compañero. La coevaluación es una herramienta poderosa que te permite ver otras perspectivas y aprender a dar retroalimentación constructiva, una habilidad clave. El objetivo no es calificar, sino ayudar a tu compañero a mejorar.
Actividad 07
Sección titulada «Actividad 07»Feedback
Sección titulada «Feedback»Mejorando la experiencia: tu feedback es clave
Mi rol como profesor es facilitar tu aprendizaje de la mejor manera posible. Tu perspectiva como estudiante es increíblemente valiosa para ayudarme a mejorar. Esta actividad es tu oportunidad para darme retroalimentación honesta y constructiva sobre la unidad que acabamos de terminar.