nand2tetrisを受講した

f:id:paging:20180226130723j:plain corseraでnand2tersisを受講しました。そのまとめです。

nand2tetrisとは

公式ページ: The Elements of Computing Systems / Nisan & Schocken

coursera: Build a Modern Computer from First Principles: From Nand to Tetris (Project-Centered Course) | Coursera

nand2tersisとは簡単に言えば「0から作るコンピューター入門」です。 これはMOOCの一つで、ヘブライ大学のShimon Schocken教授とNoam Nisan教授が行うこの授業をオンラインで受けることができます。

具体的には以下のようなことができます

  • HDLを使ってNANDから基本的な組み合わせ回路(加算器, ALU, MULなど)やフリップフロップなどを実装する
  • 基本的な回路を組み合わせてHDLでCPUの実装
  • アセンブリを用いてプログラミング(簡単な演算から画面出力まで)
  • アセンブラの作成
  • スタックマシンの作成

nand2tetrisができた経緯のスピーチがTEDにあります。興味がある方は一度見てみるといいかもしれません。 Shimon Schocken: The self-organizing computer course | TED Talk

また、資料等は無料で配布されており公式ページから見ることができます(英語)。

そしてこの資料は本にもなっており、日本語版は「コンピュータシステムの理論と実装」というタイトルでオライリーから発売されています。

コンピュータシステムの理論と実装 ―モダンなコンピュータの作り方

コンピュータシステムの理論と実装 ―モダンなコンピュータの作り方

Corsera上で講義はWeek1からWeek6まで6つの講義に分かれており、それぞれに課題があります。課題のポイントが80%を切る場合は講義修了時の証明書が発行されません。 この課題がよくできており、課題を自分の力で解くことによりコンピュータに関する知識が深く身につくように構成されています。 なお、上で紹介した本には課題がついていないので、しっかり身に付けようと思うのならばCorseraで受講することをお勧めします。

f:id:paging:20180226122911p:plain

感想

なかなか難しい論理回路とコンピュータアーキテクチャの実践を体験できてコンピューターを学ぶ上で非常にためになりました。上述の通り課題がとてもよくできており、実際に自分が組んだCPUが動いた時は感動してずっとテストを動かしていた程です。

持っててよかった論理回路入門。序盤、この本にはかなり助けられました。nand2tetrisを受講するにあたって必読と言ってもいいのではないでしょうか。

論理回路入門

論理回路入門

講義は以下のような流れで進みます

  • その週のテーマに沿って教授2人が解説
  • たまに例題が出る
  • 講義後半からは実際にシミュレーターの画面を映して実験
  • 課題を解く

私は一日二時間の時間をとって進めました。大体一講義三時間なので、一日目に講義を見て二日目残りの講義を見た後で課題を解き始めて終わったら次の講義を見て・・・という順にやっていったところ約一ヶ月半で修了することができました。

今までハードウェアに縁がなかったけど興味はある、という方には非常にオススメできる講義です。