デジタル人材の育成
ご応募ありがとうございました。
TDD+モブプログラミング
本講義ではTDDとモブプログラミングを体験、練習します。未体験の方も、実績のある2つの手法を学んでプログラミング力を高めることができます。 TDDはTest-Driven Developmentの略です。これは、実装より先にテストコードを書くことを基本とする開発の進め方です。先にテストを作成するということは、先に関数やモジュールの入出力、挙動を設計するということです。また、テストを先に作ることで、テスト可能な実装を強制することができ、ソフトウェア品質を上げることが可能です。 モブプログラミングは複数人で1台のパソコンを使ってコーディングする開発技術です。実際に試したことのある人は少ないかもしれませんが、とても実用的な技術です。1人がドライバー、その他がナビゲーターに分かれ、ナビゲーターの指示によってドライバーがコーディングします。チーム全体でコードの内容について共通の理解を得ることができ、知識の共有、スキル伝達などを達成できる手法です。 本講義では、TDDにモブプログラミングを組み合わせてソフトウェアを開発する方法を学びます。始めから終わりまで一通り体験し、他の現場で応用できる力を身につけます。
自分の知識をアウトプットしよう
現代では知識のインプットのやりかたや重要性を教わることが多い。しかし変動が続いている現代において、インプットだけでなく自分の情報をアウトプットすることの重要さも明らかになってきている。本講義では、自分が持っている情報を(1)列挙し(2)整理し(3)考えて(4)アウトプットする方法を伝える。
CanSatをはじめよう
CanSat開発を通じて組み込みソフトウェアの基礎、ハードウェアを制御する難しさと楽しさを学びます。CanSatとは空き缶サイズの模擬人工衛星のことを指します。今回は講師の制作したローバータイプのCanSat開発キット(100kinSAT,https://100kinsat.github.io/about/)を使用し、惑星探査をするために必要となる、目標地点への自律誘導プログラムを考えてもらいます。各種センサーの特徴を理解する必要性やそれらの制御プログラムへの反映方法など、ソフトウェアのみの開発ではわからないハードウェア開発の困難さと面白さを体感することを目指します。 宇宙に興味が無くとも、電子工学、小型ロボットなどの分野に興味のある方も楽しめる内容かと思います。
怪電波を解読せよ(RF Hack)
電波を用いた通信は常に傍受、改ざん、妨害、偽装の脅威にさらされている。 今回の講義では、世界各地の海軍、陸軍、大使館、インターポールの情報発信、アメリカ合衆国沿岸警備隊などの通信で用いられている周波数偏移変調方式の複合方法を講義する。 上にあげた組織の通信を傍受するためにはそれなりの無線施設が必要なので、本講義のワークショップではサンプルの周波数偏移変調方式の音声ファイルを用意した。受講者はこれをプログラミングを駆使して複合化してほしい。 電波を用いたデジタル通信の理解を深めるとともに、それらの脅威に対する新たた視点と対策についても議論したい。 https://github.com/imaoca/RTTY
形式手法を知ろう
形式手法とは、システムが期待された動作をすることを保証するものであり、社会インフラや航空宇宙分野など高い信頼性が要求されるシステムを開発する際に使用されることが多い。例えば、Felicaシステムのファームウェアの仕様策定では形式的仕様記述言語VDMが使用され、JAXAでは宇宙機ソフトウェアに対する検証としてモデル検査器SPINが使用された。また、学術用途では四色定理などが定理証明支援系Coqにより証明された。 本講義では型システムを始めとする形式手法に触れ,使用されるツールの体験を目的とする。具体的には、定理証明支援系に用いられている依存型、自動定理証明に用いられているSAT/SMTソルバ,プログラムの記述からそのプログラムの振る舞いの検査、証明を行うモデル検査、ホーア論理などを対象とする。
低レベルGPUプログラミング
GPUはグラフィック計算の他にAIや画像処理に幅広く利用されている. GPUのプログラミングはCUDA/OpenGL/OpenCL等,半導体企業が用意した高級な言語での開発が主流である. また,特殊なプロセッサ構造をしていることから低レベルプログラミングの難易度は高く,知見も少ない. そこで,本講義ではGPUの詳細なリファレンスが公開されているRaspberry Piでアセンブリ言語・機械語レベルの低級GPUプログラミングを通してCPUとは違うGPUの内部構造を学習する. その上で,皆さんにテーマを決めていただき,Raspberry Piの特徴を活かしたGPUソフトウェア実装を探求してもらう. その結果から,アーキテクチャを意識したGPUプログラミングで得られる価値についてディスカッションを行いたいと思う. 皆さんとGPUの新たな活用を議論することを楽しみにしている.
インプット駆動型アイディアソン
新しいアイディアは,新たな知見を得たときに,それが既存の知識と組み合わさることで出ることが多くあるように思います. 他講義で得られた様々な分野についてのインプットや実験・作成したサンプル・プロトタイプ等を再確認し,そこから得られる新たな知見を応用したり自身の既知の技術と組み合わせることで,何か新しいものづくりへのアイディアを考えます.