5 pontos por GN⁺ 2023-12-23 | 1 comentários | Compartilhar no WhatsApp
  • O Nand2Tetris fornece materiais para estudantes que querem entender sistemas computacionais do zero, construindo eles mesmos um sistema computacional de uso geral e as camadas modernas de software
  • Aulas, materiais de projeto e ferramentas estão reunidos em um só lugar e podem ser usados gratuitamente como open source em ambientes sem fins lucrativos
  • Este curso é usado em mais de 400 universidades, escolas de ensino médio e bootcamps, com alunos que vão de estudantes do ensino médio a doutorandos e engenheiros sêniores
  • Quem estuda por conta própria pode seguir as notas de aula e a seção Projects no site, e no Coursera é possível fazer o curso pago e obter um certificado oficial
  • A estrutura atende tanto ao aprendizado individual quanto a aulas em instituições de ensino, e instrutores podem receber materiais adicionais mediante contato separado

Materiais de estudo para construir um computador do zero

  • O site oficial dos cursos Nand to Tetris reúne os materiais necessários para construir do zero um sistema computacional de uso geral e as camadas modernas de software
  • Os materiais são compostos por aulas, materiais de projeto e ferramentas, voltados para estudantes, instrutores e autodidatas
  • O livro relacionado é The Elements of Computing Systems, de Noam Nisan e Shimon Schocken
  • Os materiais do CACM relacionados ao curso são oferecidos em texto e vídeo

Caminhos de estudo e uso em contextos educacionais

  • O curso Nand to Tetris é ensinado em mais de 400 universidades, escolas de ensino médio e bootcamps
    • Os participantes incluem desde estudantes do ensino médio até doutorandos e engenheiros sêniores
    • É possível ver o plano de ensino expandido de uma versão acadêmica típica do curso
  • O estudo livre pode ser feito seguindo as notas de aula e a seção Projects no site
  • O curso no Coursera é pago e oferece certificado oficial
  • Materiais adicionais para instrutores podem ser obtidos entrando em contato por nand2tetris@gmail.com

1 comentários

 
GN⁺ 2023-12-23
Comentários do Hacker News
  • Quando tentei pela primeira vez, 7 anos atrás, depois de me formar na faculdade, só fui até o capítulo 2; foi muito gratificante, mas larguei por causa de outros projetos paralelos
    Recomecei há 3 meses e agora estou no capítulo 8, tendo concluído portas lógicas, a ALU, a CPU, o assembler e metade da máquina virtual; em cada capítulo eu pensava “como isso pode funcionar?”, mas quando de fato funciona é extremamente satisfatório
    Como projeto paralelo puramente de aprendizado, foi o mais gratificante que já fiz, e tenho bastante orgulho de mim mesmo por ter seguido até aqui, então recomendo fortemente

    • Eu também fiz, e levei três vezes para terminar tudo
      No outono/inverno passado, fiz em paralelo a excelente série do Ben Eater montando um computador de 8 bits em breadboard, e passei alguns meses comprando peças da China e montando subsistemas ao longo do inverno conforme elas chegavam
      Vale a pena fazer isso depois; também é muito gratificante, e é muito legal ver LEDs piscando e entender o que está acontecendo por dentro
    • Quando vejo cursos assim e livros como Code, sinto um profundo respeito pelas pessoas que descobriram isso pela primeira vez
    • Fico curioso sobre como aprenderam a física do estado sólido necessária para entender completamente o contexto dos dois primeiros capítulos
      Por exemplo, o mecanismo real pelo qual circuitos integrados transformam entradas em saídas úteis; nunca encontrei um material que explicasse direito como até o circuito integrado real mais simples, como o TI SN7400, realmente funciona
    • Fiz o projeto inteiro como parte de uma disciplina, e foi uma das melhores matérias que tive no curso de ciência da computação, realmente excelente
  • Gostei muito desse curso e recomendo fortemente para quem trabalha com computadores sem nunca ter feito uma disciplina de ciência da computação de baixo nível
    Ele dá uma compreensão intuitiva das partes centrais de como computadores funcionam que afetam programas de alto nível e linguagens de programação; pessoalmente, meu maior insight foi realmente entender a diferença entre stack e heap
    Também parece quase mágico como circuitos simples continuam sendo empilhados até formar as máquinas complexas que usamos, e os professores conseguem fazer você captar rapidamente a essência de temas como linguagem assembly sem simplificar demais um conteúdo que facilmente daria vários semestres
    Se você tiver tempo, recomendo muito; a parte 1, do gate NAND até construir uma CPU, é divertida e relativamente fácil, mas a parte 2, do computador até um sistema operacional completo, dá muito mais trabalho

    • Fico curioso se o curso online e o livro são o mesmo material
      Estou tentando decidir se preciso dos dois ou se um só basta
  • Recomendo fortemente esse curso/livro
    É muito gratificante ir até o fim

  • Depois de terminar a excelente série de computador de 8 bits do Ben Eater (https://eater.net/8bit/), a transição para nand2tetris pareceu muito natural
    Isso realmente ajuda a entender conceitos fundamentais de projeto de computadores que muitas vezes são tratados de forma superficial, e é um projeto perfeito para começar num feriado

    • Concordo com a recomendação do Ben Eater
      Gosto dos vídeos dele, especialmente os episódios sobre introdução de loops e introdução de interrupções
      Foi muito satisfatório ver o código que ele escreveu sendo refeito de forma bem mais elegante com esses conceitos
    • No verão passado fiz o computador 6502 do Ben Eater, e isso também vale a recomendação
      Agora preciso dar uma olhada no NAND to Tetris também
    • Fiz nand2tetris quando estava na Recurse, e naquela época também assisti muito Ben Eater
      Os dois combinaram muito bem
  • Existe um jogo de NAND divertido inspirado neste curso: https://nandgame.com/

    • Também existe outro ainda mais divertido, com avaliações extremamente positivas na Steam: https://store.steampowered.com/app/1444480/Turing_Complete/
    • É um pouco diferente, mas também recomendo TIS-100 e Shenzhen IO
      Ambos usam uma espécie de linguagem parecida com assembly, e são muito divertidos de aprender
  • Se você está tentando entender computadores em um nível mais baixo, também recomendo o curso Digital Design and Computer Architecture da ETH Zürich
    https://www.youtube.com/playlist?list=PL5Q2soXY2Zi-EImKxYYY1...

    • Isso é uma mina de ouro
      Fiz uma disciplina introdutória de arquitetura de computadores, mas infelizmente ela não foi muito longe e não cobriu em nada a mágica de CPUs modernas, como execução fora de ordem
      Acho que este feriado vai ser dedicado a essa playlist
  • Tenho boas lembranças deste livro e da época em que o peguei para ler
    Eu estava tomando café com minha namorada quando disse que tinha lido que era possível fazer todas as portas lógicas usando apenas NAND; isso despertou nossa curiosidade, e passamos por vários guardanapos rabiscando NAND para ver se conseguiríamos derivar todas elas
    No fim conseguimos, e foi muito divertido
    Cada vez que derivávamos uma nova porta a partir de NAND, eu escrevia o nome dela no guardanapo; levei esses guardanapos e essa diversão para casa e, alguns dias depois, tentei combinar essas portas para finalmente descobrir uma ALU inteira
    Nisso apareceram multiplexadores e várias outras coisas interessantes, e no fim eu travei, mas como já tinha ouvido falar desse livro, resolvi encomendá-lo
    Os capítulos seguintes realmente me ajudaram a entender o nível mais baixo, que sempre me pareceu misterioso por eu só ter experiência com software
    Mas na prática nunca cheguei a construir tudo até o fim
    Quando entrou na parte de software de baixo nível, senti que já entendia o suficiente, então o trabalho em si perdeu um pouco do apelo para mim, mas mesmo só lendo já valeu muito a pena

  • Também existe este repositório do george hotz, e é bem interessante
    https://github.com/geohot/fromthetransistor

    • No começo eu não tinha certeza do que estava vendo
      Não há material, só um esboço geral de um curso hipotético, mas olhando os commits iniciais fica mais claro
      “Escrevi isso alguns anos atrás e queria colocar online. Contratar é difícil, grande parte da educação moderna em ciência da computação é realmente ruim, e é muito difícil encontrar pessoas que entendam a stack moderna de computadores a partir dos primeiros princípios. Talvez algum dia, se eu tiver 12 semanas livres de novo, eu ofereça isso como um curso para fazer em casa. Eu também quero brincar.”
    • É engraçada essa ideia de que a educação moderna em ciência da computação é ruim
      Na graduação eu não fiz CS, e sim engenharia da computação, e cobrimos algo como 80% dos tópicos daquela lista
      Fiz várias disciplinas de Verilog e sistemas operacionais, e também mexi bastante com microcontroladores/FPGAs
      O grande destaque foi construir uma CPU em Verilog e depois escrever um assembler/compilador
      Foi um curso difícil, mas quando me formei senti que tinha uma compreensão bem boa da stack inteira
      Talvez ele simplesmente não conheça muito bem o lado de engenharia da computação
  • Fico curioso se a prequela, “sand2nand”, também seria viável como projeto DIY

  • Fiz esse curso meio sem compromisso quando trabalhava como analista de dados, e ele acabou sendo o gatilho para uma mudança de carreira
    É um curso realmente excelente, então se você tiver tempo, vale muito a pena fazer

    • Parabéns
      Fico curioso se você migrou para um caminho mais voltado a programação de baixo nível