U-16プログラミングコンテスト CHaser を利用したプログラミング指導

290 Views

February 21, 18

スライド概要

2018/02/10(日) 旭川藤女子高等学校で開かれた,北海道高等学校教育研究会情報部会キャラバン研究会(旭川) で使用した資料です.

詳細は → https://bitbucket.org/tomio2480/chaser_python/src/default/

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

U-16 プログラミング コンテスト CHaserを利用したプログラミング指導 北海道富良野緑峰高等学校 電気システム科 西原翔太

2.

略歴 • 1991年 誕生 • 旭川市立緑が丘中→旭川工業高→北見工大 • 旭工>情報技術科,北見工大>電気電子工学科 • 電子回路製作,プログラミング,生体医工学 • 草の根的な勉強会活動 • 北見 : Ohotech (おほてく) • 旭川 : ゆるい勉強会 • 富良野 : FuraIT (ふらいと)

3.

https://bitbucket.org/tomio2480/ohotech-pie

4.

https://bitbucket.org/tomio2480/ohotech-pie

5.

http://www.furanoryokuho.hokkaido-c.ed.jp/

6.

https://furait.connpass.com/

7.

https://furait.connpass.com/event/76079/

8.

https://furait.connpass.com/event/78789/

9.

https://furait.connpass.com/event/39702/

10.

https://furait.connpass.com/event/39702/

11.

https://www.slideshare.net/tomio2480

12.

U-16 プログラミング コンテスト 旭川で始まった「技術好きの子供を褒める」場所

13.

http://www.procon-asahikawa.org/

14.

https://www.ajitep.org/

15.

https://www.ajitep.org/

16.

https://www.ajitep.org/

17.

http://procon.kushi.ro/

18.

http://procon.kushi.ro/

19.

https://www.bcnretail.com/market/detail/20170303_42403.html

20.

https://www.bcnretail.com/market/detail/20180115_47284.html

21.

https://www.bcnretail.com/market/detail/20180115_47284.html

22.

http://procon.kushi.ro/

23.

https://furait.connpass.com/event/73691/

24.

Facebook : ふらのみらいらぼ

25.

実習 ・話が長い人は嫌われる ・教員は話が長い

26.

1. 事前知識 1.1. Python の基本構文 マスター済みにより割愛 1.2. U16プログラミングコンテストのルール 旭川高専の本科生が作ってくれました 1.3. 選手を導くルーティーン

27.

1.3. 選手を導くルーティーン • 1.3.1. 勘違いからの脱却 • print, for, if…… 「覚える」= プログラミング? • 運動会の「プログラム」は別物? • プログラミングは「パソコン必須」? • 1.3.2. 慣れるまでは段取り • 「つかまり立ち」から歩き出す • 躓いた時に心の支えとなる「初心にかえる」

28.

1.3.1. 勘違いからの脱却 • print, for, if…… 「覚える」= プログラミング? • それは「コーディング」 • 運動会の「プログラム」は別物? • 一緒 • プログラミングは「パソコン必須」? • 動かすなら欲しいけど,組むだけなら「脳」のみ

29.

1.3.1. 勘違いからの脱却 • print, for, if…… 「覚える」= プログラミング? • それは「コーディング」 • 運動会の「プログラム」は別物? • 一緒 • プログラミングは「パソコン必須」? • 動かすなら欲しいけど,組むだけなら「脳」のみ プログラミング = 作業手順の確定

30.

1.3.1. 勘違いからの脱却 • print, for, if…… 「覚える」= プログラミング? • それは「コーディング」 地の利がある自陣に 持ち込む • 運動会の「プログラム」は別物? ↓ • 一緒 最も慣れている手法 を用いる • プログラミングは「パソコン必須」? • 動かすなら欲しいけど,組むだけなら「脳」のみ プログラミング = 作業手順の確定

31.

1.3.2. 慣れるまでは段取り • 「つかまり立ち」から歩き出す • プログラミング → コーディング を意識させる • コーディングはとにかく写経から • 新しいことをやるために基礎を固めて「つかまる」 • 躓いた時に心の支えとなる「初心にかえる」 • このときに最初がいい加減だと腐る • 偶然立ち歩き出身赤子 vs つかまり立ち出身赤子

32.

1.3.2. 慣れるまでは段取り • 「つかまり立ち」から歩き出す • プログラミング → コーディング を意識させる • コーディングはとにかく写経から • 新しいことをやるために基礎を固めて「つかまる」 • 躓いた時に心の支えとなる「初心にかえる」 • このときに最初がいい加減だと腐る • 偶然立ち歩き出身赤子 vs つかまり立ち出身赤子 早く自力で歩かせないとこちらが疲れる

33.

1.3. 選手を導くルーティーン • 1.3.1. 勘違いからの脱却 • print, for, if…… 「覚える」= プログラミング? • 運動会の「プログラム」は別物? • プログラミングは「パソコン必須」? • 1.3.2. 慣れるまでは段取り • 「つかまり立ち」から歩き出す • 躓いた時に心の支えとなる「初心にかえる」

34.

1.3. 選手を導くルーティーン • 1.3.1. 勘違いからの脱却 • print, for, if…… 「覚える」= プログラミング? • 運動会の「プログラム」は別物? • プログラミングは「パソコン必須」? • 1.3.2. 慣れるまでは段取り • 「つかまり立ち」から歩き出す • 躓いた時に心の支えとなる「初心にかえる」 実際の指導に置き換えると……

35.

1.3. 選手を導くルーティーン • 導入段階 : 思い通りに書く訓練 • • • • 与えられた課題をクリアする手順を考えさせる 1対1対応でサンプルコードを当てはめてさせる 1行ごとに一字一句違わずに書けたか確認させる 思い通りに動いたか手順から確認させる

36.

1.3. 選手を導くルーティーン • 導入段階 : 思い通りに書く訓練 • • • • 与えられた課題をクリアする手順を考えさせる 1対1対応でサンプルコードを当てはめてさせる 1行ごとに一字一句違わずに書けたか確認させる 思い通りに動いたか手順から確認させる 「思い通りに動く」わけではない 「書いた通りに動く」 ということを体で分からせる

37.

1.3. 選手を導くルーティーン 表現する言語の習得 • 導入段階 : 思い通りに書く訓練 • • • • 与えられた課題をクリアする手順を考えさせる ↓ 1対1対応でサンプルコードを当てはめてさせる 1行ごとに一字一句違わずに書けたか確認させる コーディング技術 思い通りに動いたか手順から確認させる 「思い通りに動く」わけではない 「書いた通りに動く」 ということを体で分からせる

38.

1.3. 選手を導くルーティーン • 導入段階 : 思い通りに書く訓練 • • • • 与えられた課題をクリアする手順を考えさせる 1対1対応でサンプルコードを当てはめてさせる 1行ごとに一字一句違わずに書けたか確認させる 思い通りに動いたか手順から確認させる • 自己学習段階 : 折り合いをつけさせる訓練 • コードを膨らませると何処かで歪む • 変数の破壊的代入による脳内デバッグとの差異 • まとめた方 or 分けた方がいいところが曖昧になる

39.

1.3. 選手を導くルーティーン • 導入段階 : 思い通りに書く訓練 • 与えられた課題をクリアする手順を考えさせる 慣れるとコーディングに偏りがち • 1対1対応でサンプルコードを当てはめてさせる プログラミングをおざなりにさせない • 1行ごとに一字一句違わずに書けたか確認させる • 思い通りに動いたか手順から確認させる • 自己学習段階 : 折り合いをつけさせる訓練 • コードを膨らませると何処かで歪む • 変数の破壊的代入による脳内デバッグとの差異 • まとめた方 or 分けた方がいいところが曖昧になる

40.

1.3. 選手を導くルーティーン • 導入段階 : 思い通りに書く訓練 • • • • 与えられた課題をクリアする手順を考えさせる 1対1対応でサンプルコードを当てはめてさせる 1行ごとに一字一句違わずに書けたか確認させる 思い通りに動いたか手順から確認させる

41.

2. 基礎実習 – 課題 • 課題群 1 – 移動 (上から順に進化させていく) • • • • • • 時計回り (上,左,下,右) 大きく時計回り (各方向 5 回ずつ) 壁があったらとりあえず上にLOOKする 壁があったら即,次の方向に切り替える 壁に当たるまで進み続け,壁で方向転換 10 % の確率で壁に当たらずとも方向転換する

42.

2. 基礎実習 – 課題 • 課題群 1 – 移動 (上から順に進化させていく) • • • • • • 時計回り (上,左,下,右) 大きく時計回り (各方向 5 回ずつ) 壁があったらとりあえず上にLOOKする 壁があったら即,次の方向に切り替える 壁に当たるまで進み続け,壁で方向転換 10 % の確率で壁に当たらずとも方向転換する 戦略,手順を用意して コーディングに集中させるねらい

43.

2. 基礎実習 – 課題 • 課題群 1 – 移動 (上から順に進化させていく) • • • • • • 時計回り (上,左,下,右) ベタ書き 大きく時計回り (各方向 5 回ずつ) ベタ → for 壁があったらとりあえず上にLOOKする 変数,if-else 壁があったら即,次の方向に切り替える break 壁に当たるまで進み続け,壁で方向転換 while 10 % の確率で壁に当たらずとも方向転換 random 戦略,手順を用意して コーディングに集中させるねらい

44.

2. 基礎実習 – 課題 • 課題群 2 – 戦える移動クライアントを作る • 課題群 1 の成果を改造し敵と対峙したときに倒す • そのために自分の脆弱性を洗い出す • 「負け」条件をありったけ書き出させる • 「勝てる状況」を書きださせる • そのすべてに優先順位をつけて並べさせる

45.

2. 基礎実習 – 課題 • 課題群 2 – 戦える移動クライアントを作る • 課題群 1 の成果を改造し敵と対峙したときに倒す • そのために自分の脆弱性を洗い出す • 「負け」条件をありったけ書き出させる • 「勝てる状況」を書きださせる • そのすべてに優先順位をつけて並べさせる コードに慣れた状態を作って コードも意識しながら戦略を立てさせる

46.

3. 応用実習 • 負けないクライアントが土台になる • アイテムをたくさん取っても死んではどうもならん • これを壊さないように進化させよう • アイテムを効率的に回収するには? • 敵を見つけ出してやっつけるには? • マップ内を無限ループしないためには? • 持っているマップ情報をどう活用するか

47.

4. 戯言 • U-16プロコンを使い倒してほしい • 情報技術への入り口として簡単な目標が与えられる • 各地域で同じプラットフォームで戦う面白さ • 野球,サッカー,吹奏楽などなども一緒 • 実力と運の混合率がいい塩梅で博打っぽさも…… • 一発逆転!が人の心を飲み込んでいく • ただ,U-16プロコンだけで終わってほしくない • これを機会に自分の見つけた課題や目標に生かそう • 広い世界の入り口につま先が入ったくらい

48.

4. 戯言 勉強会もいいぞ • U-16プロコンを使い倒してほしい • 情報技術への入り口として簡単な目標が与えられる [旭川,富良野,札幌, • 各地域で同じプラットフォームで戦う面白さ 釧路,千歳,室蘭, • 野球,サッカー,吹奏楽などなども一緒 函館,北見,恵庭, • 実力と運の混合率がいい塩梅で博打っぽさも…… • 一発逆転!が人の心を飲み込んでいく 小樽,美瑛] • ただ,U-16プロコンだけで終わってほしくない などなど • これを機会に自分の見つけた課題や目標に生かそう • 広い世界の入り口につま先が入ったくらい 「技術をおもちゃに」みんなで遊ぼう