情報技術科
【授業紹介】グループプログラミング 発表会 実習(2年・必修)
先日、1・2年生の集大成となるグループプログラミング実習について紹介しました(前回の記事は→こちら)。
完成を目指すのは対話型のテキストエディタ(入力されたコマンドに応じてテキストの削除や追加を行うプログラム)。
生徒達は実社会での開発現場に近い形(複数人でチームを組んで開発を行う・数千行にも及ぶプログラムを制作する・納期が決まっている・制作を依頼された時点では仕様が決まっていない)で開発を1か月進めてきました。
今日はその発表会が行われました。
どのようなスケジュールを組んだか、どのようなデータ構造にしたか、どのように仕様書を解釈したか、どんな機能を追加したか、各グループでスライドを制作して説明をします。
そして、発表の後はいよいよ自分たちが実装したテキストエディタのお披露目です。
今回開発を行ったテキストエディタはコマンドで動作するもので、例えば下に10行カーソル(ポインタ)を動かす場合は「10j」と入力し、文字を追加する場合は「a」と入力します。
教員の指示に従いながらコマンドを入力していき、使いやすさやバグの有無を確認していきます。
しっかりと実装できている部分もあれば、開発したテキストエディタで空のファイルを読み込むと謎の文字があったり、特定のシチュエーションになるとテキストが全て消えてしまったり…
想定外のバグが起こると笑いが起きつつも(実際の開発現場では笑いでは済みませんが…)、すぐに生徒同士で「~が原因じゃない?」と話し合いが始まります。
最後に、発覚したバグや不具合などを1週間以内に修正し、プログラムを提出(納品)することで本実習は終了となります。
生徒達からは
「計画を余裕をもって組んで開発を進めることで、多少遅れが出てしまったメンバーがいてもチーム全体でカバーすることができた」
「開発を進めている途中で外部仕様を変更してしまうと他の部分にも影響が出てしまうので、開発前によく話し合って慎重に決定することが重要だと感じた」
「完成して達成感を味わうことができた」
「開発を進めていくためにはコーディング能力だけでなく、コミュニケーション能力も重要だと感じた」
「不具合に気づいても、自分が担当ではない部分のプログラムが原因だったりして、複数人で開発することの難しさを感じた」
等の感想があり、日々授業で学んでいることの大切さを再認識できたようです。
残りのグループの発表は年明けです。
冬休みの中でどれだけ自分たちで開発を進めるか、チームワークとリーダーのスケジュール管理能力が求められます。
【授業紹介】国家資格にチャレンジ 工業情報数理(1年・必修)
本日は工業情報数理の授業で基本情報技術者試験の問題にチャレンジしました。
工業情報数理は、情報分野に関する基礎知識を学ぶ教科です。
1年生はこれまでに、コンピュータの基本的な構成から始まり、2進数や16進数の計算・論理回路等について学習をしてきました。
その中で、単元ごとの振り返りも兼ねて、「ITエンジニアの登竜門」と呼ばれる基本情報技術者試験(→公式サイト)の問題にもチャレンジをしています。
最近試験の制度が変わり、年2回(4月・10月)しか受験のチャンスがなかったのが年間通して随時受験できるようになりました。
よって、1年生でも冬季以降の努力次第で十分に合格できるチャンスができたと言えます。
合格率30%以下の国家資格と聞くと高校生には難しいように思えますが、過去の先輩方は1学年につき何人も合格者を出しています。
時間を有効活用し、地道な努力ができる人間を目指して努力を重ねていきます。
【授業紹介】グループプログラミングに挑戦 実習(2年・必修)
ついにこの時がやってきました。
2年生がグループプログラミング実習に取り組んでいます。
授業でプログラミングを学ぶ場合、自分一人でコンピュータに向かい、コードを書いたり問題を解いたりするのが基本です。
しかし、実社会でプログラム開発を行う場合、複数人で協働して一つのプロジェクトを進めていくことがほとんどです。
そこで、本校の情報技術科では実社会でも通用するプログラマを目指して、1グループ4~5名の生徒が協力しながら、約3000~5000行にも及ぶ大規模なプログラム(実社会で動くプログラムに比べればまだまだ小さな規模ですが、高校生にとっては未知の世界)の制作に挑むグループプログラミング実習を実施しています。
プログラミングに馴染みのない方からすると、一人でプログラミングを行うことと、複数人でプログラミングを行うことの違いにいまいちピンと来ないかもしれませんが、この2つは全くといっていいほどに別物です。
イメージとしては、一つの小説を一人で書くか、複数人で書くかぐらいの違いがあります。複数人で書けば、その分負担は軽減されますが、登場人物の設定や表現、ストーリーなどにズレが生じ、最悪の場合は物語として成立しなくなってしまいます。
プログラミングも同じで、複数人で制作を行う場合、データの入れ物である変数や配列、制御構造に対して共通理解をした上でプログラミングを行っていかなければ、エラーやバグだらけのプログラムになってしまいます。さらに、プログラムは後から仕様が追加されて書き直しが必要になったり、機能を追加しなければならなくなったりすることがほとんどなので、その点も考慮して美しく、堅牢なコードを書いていく必要があります。
ただ、この「実社会では複数人で協働してプログラミングを行う」という前提をしっかりと踏まえた上で、本校のプログラミングの授業は計画されています。
与えられた課題に対していきなりプログラムを作り始めるのではなく、要求を徐々に詳細化・具体化して整理してから開発を行う段階的詳細化の考え方。
複雑なシステムを「モジュール(部品)」の集合体として捉えて開発を行い、変更があった場合に全体を修正するのではなく必要最小限の部分だけ修正をすれば済むように開発を進めるモジュール化の考え方。
これらについては既習の内容です。この実習では、これまでに学んだ知識と日々の課題で培った経験を総動員して、プログラムを制作していきます。
今回 、完成を目指すのは簡易的なテキストエディタです。特定のコマンドを入力したときに、与えられた文章に対して文字の追加や行の削除等を行うソフトウェアの実装を行います。
開発はGitを用いてしっかりとバージョン管理を行い、実装を担当する範囲やスケジュールも自分たちで調整します。そして、約1か月に及ぶ制作期間を経た後、制作したプログラムの発表会を行う予定です。本日はGitの説明と課題の説明、グループ分けを行いました。
これまで学んできた内容がどれだけ活かせるか、情報技術者として自分がどれだけ成長できているか、ここが試金石になります。
【SSH】静岡大学主催 探究・情報コンテストにてポスター発表を行いました
静岡大学浜松キャンパスで行われた「高校生探究・情報コンテスト」に海外研修のメンバーが参加しました。
修学旅行の出発前日という日程でしたが、参加メンバーにとっては非常に実りのある1日となりました。
公式サイトはこちら←
参加者は高校生のみですが、静岡大学浜松キャンパスの「テクノフェスタ」が開催される中での実施となりましたので、一般の方をはじめ様々な方に発表を聞いていただくことができました。
発表はポスター形式で行われ、自分たちの研究を見つめ直すきっかけとなったことはもちろんのこと、他校の生徒との交流もすることができ、良い刺激となりました。
発表を聞いた方のコメントとしては、
・訪問先であるエストニアのIT事情がここまで先進的だとは知らなかった
・データのみならず、アンケートやインタビューなどの裏付けがしっかりとできている
といったものを頂きました。
残念ながら賞を取ることはできませんでした(奨励賞まであと一歩でした)が、今回の発表を糧に、これから2月の渡航に向けて不足している部分を詰めていきます。
今年は計画段階での発表となりましたが、来年度は研修実施後の発表を行い、リベンジを果たしたいと思います。
【SSH】中学生向けプログラミング教室
海外研修に参加するメンバーによる中学生向けプログラミング教室が、三日間に渡り開催されました。
今年の海外研修はプログラミング教育をテーマに研究活動を進めています。
今回は渡航前の事前活動ということで小規模で実施をし、渡航後に学んだことを活かしてより大きな規模でプログラミング教室を実施をする予定です。
1日目:フローチャートなどプログラミングの基礎
プログラミングの基礎となるフローチャートやコードの書き方について学習してもらいました。
2日目:繰り返しや配列
少し応用的な内容に取り組んでもらいました。短い時間の中で配列について理解することは、教える側にとっても、教わる側にとっても難しかったようです。
3日目:演習「信号機の製作」
ハードウェア(マイコン) との連携を行い、3色のLEDの点灯制御を行い信号機を再現しました。この小さな基板がコンピュータであることを聞いたときに非常に驚いている様子で、思い通りにLEDを制御できたときには喜びの声があがっていました。
授業計画や授業で使うプリント等、全てを一から生徒達が準備したこともあり、予定していた内容を全て消化することはできませんでしたが、それも含めて良い経験になりました。
天候が優れない中での開催にも関わらずご参加頂きました天竜中の皆さん、ありがとうございました。
この後海外研修に参加するメンバーは、夏休み後半から英会話の指導を受けながら、11月に参加する研究発表会への準備を進めていきます。
学校の代表として参加する自覚をもち、テストや行事を言い訳にすることなく、少しずつ積み重ねていきます。