情報工学工房dopal.cs.uec.ac.jp/okamotoy/lect/2017/kobo/iel2017...androidプログラミング(寺田実)...

31
情報工学工房 どの学年どの類・学科でも取れる 工房スタイルの授業 http://pr.cei.uec.ac.jp/kobo 2017/ とりまとめ役: 岡本 吉央 [email protected] 西4-206

Upload: others

Post on 12-Mar-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 情報工学工房dopal.cs.uec.ac.jp/okamotoy/lect/2017/kobo/iel2017...Androidプログラミング(寺田実) •希望人数:8名+α •必要技能:何かのプログラミング言語が使えること

情報工学工房

どの学年どの類・学科でも取れる

工房スタイルの授業

http://pr.cei.uec.ac.jp/kobo2017/

とりまとめ役:岡本吉央

[email protected] 西4-206

Page 2: 情報工学工房dopal.cs.uec.ac.jp/okamotoy/lect/2017/kobo/iel2017...Androidプログラミング(寺田実) •希望人数:8名+α •必要技能:何かのプログラミング言語が使えること

情報工学工房とは?

授業じゃないような授業

プログラミング中心

出る杭を伸ばす

Page 3: 情報工学工房dopal.cs.uec.ac.jp/okamotoy/lect/2017/kobo/iel2017...Androidプログラミング(寺田実) •希望人数:8名+α •必要技能:何かのプログラミング言語が使えること

今年度のテーマ

• 不確定ゲームAIを作ろう!• SageMath/Pythonによる実験数学• 競技プログラミング• データ解析と機械学習• Androidプログラミング• FPGA• Unityによる物理計算アプリ• ミニ四駆AI• プロジェクトオイラーに挑戦• Tensorflow/Chainerによる深層学習• ポスト「京」に備えてARMアセンブラを学ぶ

Page 4: 情報工学工房dopal.cs.uec.ac.jp/okamotoy/lect/2017/kobo/iel2017...Androidプログラミング(寺田実) •希望人数:8名+α •必要技能:何かのプログラミング言語が使えること

注意点• 教員毎にテーマがありテーマ毎に活動します

• 指導方針は教員によってかなり違います– 例1:前半は講義形式、後半は自由に開発

– 例2:最初から自分でやるが教員も同席

• 通年でやり通せるかよく考えて下さい– 開講曜限は教員により違います

– 履修登録は教員が行い、基本的に途中で取り消しはしません

• 発表に積極的に参加して下さい– 調布祭、最終発表会

– 各テーマでの対外的な大会

Page 5: 情報工学工房dopal.cs.uec.ac.jp/okamotoy/lect/2017/kobo/iel2017...Androidプログラミング(寺田実) •希望人数:8名+α •必要技能:何かのプログラミング言語が使えること

スケジュール• 4/11 : 説明会• 4/20 : テーマ希望調査終了• 4月末:テーマ決定• 5月初旬~中旬:テーマ毎の活動開始

– 担当の先生から初回の集合日時・場所を連絡– UECアカウントのメールに連絡が行くので読めるように

• 5月下旬:履修登録• 11月:調布祭 (オープンキャンパス)における展示

– ポスター、デモ

• 2月:最終発表– 全テーマが集まり発表会

• その他テーマ毎に大会に出たりするところもある

Page 6: 情報工学工房dopal.cs.uec.ac.jp/okamotoy/lect/2017/kobo/iel2017...Androidプログラミング(寺田実) •希望人数:8名+α •必要技能:何かのプログラミング言語が使えること

テーマ希望調査

• Webclassを使って行います(4/20 23:59まで)

– https://webclass.cdel.uec.ac.jp/

• 登録方法

–右下の「参加可能なコース」の中から「H29 情報工学工房」を選んで、メンバーに

–金曜5限に「H29 情報工学工房」が出現

–それを選んで、「テスト/アンケート」 の欄にある「テーマ希望調査」を選んで入力(パスワード:IEL2017)

–第3希望まで入力可。アピール文は任意(希望集中時の決定に影響を与える可能性あり)

Page 7: 情報工学工房dopal.cs.uec.ac.jp/okamotoy/lect/2017/kobo/iel2017...Androidプログラミング(寺田実) •希望人数:8名+α •必要技能:何かのプログラミング言語が使えること

テーマ決定

• 情報工学工房のWebページにて (4/30 までに)

– http://pr.cei.uec.ac.jp/kobo2017/

• 調整のための連絡

– 4/21以降、UECメールに届く可能性があるので注意して下さい

• その後はテーマ別の活動

Page 8: 情報工学工房dopal.cs.uec.ac.jp/okamotoy/lect/2017/kobo/iel2017...Androidプログラミング(寺田実) •希望人数:8名+α •必要技能:何かのプログラミング言語が使えること

履修登録

• 履修登録 (5月)

–教員が行います

• 科目区分

– I類:類専門科目 (選択科目)

– I科:専門科目 (選択科目)

– II類,III類,J科,M科,S科:共通単位

– K課程:#科目

Page 9: 情報工学工房dopal.cs.uec.ac.jp/okamotoy/lect/2017/kobo/iel2017...Androidプログラミング(寺田実) •希望人数:8名+α •必要技能:何かのプログラミング言語が使えること

今年度のテーマ

• 不確定ゲームAIを作ろう!• SageMath/Pythonによる実験数学• 競技プログラミング• データ解析と機械学習• Androidプログラミング• FPGA• Unityによる物理計算アプリ• ミニ四駆AI• プロジェクトオイラーに挑戦• Tensorflow/Chainerによる深層学習• ポスト「京」に備えてARMアセンブラを学ぶ

Page 10: 情報工学工房dopal.cs.uec.ac.jp/okamotoy/lect/2017/kobo/iel2017...Androidプログラミング(寺田実) •希望人数:8名+α •必要技能:何かのプログラミング言語が使えること

不確定ゲームAIを作ろう! (伊藤毅志)

• 希望人数:概ね10名程度以内• 必要技能: C言語にある程度習熟していること• 実施時間:応相談。5,6限にやることが多いです。(参加者やTAの都合に合わせて決めます)

• 概要:コンピュータ将棋、囲碁が次々と人間のトップを超えています。確定ゲーム(不確定な要素の無いゲーム)は、一つの区切りを迎えています。次の目標として、不確定要素を含むゲームが注目を集めています。ここでは、「カーリング」と「サイコロ将棋」という二つの不確定ゲームから選択してゲームAIを作っていきます。ゲームで遊ぶ所から始め、AI大会に出場することを目標とします。

Page 11: 情報工学工房dopal.cs.uec.ac.jp/okamotoy/lect/2017/kobo/iel2017...Androidプログラミング(寺田実) •希望人数:8名+α •必要技能:何かのプログラミング言語が使えること

不確定ゲームAIを作ろう!担当教員:伊藤毅志希望人数:概ね10名程度以内必要技能:C言語にある程度習熟していること実施時間:応相談。5,6限にやることが多いです。(参加者やTAの都合に合わせて決めます)

概要:コンピュータ将棋、囲碁が次々と人間のトップを超えています。確定ゲーム(不確定な要素の無いゲーム)は、一つの区切りを迎えています。次の目標として、不確定要素を含むゲームが注目を集めています。ここでは、「カーリング」と「サイコロ将棋」という二つの不確定ゲームから選択してゲームAIを作っていきます。ゲームで遊ぶ所から始め、AI大会に出場することを目標とします。

サイコロ将棋は、5五将棋という小路盤の将棋にサイコロという不確定要素を組み合わせた新しいゲーム。2015年に伊藤毅志が

ルールを考案して商品化されています。2016年度から、AIの大会も開催されています。

<こんな人向き>・思考ゲームの基礎を知りたい人・強い思考ゲームAIを書いてみたい人・プログラミングスキルを試したい人

カーリングは「氷上のチェス」と呼ばれる高度に戦略性の高いゲーム。これをコンピュータ上で対戦できるプラットフォーム「デジタルカーリング」が伊藤毅志研究室で開発されました。

このプラットフォーム上でAIの優秀性を競

う大会が毎年開催されています。

Page 12: 情報工学工房dopal.cs.uec.ac.jp/okamotoy/lect/2017/kobo/iel2017...Androidプログラミング(寺田実) •希望人数:8名+α •必要技能:何かのプログラミング言語が使えること

SageMath/Pythonによる実験数学 (岡本吉央)

• 希望人数:10人程度

• 必要技能:プログラミングの経験があること

• 実施時間:月曜5限

• 概要:

Pythonを使用した数学ソフトウェアSageMathを使って実

験数学に挑戦する.各自の数学的素養,興味に応じて,実験数学の課題を自ら設定し,取り組む.

以下のスケジュールで進める予定である.前学期は,PythonとSageMathの基礎を学習しながら,実験数学に

対するモチベーションを高める.後学期は自ら設定した課題を解決するためのプログラミングを行う.最終回で発表会を行う.

Page 13: 情報工学工房dopal.cs.uec.ac.jp/okamotoy/lect/2017/kobo/iel2017...Androidプログラミング(寺田実) •希望人数:8名+α •必要技能:何かのプログラミング言語が使えること

SageMath/Pythonによる実験数学何をするのか

Pythonを使用した数学ソフトウェアSageMathを使って,実験数学に挑戦する

各自の数学的素養,興味に応じて,実験数学の課題を設定し,取り組む

誰に向いているのか

数学に興味がある方

プログラミングを通して,数学をもっと理解したい方

誰に向いていないのか

Pythonの勉強だけをしたい方

担当:岡本 吉央

Page 14: 情報工学工房dopal.cs.uec.ac.jp/okamotoy/lect/2017/kobo/iel2017...Androidプログラミング(寺田実) •希望人数:8名+α •必要技能:何かのプログラミング言語が使えること

競技プログラミング(岡本吉央、高橋里司)

• 希望人数:10名程度

• 必要技能:反復と再帰を用いたプログラムが作成できること

• 実施時間:火曜 16:30~18:00

• 概要:ACM国際大学対抗プログラミングコンテストなどの競技プログラミングで好成績を残すことを最終目標として,その基礎となるアルゴリズムの設計法と解析法,ならびに,的確なプログラムの作成法を鍛える.過去の大会などで出題された問題を解くためのプログラムを各自が事前に作成して,それを持ち寄り,内容を検討することでより深い理解を目指す.

この1年だけで好成績を残すだけの実力はつけられないかもしれないけれども,そのための基礎技能を養うことが1年を通しての目標である.

Page 15: 情報工学工房dopal.cs.uec.ac.jp/okamotoy/lect/2017/kobo/iel2017...Androidプログラミング(寺田実) •希望人数:8名+α •必要技能:何かのプログラミング言語が使えること

何をするのか ACM国際大学対抗プログラミングコンテストの過去問を毎週解いてアルゴリズムの設計法と解析法,プログラムの的確な作成法を体得する

易しい題材を選び,それを深く掘り下げることから始める

ACM国際大学対抗プログラミングコンテストの国内予選に参加する

使用言語:C,C++,Java のいずれか

誰に向いているのか プログラミングの実力と技能を磨きたい方

プログラミングコンテストに出てみたい方

担当:岡本吉央,高橋里司

2013年世界大会の様子

競技プログラミング

Page 16: 情報工学工房dopal.cs.uec.ac.jp/okamotoy/lect/2017/kobo/iel2017...Androidプログラミング(寺田実) •希望人数:8名+α •必要技能:何かのプログラミング言語が使えること

• 希望人数:7名以内

• 必要技能:数理やプログラム言語 (主に R or Matlab)の習得に意欲があるもの

• 実施時間:参加者の予定で決める.

• 概要:

データサイエンティストの基礎を学ぶ.データ解析を行い,様々な機械学習技術を習得する.参加者の興味に従い調整するが,例えば以下のテーマやキーワードを考えている.1. ヘルスケアデータ解析,時系列予測2. データ解析コンペティション,Kaggleを用いた実習を行う.

各テーマは,個人や数名のグループで取り組む.経営科学系研究部会連合協議会主催のデータ解析コンペティションに出場することを予定する.統計モデル、数理モデルを用いた実データのデータ解析を行い,データ解析結果の解釈や統計モデルの妥当性などについてより深い理解を目指す。

データ解析と機械学習(高橋里司、西山悠、岡本吉央)

Page 17: 情報工学工房dopal.cs.uec.ac.jp/okamotoy/lect/2017/kobo/iel2017...Androidプログラミング(寺田実) •希望人数:8名+α •必要技能:何かのプログラミング言語が使えること

データ解析と機械学習担当:高橋、西山、岡本

• 目的

– データサイエンティストの基礎を学ぶ

– データ解析を行い,様々な機械学習技術を習得する

• 何をするのか

– ヘルスケアデータ解析

– 時系列予測

– Kaggleを用いた実習

– データ解析コンペティションへの参加

• 誰に向いているのか

– 実社会のデータを分析してみたい方

– データサイエンティストを目指している方

Page 18: 情報工学工房dopal.cs.uec.ac.jp/okamotoy/lect/2017/kobo/iel2017...Androidプログラミング(寺田実) •希望人数:8名+α •必要技能:何かのプログラミング言語が使えること

Androidプログラミング (寺田実)

• 希望人数:8名+α

• 必要技能:何かのプログラミング言語が使えること

• 実施時間:火曜5限

• 概要:Androidタブレットの上で, 面白いアプリケーションを作るのを目標にします.当方でタブレットを8台貸し出します(Huawei MediaPad, ASUS ZenPad). 自前のスマートフォンやタブレットが使える, という人は希望人数の外枠(α)として受け入れる予定です. このテーマを希望する人は, 機器について, 当方用意のものを利用希望(8名枠)か, 自前の機器を利用(α枠)か,を明記してください.利用する言語はJavaですが, 初期に簡単な導入を行いますので, 何かプログラミング言語をひとつでも習得していれば大丈夫なようにします. (C, Pascal, Perl, Ruby などなど)

Page 19: 情報工学工房dopal.cs.uec.ac.jp/okamotoy/lect/2017/kobo/iel2017...Androidプログラミング(寺田実) •希望人数:8名+α •必要技能:何かのプログラミング言語が使えること

Androidプログラミング

• Android のプログラミングをやってみよう– HUAWEI MediaPad(6台)

– ASUS ZenPad(2台)

–自前のスマホやタブレットでもOK

• Java言語でプログラミング

• 開発環境は学科の教育用コンピュータ (CED)–自前のノートPCでもOK (→家でも開発できる)

• マルチタッチのゲーム、Twitterクライアント、位置情報、…

担当: 寺田 実

Page 20: 情報工学工房dopal.cs.uec.ac.jp/okamotoy/lect/2017/kobo/iel2017...Androidプログラミング(寺田実) •希望人数:8名+α •必要技能:何かのプログラミング言語が使えること

FPGA(成見哲)

• 希望人数:若干名• 必要技能:FPGAをいじったことがある、もしくは興味がある人

• 実施時間:木曜5限か金曜5限• 概要:

FPGAを使って何らかのシステムを動作させることを目標とします。最初にVerilog言語を使ってFPGAボードでLED点滅や音の生成など簡単な機能を実装します。次に、HDMIコネクタからディスプレイ信号を出力します。そして練習としてテトリスなどのゲームの機能を実装します。後半は実際にシステムを製作します。場合によってはコントローラーなどの電子工作を行うかもしれません。既にある程度ハードウェアをいじったことがある人や、FPGA設計に興味があって調べたことがある人に対し、実際にシステムを作ることをサポートします。VerilogやFPGAの勉強、シミュレーションによるバグ取りなどは参考書を見ながら各自で行って頂くものとし、教員はアドバイス程度しか行いません。

Page 21: 情報工学工房dopal.cs.uec.ac.jp/okamotoy/lect/2017/kobo/iel2017...Androidプログラミング(寺田実) •希望人数:8名+α •必要技能:何かのプログラミング言語が使えること

FPGA (成見)• FPGAとは書き換え可能な論理素子• C言語に似たハードウェア設計言語

(Verilog)を使う• 最初は簡単なビデオゲームを実装• 後半に開発を想定しているシステム例

– リアルタイム画像処理– シンセサイザ– インベーダーゲーム– ファミコンエミュレータ

• 過去の例– テトリス– オシロスコープ– ソフトウェア無線(未完成)– Picture in Picture– 簡単なCPU(未完成)– 魚眼カメラ映像の変換(未完成)

使うFPGAボードの例(Digilent社Basys3)

テトリス

オシロスコープ

Page 22: 情報工学工房dopal.cs.uec.ac.jp/okamotoy/lect/2017/kobo/iel2017...Androidプログラミング(寺田実) •希望人数:8名+α •必要技能:何かのプログラミング言語が使えること

Unityによる物理計算アプリ(成見哲)

• 希望人数:6名程度

• 必要技能:プログラミングやスクリプト言語の経験があること

• 実施時間:木曜5限か金曜5限• 概要:

ゲーム開発環境であるUnityを使ってアプリを作ります。最初に参考書やWeb上のチュートリアルを見て勉強します。次に、Unity内の物理演算機能を使って高校物理や大学初年次の物理に役立つアプリケーションを開発します。スマートフォンのセンサーを有効に使うと面白いでしょう。GearVRというHMDも3台あるので試せます。

後半は物理演算を使ったゲームや、多人数対応のアプリなど、Unityの機能を活用したアプリケーションを開発します。 TAが適宜相談に乗りますが、基本は参考書を見ながら各自で勉強するものとします。

Page 23: 情報工学工房dopal.cs.uec.ac.jp/okamotoy/lect/2017/kobo/iel2017...Androidプログラミング(寺田実) •希望人数:8名+α •必要技能:何かのプログラミング言語が使えること

Unityによる物理計算アプリ(成見)

• 前半– Unityの物理演算機能を使って物理教育(高校や大学初年次)に役立つアプリ

– GearVRを試しに使う

• 後半– 物理演算を使ったゲーム

– GearVRを使ったアプリ

– 多人数アプリ

– その他自由に

• I科の計算機室でUnity Proが使えますが人数限定

http://www.samsung.com/jp/product/gearvr/

巨大ジェンガ

斜方投射

指で操作するドラゴンゲーム

Page 24: 情報工学工房dopal.cs.uec.ac.jp/okamotoy/lect/2017/kobo/iel2017...Androidプログラミング(寺田実) •希望人数:8名+α •必要技能:何かのプログラミング言語が使えること

• 希望人数:9~10名前後

• 必要技能:乾電池のプラスマイナスがわかること、ネジまわしが使えること

• 実施時間:1回2コマ程度、曜日時刻は受講者と相談します

• 概要:

ミニ四駆AI ( https://sites.google.com/site/ai4wdcar/ )を作り、世界最速を目指します。

わずか1000円の「おもちゃ」ミニ四駆にAI技術を積み込んで賢く走らせ

ることに挑戦します。高価なモーターならば精密に動くのでソフトウェア的には簡単です。ミニ四駆のような安くて適当でガタや誤差、ちょっとした不良があるなかで、耐久度の高いソフトウェアを作ることはとても技術力がつく良い課題です。

ミニ四駆に適したコントロールボード AICHIP を搭載したミニ四駆を3人に

1台用意します。ブルートゥースでホストと通信しながら動きます。ソフトウェアでどこまで賢くできるか、みんなで工夫しながら頑張ります。カラーリングやデザインも考えましょう。プログラムはプロセッシングなど様々な方法で、わりと楽に書くことができます。

ミニ四駆AI(西野順二)

Page 25: 情報工学工房dopal.cs.uec.ac.jp/okamotoy/lect/2017/kobo/iel2017...Androidプログラミング(寺田実) •希望人数:8名+α •必要技能:何かのプログラミング言語が使えること
Page 26: 情報工学工房dopal.cs.uec.ac.jp/okamotoy/lect/2017/kobo/iel2017...Androidプログラミング(寺田実) •希望人数:8名+α •必要技能:何かのプログラミング言語が使えること

• 希望人数:とくになし• 必要技能:C言語プログラムに興味があること• 実施時間:木曜5限を予定• 概要:

Project Euler (http://projecteuler.net/)の問題を個人ごとに解いていきます。

プロジェクトオイラーは世界中から69万人が挑戦している数学プログラミング問題サイトです。現在約600問あり1問以上を解いたのは69万人ですが、100問解いた人となるとそのうちの1.44%の9千9百人しかいません。1年間で最低10問、できれば50問を解いて、世界の上位 5%を目指しましょう。

C言語を使用して、ひとりひとりのペースでじっくりと考えプログラムを作り答を出します。

基本的には各自で好きな時に好きなだけ問題を解きます。実施時間内では、サイト登録のしかたやプログラミングの基礎から、解答に役立つテクニックなどを相互に勉強します。特定の問題の解答・解説等は一切しません。

プロジェクトオイラーに挑戦(西野順二)

Page 27: 情報工学工房dopal.cs.uec.ac.jp/okamotoy/lect/2017/kobo/iel2017...Androidプログラミング(寺田実) •希望人数:8名+α •必要技能:何かのプログラミング言語が使えること
Page 28: 情報工学工房dopal.cs.uec.ac.jp/okamotoy/lect/2017/kobo/iel2017...Androidプログラミング(寺田実) •希望人数:8名+α •必要技能:何かのプログラミング言語が使えること

• 希望人数:8名以内• 必要技能:プログラミングの経験があること.Python経験者,もしくはPythonを独学で学ぶことができる人.

• 実施時間:木曜日5,6限 (履修者の都合で変更の可能性あり)

• 概要:本テーマでは,深層学習(ディープラーニング)の基礎と,フレームワークを用いた プログラミングを学習し,最終的に深層学習を応用したシステムを構築します. フレームワークには,PythonベースのTensorflowかChainerを利用し,CEDもしくは 人工知能先端研究センター(AIX)のGPU計算機を利用してプログラミングを行う予定です.最終的な課題は,参加者のやる気と実力に応じて設定します.例えば, 意味的な画像変換システム,自動学習ゲームプレイヤーなどを考えています. TA中心で実施します.

Tensorflow/Chainerによる深層学習(柳井啓司)

Page 29: 情報工学工房dopal.cs.uec.ac.jp/okamotoy/lect/2017/kobo/iel2017...Androidプログラミング(寺田実) •希望人数:8名+α •必要技能:何かのプログラミング言語が使えること

Tensorflow /Chainer による深層学習

• 3ステップで深層学習を用いた新しいシステムの開発!

基礎的な座学プロトタイプ作成

新システム開発

• 深層学習の理論• 赤本(ゼロから作る)• CS231n(stanford)

• フレームワーク学習• Chainer, Tensorflow

• 面白そうなモノを作る • 調布祭展示に向け磨きをかける!更には…• OSS化…?• 論文投稿…!?

例: 線画着色

• 嬉しい特典• 人工知能先端研究センターのGPUが使える!• 深層学習を用いた新しいシステムの開発経験!• フレームワークが使えるようになる!

4〜7月 8〜9月 10月〜

例: 画像生成

Kerasも使うよ!

深層強化学習もOK!

ゲームAIもOK!

初級中級上級

システム開発座学

※レベル別開講※初心者もOK?※プログラム経験者

Page 30: 情報工学工房dopal.cs.uec.ac.jp/okamotoy/lect/2017/kobo/iel2017...Androidプログラミング(寺田実) •希望人数:8名+α •必要技能:何かのプログラミング言語が使えること

•希望人数:とりあえず制限無し。

•必要技能:コンパイラが吐くコードと比較したいので、C言語でプログラムが書けること。

•実施時間:一応金曜16:15以降を予定していますが、参加者の予定で決めます。

•概要:スマホから「京」コンピュータの次世代機まで、ARMプロセッサはあらゆる規模の計算機で使われています。この工房ではRaspberry Pi 3を使ってARMの64ビットアセンブラを学び、Cコンパイラに頼らずARMの性能を引き出すプログラミングを目指します。http://numericalbrain.org/lectures/armasm/

ポスト「京」に備えてARMアセンブラを学ぶ(山﨑匡)

Page 31: 情報工学工房dopal.cs.uec.ac.jp/okamotoy/lect/2017/kobo/iel2017...Androidプログラミング(寺田実) •希望人数:8名+α •必要技能:何かのプログラミング言語が使えること