2023年12月の記事一覧
【授業紹介】グループプログラミング実習 放課後の様子 実習(2年・必修)
放課後に残ってグループプログラミング実習に取り組んでいる生徒達の様子です。
(詳しい授業内容についてはこちら → ①グルプロ授業 ②グルプロ発表会)
もちろん、各々部活動に所属をしているので、うまく折り合いをつけながらうまくスケジュール管理をしていく必要があります。
ちなみに写真に、写っているグループは3名が運動部に所属しています。
取り組んでいる生徒の画面を共有してもらいました↓
誰がどのように編集したか等はGit(画面左側)でバージョン管理をします。
(画面をよく見てみると、希望が見えてきたlineED.hという表示名が… 努力の跡が垣間見えます)
右側にはコーディングの画面です。巨大なプログラムになるので、仕様をしっかりとコメントに残して共通認識を持ちながら作業を進めていきます。
生徒と話をしていると、冬休みはグループプログラミングや基本情報技術者試験の対策をしたいという声がちらほらと。
休みはしっかりと取りつつも、是非冬休みを有意義に使って欲しいと思います。
【授業紹介】グループプログラミング 発表会 実習(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の説明と課題の説明、グループ分けを行いました。
これまで学んできた内容がどれだけ活かせるか、情報技術者として自分がどれだけ成長できているか、ここが試金石になります。