5 puntos por GN⁺ 2023-12-23 | 1 comentarios | Compartir por WhatsApp
  • Nand2Tetris ofrece materiales para que quienes quieren entender los sistemas de computación desde sus bases construyan por su cuenta un sistema de computación de propósito general y capas modernas de software
  • Reúne clases, materiales de proyectos y herramientas en un solo lugar, y puede usarse como código abierto gratuito en entornos sin fines de lucro
  • Este curso se usa en más de 400 universidades, escuelas secundarias y bootcamps, y lo toman desde estudiantes de secundaria hasta estudiantes de doctorado e ingenieros senior
  • Quienes estudian por su cuenta pueden seguir las notas de clase y la sección Projects del sitio web, y en Coursera es posible cursarlo de pago y obtener un certificado oficial
  • Está diseñado tanto para aprendizaje individual como para clases en instituciones educativas; los docentes pueden recibir materiales adicionales contactándose por separado

Materiales de aprendizaje para construir una computadora desde cero

  • El sitio web oficial de los cursos Nand to Tetris reúne los materiales necesarios para construir desde cero un sistema de computación de propósito general y capas modernas de software
  • Los materiales incluyen clases, materiales de proyectos y herramientas, y están dirigidos a estudiantes, docentes y autodidactas
  • El libro relacionado es The Elements of Computing Systems, de Noam Nisan y Shimon Schocken
  • Los materiales de CACM relacionados con el curso están disponibles en texto y video

Rutas para cursarlo y uso en entornos educativos

  • El curso Nand to Tetris se enseña en más de 400 universidades, escuelas secundarias y bootcamps
    • Entre quienes lo cursan hay estudiantes de secundaria, estudiantes de doctorado e ingenieros senior
    • Se puede consultar el programa ampliado de una versión académica típica del curso
  • Para cursarlo libremente, se pueden seguir las notas de clase del sitio web y la sección Projects
  • El curso en Coursera es de pago y ofrece un certificado oficial
  • Los materiales adicionales para docentes se pueden solicitar escribiendo a nand2tetris@gmail.com

1 comentarios

 
GN⁺ 2023-12-23
Opiniones en Hacker News
  • La primera vez que lo intenté, hace 7 años después de graduarme de la universidad, solo llegué hasta el capítulo 2; fue muy gratificante, pero lo dejé por otros proyectos paralelos.
    Lo retomé hace 3 meses y ahora voy por el capítulo 8: ya terminé las compuertas lógicas, la ALU, la CPU, el ensamblador y la mitad de la máquina virtual. En cada capítulo pienso “¿pero cómo diablos funciona esto?”, y cuando realmente funciona es tremendamente satisfactorio.
    Como proyecto paralelo puramente de aprendizaje, es lo más gratificante que he hecho, y estoy bastante orgulloso de mí mismo por seguir hasta el final. Lo recomiendo muchísimo.

    • Yo también lo hice, y me tomó tres intentos terminarlo completo.
      El otoño/invierno pasado lo combiné con la excelente serie de Ben Eater sobre cómo construir una computadora de 8 bits en protoboard; durante varios meses compré piezas en China y fui armando subsistemas durante todo el invierno a medida que llegaban.
      Para lo siguiente, vale la pena probar eso: también es muy gratificante, y ver los LED parpadeando mientras entiendes qué está pasando por dentro se ve realmente genial.
    • Al ver procesos como este y libros como Code, uno siente un profundo respeto por quienes descubrieron todo esto por primera vez.
    • Me da curiosidad cómo aprendieron los conocimientos de física del estado sólido necesarios para entender por completo el trasfondo de los dos primeros capítulos.
      Por ejemplo, el mecanismo real por el cual un circuito integrado convierte entradas en salidas útiles. No he encontrado material que explique bien cómo funciona realmente ni siquiera el circuito integrado real más simple, como el TI SN7400.
    • Hice el proyecto completo como parte de una materia, y fue una de las mejores clases que tomé en la carrera de ciencias de la computación. De verdad fue excelente.
  • Me encantó este curso y lo recomiendo mucho a cualquiera que trabaje con computadoras sin haber tomado clases de ciencias de la computación de bajo nivel.
    Te da una comprensión intuitiva de las partes clave de cómo funcionan las computadoras que influyen en los programas de alto nivel y los lenguajes de programación. Para mí, el mayor descubrimiento fue entender bien la diferencia entre la pila y el heap.
    También se siente casi mágico ver cómo, al ir apilando circuitos simples, se construyen las máquinas complejas que usamos; y los docentes logran que captes rápidamente la esencia de temas como el lenguaje ensamblador sin simplificar en exceso contenidos que podrían ocupar varios semestres.
    Si tienes tiempo, lo recomiendo mucho. La parte 1, desde compuertas NAND hasta construir una CPU, es divertida y bastante sencilla; pero la parte 2, pasar de una computadora a un sistema operativo completo, implica mucho más trabajo.

    • Me pregunto si el curso en línea y el libro son el mismo material.
      Estoy tratando de decidir si se necesitan ambos o si con uno basta.
  • Recomiendo muchísimo este curso/libro.
    Si lo haces hasta el final, la recompensa es enorme.

  • Después de terminar la excelente serie de Ben Eater sobre una computadora de 8 bits (https://eater.net/8bit/), pasar a nand2tetris fue una transición muy natural.
    Te ayuda a entender de verdad conceptos básicos del diseño de computadoras que a menudo se pasan por encima, y es un proyecto ideal para empezar en vacaciones.

    • Coincido con la recomendación de Ben Eater.
      Me gustan sus videos, en especial los episodios donde introduce los bucles y las interrupciones.
      Fue muy satisfactorio ver cómo el código que había escrito se reescribía de forma mucho más elegante usando esos conceptos.
    • El verano pasado hice la computadora 6502 de Ben Eater, y también la recomiendo.
      Ahora tendré que echarle un vistazo a NAND to Tetris.
    • Hice nand2tetris cuando estaba en Recurse, y en esa época también veía mucho a Ben Eater.
      Las dos cosas combinaban muy bien.
  • Hay un juego divertido inspirado en este curso: https://nandgame.com/

    • También hay uno aún más divertido, con reseñas abrumadoramente positivas en Steam: https://store.steampowered.com/app/1444480/Turing_Complete/
    • Aunque son un poco distintos, también recomiendo TIS-100 y Shenzhen IO.
      Ambos se basan en escribir en lenguajes parecidos al ensamblador, y son muy entretenidos de aprender.
  • Si estás tratando de entender las computadoras a un nivel más bajo, también recomiendo el curso Digital Design and Computer Architecture de ETH Zürich.
    https://www.youtube.com/playlist?list=PL5Q2soXY2Zi-EImKxYYY1...

    • Esto es una mina de oro.
      Tomé una clase introductoria de arquitectura de computadoras, pero lamentablemente no llegó muy lejos, y no cubrió en absoluto la magia que hacen las CPU modernas, como la ejecución fuera de orden.
      Creo que esta lista de reproducción será mi tema para estas vacaciones.
  • Tengo buenos recuerdos de este libro y de la época en que lo tomé.
    Estaba tomando café con mi novia y le comenté que había leído que se podían construir todas las compuertas lógicas usando solo NAND. Nos dio curiosidad y empezamos a escribir NAND en varias servilletas para ver si podíamos derivarlas todas.
    Al final lo logramos y fue muy divertido.
    Cada vez que construíamos una compuerta con NAND, escribíamos el nombre de la nueva compuerta en la servilleta, y me llevé esas servilletas y esa emoción a casa. Unos días después intenté combinar esas compuertas hasta deducir una ALU completa.
    En el proceso aparecieron multiplexores y varias cosas interesantes; al final me quedé atorado, pero como ya había oído hablar de este libro, decidí pedirlo.
    Los capítulos posteriores me ayudaron muchísimo a entender el bajo nivel, que siempre me había parecido misterioso viniendo solo de experiencia en software.
    Eso sí, nunca llegué a construirlo todo hasta el final.
    Cuando entré en la parte de software de bajo nivel, sentí que ya entendía lo suficiente y el trabajo práctico me atraía menos, pero solo leerlo ya fue excelente.

  • También está este repositorio de george hotz, que es bastante interesante.
    https://github.com/geohot/fromthetransistor

    • Al principio no estaba seguro de qué estaba viendo.
      No hay material, solo un esquema general de un curso hipotético, pero si miras los commits iniciales queda más claro.
      “Lo escribí hace unos años y quería subirlo a internet. Contratar es difícil; gran parte de la educación moderna en ciencias de la computación es bastante mala, y es demasiado difícil encontrar gente que entienda el stack de computación moderno desde primeros principios. Quizá algún día, si vuelvo a tener 12 semanas libres, lo ofrezca como un curso para seguir desde casa. Yo también quiero jugar.”
    • Me parece curiosa la frase de que la educación moderna en ciencias de la computación es mala.
      En la licenciatura no estudié CS sino ingeniería en computación, y vimos alrededor del 80% de los temas de esa lista.
      Tomé varias materias de Verilog y sistemas operativos, y también trabajamos bastante con microcontroladores/FPGAs.
      Lo más destacado, por lejos, fue construir una CPU en Verilog y luego escribir un ensamblador/compilador.
      Fue un programa difícil, pero al graduarme sentí que entendía bastante bien todo el stack.
      Quizá él simplemente no conoce bien el lado de ingeniería en computación.
  • Me pregunto si la precuela “sand2nand” también sería posible como proyecto DIY.

  • Tomé este curso con ánimo ligero cuando trabajaba como analista de datos, y terminó siendo el punto de partida de un cambio de carrera.
    Es un curso realmente excelente; si tienes tiempo, recomiendo mucho hacerlo.

    • Felicitaciones.
      Me da curiosidad si te moviste hacia un camino de programación de más bajo nivel.