Coursera - Nand2Tetris I

2020/11/25

El último mes y medio estuve haciendo el curso Nand2Tetris I en Coursera.

Una buena impresión general.

Según los instructores no es necesario saber programar y realmente puede seguirse el curso sin problemas.

Se hace mucho énfasis en la abstracción entre capas y las diferencias entre interfaz e implementación a nivel de hardware.

El Hardware description language diseñado por los instructores y utilizado en el curso es realmente sencillo y como estos lo indican es posible de aprender en unas horas, es simple y potente.

Una ayuda dada es que todos los circuitos integrados a implementar durante las pruebas ya están diseñados y es nuestra tarea sobreescribirlos, lo cual facilita el desarrollo ya que utilizando los circuitos brindados podemos aislar los errores si estos llegan a ocurrir. Otra ventaja enorme es que se brindan tests para realizar a los circuitos implementados, de forma tal de aumentar la confianza en el funcionamiento de la implementación.

Sobre la estructura de la CPU, se utiliza la arquitectura Harvard y la ALU es bastante primitiva. Nuevamente, el publico objetivo no requiere tener conocimientos de programación, así que no pidamos peras al olmo.

Respecto al lenguaje ensamblador, Hack, simplemente horrible. Es muy poco expresivo, ya que como comentan los instructores, es muy sencillo ya que también se desprende de la CPU. A mi criterio una pérdida de tiempo ya que no es útil ni se asemeja a ningun lenguaje ensamblador conocido. Eso si, para entender como escribir instrucciones creo que cumple su cometido.

Sin duda la parte que más me gustó fué el la última, Project 6: Assembler, que consiste en crear un ensamblador. Mi elección fué utilizar expresiones regulares con perl. El programa se encuentra en el archivo assembler.pl.

Como no podía faltar, la imagen del diploma:

certificado