活動の記録

タグ:授業紹介

【授業紹介】研究発表会 課題研究(3年・必修)

自分でテーマを設定し、今まで学んできた知識や技術を総動員して探究活動を行っていく課題研究。

その総まとめの発表会を、3日間に渡って行いました。

 

情報技術科の課題研究は2年次からテーマ設定を行い、3年次から活動を開始。基本的に1人1テーマです。

スライドを用いて発表し、その後に生徒・教員からの質疑応答という流れで行いました。

 

 

また、2日目は2年生が見学をしました。2年生向けの発表会を務めた生徒のテーマを簡単に紹介します。

鈴木大地「複雑な図形の単純化」

  

 

読み込ませた図形の概形を認識して、それを簡略化したものを自動で生成するアルゴリズムを考え、プログラムを作成しました。

作成したプログラムを実際に動作させると様々な問題点が浮かび上がってきましたが、一つ一つ対策を考えてプログラムを修正することができました。

 

平川心菜「MASを用いた感染症拡大シミュレーションの実装」

  

 

Google Colaboratoryというサービス をローカル環境で正しく動作するように移植しました。

それを用いて感染症拡大のシミュレーションを行い、得られた結果から考察を行いました。

 

堀内 陽「画像生成AIを用いた画像修正」

  

 

Stable Diffusionという画像生成AIを用いて実際に画像を生成し、そこで出た課題点を修正できないか試行錯誤しました。

 

鈴木莉名「自立制御ロボットの製作」

  

 

複数人で協働して自立制御ロボットを制作し、高校生のロボット大会に出場しました。

残念ながら大会では負けてしまいましたが、失敗の要因を推測し、修正案を考えることができました。

 

松下竜之「食堂の空席表示」

  

 

どうしても給食の時に混雑してしまう食堂。

空席が一目で分かれば便利ではないかと考え、Raspberrypiという小型コンピュータとカメラを用いて人体の自動検出を試みました。

実用化には至りませんでしたが、光の強さなどの外的要因の影響を受けないシステムを構築することがいかに難しいか、体感することができました。

 

2年生に発表する緊張から解放された生徒達。立派な発表でした。

是非2年生も自分なりのテーマを見つけ、1年間向き合って欲しいと思います。

 

 

【授業紹介】C言語 プログラミング技術(1年・必修)

 

1年生のC言語の学習が12月よりスタートしました。

C言語はプログラミング言語の中でも最もポピュラーな言語の一つです。

 

しかし、コンピュータの仕組みを正しく理解していないと、真に効率の良いプログラムを書くことはできません

そこで、本校では1年次においていきなりC言語を学習するのではなく、まずはアセンブリ言語とPAD図を学び、その上でC言語の学習に入ります。

これにより、メモリがどのように使われるか、データがどのように格納されているか等をイメージを持ちながらプログラムを作ることができます。

 

初回の授業では、C言語をコーディングするためのツールとしてVS Codeのセッティングを行い、簡単なプログラムの作成と実行を行いました。

 

 

【授業紹介】グループプログラミング実習 放課後の様子 実習(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の説明と課題の説明、グループ分けを行いました。

 

 

これまで学んできた内容がどれだけ活かせるか、情報技術者として自分がどれだけ成長できているか、ここが試金石になります。

 

【授業紹介】LANケーブルの製作 ネットワーク技術(3年・選択)

 

今年もネットワーク技術の実習が始まりました。

今回は初回ということで、今後自分たちが実習で用いるLANケーブルを自作しました。

 

LANケーブルは確実な通信を行うために、磁束を打ち消すよう内部の配線をねじってあったり、心線やプラグに様々な種類があったり、多くの工夫がなされています。そういった座学で学んだ知識を実物を見て確かめながら、製作を進めていきました

 

内部のやや硬めの信号線を真っすぐに手で伸ばし、切りそろえてからプラグに差し込み圧着します。

口で言うのは簡単ですが、丁度いい長さに切りそろえ、心線とプラグの内部がしっかりと圧着できなければならないので、慣れるまではなかなかうまく作れません。

 

完成したら、最後にテスターを用いて導通のチェックをします。今回は両端の結線が同じ配列になるストレートケーブルを製作したので、「ストレートケーブル OK」と画面に表示されれば、通信ができるケーブルが完成した証拠です。

一発でOKが出て喜ぶ生徒もいれば、エラーが出てしまい泣く泣く作り直す生徒も…

 

早々とOKが出た生徒達には、授業で使うLANケーブルの修理をお願いしました。

 

次の実習はリピータハブとスイッチングハブの特性の違いについて、実際にネットワークを構築しながら学んでいきます。

今後も知識だけに偏ることなく、技術に直接触れながら理解を深めていきます。

【授業紹介】1年生の工業基礎が始まりました

情報技術科で1年生の工業基礎が始まりました。1年生にとって初めての実習の授業です。

 

今日は、情報技術科のコンピュータ設備の基本的な使い方の説明を受けた後、これから毎日のように触ることになるキーボードに慣れるため、タイピングの基礎練習を始めました。

このタッチタイピング(キーを見ずに打つ技術)の修得が、情報技術科での最初の山場になります。これをおよそ三週間で身に着けます

    

 

タッチタイピングにセンスは必要ありません。

手元を見ない・指を毎回ホームポジションに戻す・スピードよりもまずは正確性を求める、などなど…

さまざまなことを意識しながら、練習をコツコツと積み重ねていくことが上達の近道です。

 

まずは、キーボードを見ずに1分間100文字打てることを目指して練習します。この目標に到達できているかどうか、3週間後にテストが行われます。

【授業紹介】工業技術基礎(1年・必修)

 

本日は1年生の「工業技術基礎」の授業が行われました。

工業技術基礎では、1学期に情報分野における基礎的な知識やスキル(主にキーボードを見ないで入力を行うタッチタイピングと、実習設備の使用方法)を身に着けます。

そして2学期から6~7名ほどの班に分かれ、様々な実習をローテーションで学んでいきます

 

授業内容はハードウェア・ソフトウェア偏りなく実施され、本日はC言語、電力供給の法則、Kicad、論理回路(論理圧縮)の4つのテーマに各班が分かれて実習を行いました。

 

C言語はプログラミング技術という授業と並行して行われ、今回はプログラミングの基本である「配列」について学びました。

プログラミングの授業では、どの学年も情報処理部のメンバーが活躍します(情報処理部のページはこちら)。分からないことも教えあいながら、コツコツと理解を深めていきます。

 

Kicad電子回路の設計を行いつつ、それをプリント基板へスムーズに変換できるソフトです。今回はその基礎的な使い方を学びました。

 

 

電力供給の法則、論理回路(論理圧縮)は実際に回路を組みながら、実験結果を記録していきました。

現代ではコンピュータが進化し、ハードウェアについてよくよく理解していなくても、とりあえずプログラムを組んで動作させることが可能になりました。

しかし、自分の進路について考えを深めつつ、これからの情報技術を支える人材を目指すならば、プログラムなどのソフトウェアに偏ることなくハードウェアについて理解することも、非常に重要なことです。

 

この前入学したと思った1年生も、もうすぐ2年生。

その場しのぎの暗記で逃げることなく、しっかりと頭で汗をかきながら頑張っていきます。

【授業紹介】ネットワーク技術(3年・選択科目)

現在3年生が「ネットワーク技術」という授業の中で、トラブルシューティング実習に挑戦しています。

 

 

ネットワーク技術では、今や誰もが利用する「インターネット(ネットワーク)」という技術について、その成り立ちから、なぜ世界中の人々と通信できるのか、どのような決まり(プロトコル)で機器同士が繋がっているのかを総合的に学んでいきます。

 

授業の中では、それらを理解するための座学だけでなく、LANケーブルを自作したり、ノートPCやスイッチ、ルータなどの機器を用いてネットワークを構築したり、実習も数多く実施します。

実際に用いられている情報機器を用いて、自分で設定を変更したり、ハブにケーブルを繋いでみたりすることで、より体験的に学びを深めていけるよう授業が構成されています。

 

その集大成として臨んでいるのがこのトラブルシューティング実習です。

教員があらかじめ構築したネットワーク内部に障害を仕込み、わざと不具合を発生させておきます。その不具合を、生徒は今まで学んだ知識と実習での経験を班ごとに総動員して原因を特定し、ネットワーク構成図通りの正常な状態に復旧させる(トラブルシューティングする)、といった内容のものです。

授業で用いたネットワーク構成図

 

一口に「インターネットに繋がらない」といっても原因は多種多様です。単純に機器のどれかの電源が入っていないだけかもしれない、ケーブルの断線や機器の不具合といったハードウェアの問題かもしれない、果てはDNSサーバやDHCPサーバの設定ミスなどのソフトウェア的な問題かもしれない…

 

トラブルシューティング実習を開始した1月初旬はなかなか原因が特定できない班が多かったものの、現在では

「とりあえずここからここまでping(通信の状態を確かめるコマンドの一種)通して確かめよう

スイッチ挟むと繋がらないから原因はここじゃない?」

「内部のネットワークは繋がってるんだから原因は外に行くルータでしょ」

など、様々な可能性を考慮しながらも、確実に原因に迫っていけるようになった班が続々と出てきて成長を感じられます。

 

 

 

これで本授業も残すところは学年末テストのみ。

幅広く活躍できるIT人材の育成を目指して、生徒とともに今後も努力していきます。