このテーマでは3年生前期のコンピュータアーキテクチャⅡの講義で勉強したプロセッサを実際に設計してみる演習です.演習ではC言語で論理回路の内容を記述することができるHLS(High Level Synthesis)ツールというものを使用します(そのためVerilog-HDLが分からなくても大丈夫です).この演習では,加算器などの簡単な論理回路の記述方法から始まり,ALU, レジスタファイル,プロセッサと徐々にステップアップしながら記述方法の学習を進めることができますので,コンピュータアーキテクチャⅡを受講していないけど,論理回路設計に興味がある人でも歓迎します.
コンピュータ・アーキテクチャの授業の教科書「ディジタル回路設計とコンピュータアーキテクチャ 第2版」にSystem Verilogのコードが掲載されているプロセッサを,実際にFPGAボード上で動かしてみます.余裕がある人は,プロセッサ以外の周辺回路を追加したシステムの構築や,ソフトウェアの開発環境の整備にも挑戦してみて下さい.
本格的にSystem Verilogなどハードウェア記述言語でプロセッサの設計を行ってみたい人
メーカ(Xilinx)が提供するプロセッサIPを使い,比較的簡単な方法で,部品を組み合わせるようにして,FPGAボード上で実際に動作するシステムを設計します.また,メーカ提供のソフトウェア開発環境(SDK)を使って,作成したシステムのための組み込みプログラミングを行います.余裕がある人は,周辺回路の追加やOSの稼働にも挑戦してみてください.高位合成ツールを使いC言語で追加部品を作ることもできます.
提供されているツールを使い,比較的簡単な方法で,システム構築をしたり,組み込みプログラミングをしてみたい人
プログラミングは骨の折れる作業で(あることもありま)す.ネットで調べ物をして小技を集めても,自分の手元にあるプログラムをどのように書き換えればよいのかすぐには分からないこともあります.私たちは,そんな,プログラミングでよくある苦労を解消してくれるシステムを開発しています.このシステムを使えば,組み込みたい機能を検索して,出てきた候補を「選ぶ」だけで,手元のコードを整えていくことができます.世界の人々のプログラミング経験を寄せ集めることで実現される,新しいタイプのプログラミングを,体験してみませんか.
Androidプログラミングで苦労したことがある人.
プログラムが正しく動くことを保証することは非常に重要です.例えば,数値の列を昇順に並べ換えるプログラムを作ったならば,どんな入力に対しても昇順に並べ替えてくれるようになっていなければ困ります.このテーマでは,「証明支援システム」の助けを借りてプログラムの性質を保証する,ということを体験します.
プログラムの性質の証明に興味を持っている人.証明支援系や関数型言語など,新しいものをパズル感覚で楽しめる人.
プログラミングには様々なスタイルがあります.このテーマでは,おそらくみなさんがあまり触れたことのないであろう考え方に基づくプログラミングを体験してもらいたいと思っています.例えば,関数型言語の一つであるHaskellを使うと,教科書に載ってそうな数式をいくつか書いただけでプログラムが出来上がります.また,「無限」の大きさのデータを手軽に扱うこともできます.プログラミングはもう十分と思っている人も,苦手だと思い込んでいる人も,新鮮な体験ができると思います.
プログラミングについて何らかの思いを持っている人なら誰でも.
機械学習の入門書「ゼロから作るDeep Learning」を使って演習を行います.この演習ではpythonというプログラミング言語を使って,簡単な手書き文字認識のプログラムを作成してみます.この演習を通して,機械学習の実問題への適用法,学習や推論に必要となるコンピュータ上での長時間の処理の高速化などを学びます.
人工知能,機械学習,ニューラルネットワーク,Deep Learning(深層学習)などの技術,pythonを用いたプログラミング,プログラムの実行の高速化などに興味がある人を対象とします.