2004年10月アーカイブ

JABEEの卒研などのエビデンスを色々と求められているが、 学生も紙に記録という方式だと、貯めておいた資料を無くしてしまう 場合も多いし、ちょっとした時に手元資料が無いと、 記録も継続しづらい。

そこで、学科で設置していた pukiwiki を、 卒研・特研の学生さん向けにも立ち上げる。 気軽な書き込みでの継続を維持するために、 学内は誰でも書き込み可、学外からは参照のみ可という設定とする。 一部の学生には凍結用の簡単なパスワードをアナウンスしておく。

うちの卒研グループは、興味を持ってもらったみたい。 たった1日だけど、それなりに記録を残してくれている。 エビデンスを要求されたら、 記録の日付から Excel でデータを起こせば済むし、簡単。

演習

部屋の掃除のゴミ出しもあり、色々動いていたら、授業開始に遅れる。 といっても演習を行うとの予告もしていたので.... 先に演習を始めているかと思いきや、5分ほど雑談タイムになってたみたい。

構造体を使った演習を行うが、半分講義にするためにも、補足説明を行う。 同一構造体の変数間の一括代入と、構造体データのポインタ渡しによる プログラム例を示す。

構造体を関数に引き渡す際の値渡しと参照渡し(ポインタ渡し)の2つを示し、 副作用の無い呼び出しなら値渡しという点を説明。 さらに構造体が巨大な場合の実引数・仮引数間の全コピーは、 処理が遅くメモリ浪費する点を説明し、一般的には参照渡しを行うことを 強調する。

残りの時間40分程を演習とする。

演習室の掃除

JABEE の審査当日は、施設見学の中で見られる可能性もあるということで、 演習室の掃除を行う。今までの卒研で溜った不燃ゴミも多いし、 プログラムコンテストや自走模型の作業で乱雑になった所もあり、 思ったより時間がかかる。

自走模型の制御実験3回目

模型制御だが、9V(006P),5V(レギュレータ後),3V(モータ用乾電池)を 間違えて回路が動かない例が多い。モータ制御ICが20Vまで電源を 選ばないので、壊れていないけど。 でも、もう一つの動かないネタは、単3乾電池×2。マンガン電池だと ちょっと動いたら、モータ制御IC内部の電圧ドロップで電圧不足。 モータも電流加えてるけど動かないから、電流消費が激しい...の 悪循環で、あっと言う間にモータを回せないみたい。 このため、乾電池は4個積みにしないとダメみたい。

この様なトラブルもあるなか、単3電池が新しかったチームは、 妙なモータトラブルに巻き込まれずに、動作確認が完了。 来週からも動くチームが出そうだけれども、 今回のチームは電圧不足もあるため、参考記録にしておこう。

青野・玉邑・山本
  • 時計周り 45.2秒
  • 反時計周り 53.0秒(後半は電池不足が原因)

最初の動作チームだけあって、こちらの準備も不完全。 このため、車体への基板や電池の取り付けが、 ガムテープといういい加減さ。

前半に2分木を扱うプログラムの例を示す。 単純リストをループ・再帰で書いたコードを示した後、 2分木のデータ合計、データ順表示のコードを示す。 次に、2分木にデータを追加する場合の処理を示す。 木へのデータ追加の際の問題点の説明は、次週に行う。

演習としては、 双方向リストもしくは2分木でデータの保存と処理 というテーマで行わせる。 双方向と2分木は自由に選択。 扱うデータは、(1)生年月日、(2)文字列、(3)身長と体重で出席番号で割り振り。 処理は、データの特徴が活かせるような処理を自分で考えて行うこととする。

規定コース作り

ライントレース模型もそろそろ実地動作テストも始まりそうなので、 規定コース を作る。A4(PowerPoint資料)を、センターで A1 拡大印刷してもらう。 コースは、黒線部 5cm の瓢箪型とする。単純だと面白くないので、 コース一部はシケイン?となるように瓢箪を歪ませる。

10月末なのに2回目の講義。工場見学旅行中の振り替えを木曜に検討するが、 学生さんの都合が悪そう。

プロセッサの発達の歴史

最初に機械系学生向けに、CPU,HDD,メモリといった言葉の説明を行ってから、 前回の説明に続き、パソコンの世界での8bitコンピュータから64bitコンピュータ までの歴史を説明する。特に 8bit→16bitでのIntelの上位互換性維持と、 286→386でのメモリ保護機能、 Pentiumでのスーパスカラによる並列化 Pen4→IA-64/Athlon64 での今後 を説明する。

OSの歴史

機械語→制御モニタ(→BASIC)→MS-DOS...といった OS の歴史を、 Windows系でのマルチユーザ/マルチタスクの変化, GUI の導入, Multics→unix→Linux, オープンソースの流れ, TRONによるリアルタイム性 などのトピックを説明する。

前半は演習室にて構造体を使ったプログラムの演習を行う。 (1)名前と誕生日(2)名前と電話番号(3)名前と身長体重 といったデータ構造を構造体配列に入力して、出力するだけ。

1/3程度の学生が完成したあたりで、次の講義内容として、 アロー演算子の説明を行う。前半で学生の書いたプログラムと 同じような短いプログラムを示し、入力関数・出力関数を作る。

void read( struct NameAge* p )
{
    scanf( "%s %d" , (*p).name , &((*p).age) ) ;
}
    ↓
void read( struct NameAge* p )
{
    scanf( "%s %d" , p->name , &(p->age) ) ;
}

これらのプログラムを見せた後、構造体を扱う関数を作れば、 データ構造を考える人と応用部を作る人に別れてプログラムを作れることを説明。 これが、 ブラックボックス化 FN 情報処理技術者試験を受けた学生の突っ込みを受け、ブラックボックス化を先に説明 /FN となることを説明し、構造体宣言が データ抽象 、構造体を扱う関数が、 手続き抽象 と呼ばれ、 オブジェクト指向 の入口であることを説明する。

小型模型制御実験2回目

専攻科実験で判明したプログラムの間違いを学生に説明し、実験を行う。 光センサーを使っているとやたら部品が熱を持っている。 回路図と照らし会わせると、LEDに流れ込む電流制限用の抵抗。 抵抗値を100→330Ωに増やす。おかげで光の量が減りセンサーの調整が 微妙になるが、H8 のレギュレータICへの負担も問題となるためやむおえない。

学生さんの反応は『難しい』を連発。 しかし基本形のプログラムの動作原理を説明しても、 「実験するときだけ判りやすいプログラムに書き換えよう」 という取り組みを行う学生が少ない。 この状況では、最後まで動くチームは少ないかもしれない。

現在、台風23号が福井の側を通過しているようだ。 夕方会議があったが、外では風が吹き荒れ、 内心「はよかえろう...」と思っていた。 必要なメールを書き終えて、帰ろうとした時、卒研学生が 「演習室雨漏りしてますよ!」 と報告してきた。

演習室雨漏り

演習室は、以前上のフロアで実験用の水のタンクが壊れ、 水洩れ被害をうけたことがあるので、4階をチェックするが、 大丈夫な様であった。演習室の雨漏りはエアコン付近だし、 エアコンのダクト付近が原因だろう。 ちなみに、パソコンのキーボードが水浸し。 水気をきっておくが、明日は使えるだろうか? パソコンを少し移動し、バケツを置いて帰る。

駐車場までも水浸し

駐車場に向かうが、学校内の道が一部水浸し。 車は大丈夫だけど、普通の靴を履いているので、 駐車場に入れない。諦めて靴を脱ぎ、靴下水浸しで車にたどりつく。はぁ.... そういえば、堀井さんの部屋の灯がついていたし、携帯で状況報告する。

JABEEにて4年学生に学習・教育目標をきちんと説明し、 学習・教育目標の内容に関するアンケートに回答してもらう。

後半は、2分探索木の説明にて、簡単な2分木データを生成する処理と、 木の探索のプログラム例を示す。 2分木のプログラムでは、再帰等もよく使われるので、find()を ループにて記載した後で、再帰にてプログラムを示す。 再帰が増えて来ると、処理の実行順序の理解が怪しくなってくるので、 式に記号をつけて、記号で実行順序をしめす演習を行う。

2分木の探索を再帰で書いても、理解が怪しいので、 単純リストの検索をループと再帰で書いて、 再帰のプログラム処理の流れを解説する。

小型制御模型の実験2回目ということで、 プログラムの書き込みとセンサー関連の動作試験を行っていたみたい。 しかし、配布資料の中でくだらないミスで、動作確認にとまどる。

if ( ( PDR5 & 0x01 ) == 0 ) FONT COLOR blue /* ビット論理積の括弧は必須 */

ポートのビット状況をテストするコードで、 ビット論理積と比較演算では、比較演算の方が優先順位が高いため発生するエラー。 過去にも経験のあるネタだけど、大抵は define マクロ化することが多いし、 マクロ化する時に冗長な()をつける癖がついているために、 逆に忘れていた....

高専祭にて

昨日の学科催し準備後に、担任クラスの牛丼を食べていたが、今日は子供を つれてきたのもあり、クレープやらうどんやらを中心に食べ歩き。 明日は、水曜の保護者面談に参加できなかった数名の保護者と面談。 保護者面談不参加の学生さんが成績表を欲しがっていたし、 成績表渡しもちょいと行うかな....

ITフォーラム(2日目)

どちらかというと、高専の古いOBから最近のOB、といった身内からの 見学が多い一日であった。一般の方からもツッコミをもらえるような、 ネタの展示ができるように頑張ろう。

昼からは、ママが展示会を見てみたいということで、有給をもらい会場に。 パパの展示協力もそこそこに、色々と見学していた様子。

しかしこれでようやく、プログラムコンテストから続いていたイベントラッシュが 一段落となる。

ITフォーラム(1日目)

プログラムコンテストの内容の、QRコード+彫り彫り+空撮について 展示を行う。学校では弁論大会だけれども、4年プロコン参加学生に 協力依頼を行い、準備を完成させる。

ITフォーラムの展示準備

3時からは、産業会館にてITフォーラムが、14,15の両日に開催されるので、 その展示準備。ちょうどプロコンのパソコンが戻ってきたので、そのまま 展示会場に。

10月の保護者懇談会

後期の成績も出揃い、学祭の準備の中で保護者懇談会。 7月の保護者懇談会にて、進路やら成績やらの話しはできているため、 無理に参加してもらわなくても大丈夫とPRしていたものの、 やはり半数の保護者の方が参加。

成績面での注意の他は、ほぼ前回と同じ話しなんだけど、 大学進学等での話しで話せていなかったネタもあり、 進路の確認を含めて保護者の方と話しをする。

そーじ

システム設計の時間に、学生さんが資料まとめとして各部屋に別れてくる。 プログラムコンテスト本戦参加の学生さんには、演習室の後かたづけを頼む。

プログラムコンテスト参加者の多いクラスだし、 一昨日のコンテストの感想を何人かの学生さんに聞いてみる。 他高専の実力をみて、講義のレベルアップを期待する学生さんがいるか と思ったけど、 やはり期待だけだった。

双方向リストと応用テクニック

前回の講義の双方向リストの説明2回目。 前講義で説明した insert() の問題点として、 先頭と末尾への挿入に特別処理が必要な点を説明し、 対処法として番兵(sentinel)のテクニックを紹介する。

さらに、双方向リストでの番兵の定番として、 循環双方向リストへの応用を紹介する。

2分探索木

実際の世界では、双方向リストの出番は少ないし、次のネタに進む。 2分探索木の説明として、直観的に処理をイメージして欲しかったので、 0〜100までのデータを素早く探したいという前置き後、 すぐに2分木の具体例のイメージ図を書き、 『××のデータを探すのに要する比較回数は?』、 『△△のデータは、木のどこにつなげばいいか?』 と聞いてみる。どの学生さんも、左右の枝の定義を具体的に説明しなくても、 回数やら接続箇所は答えられるみたい。

この後、処理回数やオーダの話し、節と枝の用語などを説明し、 最後に構造体宣言を見せて、来週につなげる。

成績は佳作

最後に閉会式にて成績発表。福井からの参加チームは、みんな佳作 FN 予選は突破できたで賞 /FN 。 しかしクラブ活動での積み重ねがある訳でもなく、5月からの成果という意味 では、発表経験ができた点を含めて大きな成果があったと思う。

早々に帰路につくが、台風豪雨の影響で土砂災害のあった地域を、 列車が徐行するため当初予定の列車に乗れない可能性があった。 このため新居浜からは1本早い列車に乗ることを狙う。 本当なら時間的には間に合っていなかった。 しかし、その1本前の特急自体も遅れていたため、無事に乗れた。 ということで、岡山以降は予定通りの列車に間に合いました。

しかし米原過ぎでは、前の列車が熊をはねてしまい、遅れが発生する。 台風といい、熊といい、このプロコンは今年の気象条件をもろに体験できた 大会でした。

最終日、昨日の夜にさらなる練習+デバッグで今日に望む。

空撮チーム

最初のデモでは、説明のぎこちなさはあったけど、 元気な説明で無事に終えたみたい。 デモンストレーション審査2回とマニュアル審査において、 皆で交替しながら説明を受け持つ。説明で得手不得手もあったみたいだけど、 全員がんばっていたかな。

競技部門

昨日の通信データ取得プログラムのミスも修正し、本選に望む。 1回戦では、他高専で最高4秒といった記録もでるが、2分といった記録も みられるため予選突破が期待された。 しかし、くじ運が悪かったのか最初の対戦(8高専対抗)では、 1位5秒、2位7秒、福井は9秒で3位となり、敗者復活戦へ。 復活戦では1位のみ通過となるが、 出題された画像の複雑さから正解は出せるものの、 解答時間が20秒台で3位となり、敗退となりました。 最後はやっぱり、画像処理勝負だったのかな。

敗者復活戦での出題画像は「細かい枝振りの枯れ木」。 境界画素のマッチングではリトライが多く発生しやすく、 回答までの時間差がでた様子。

QRコード

昨日の審査で指摘された、携帯の通信費の下調べもして望む。近藤君の頑張りで、 まあまあ無事に審査を終えたみたい。御苦労さん。

彫刻

最後まで安定動作を目指し修正を行っているが、デモ審査では、 「この作品の売りはノミなんだから削る処理の完成度は重要なんだけどなぁ〜」 という鋭い突っ込みを受けるも、きちんと動作する部分をきちんと説明し、 無事に審査を終える。

プレゼンテーション審査

当初心配していた台風もそれて、拍子抜けの感じ。 朝いちから、システムのセッティングを慌ただしく終えて、 これまたプレゼンテーション審査になだれこみ。

携帯電話でスタンプラリー

元気の良い堂々とした声で、近藤君大活躍。 ある意味威圧的感のある堂々とした話っぷり。 質疑応答で、スタンプラリーで「どの程度パケ代がかかるの?」という質問で 粘られる。あの発表なら、 5年の卒研発表に混ざっても、優良発表の部類に入るでしょう。

競技部門

これまた処理の自動化による速度ねらいにより、 自動化部分をshellスクリプトで作り込みするために、半徹らしい。 パソコン2台持ち込みによる成果を出そうと、急遽HUBの買い出し。 前川センセの餞別が大活躍となるか?

そして競技演習を終えたが、なぜかデータ取得に失敗したり、回答データに重複が あったりで、うまくいかなかったみたい。さあ、徹夜のデスマーチの始まりです。

通信の自動化部分の最終調整用に、プレゼン用のママパソコンにPHSカードと ネットワーク環境をいれて貸し出す。 ママのパソコンじゃ使いそうもない cygwin であったが、入れて置いてよかった。

空撮システム

システムの完成度という意味では、心配な所があったものの、 ひとまずうまく行ったかな。 高久先生曰く、プレゼンテーションは中盤つまりぎみだったかな。 でも質疑応答でも、自分の言葉できちんと受け答えができてました。 システム自体は、外のソフトばっかりのネタと違うし、 災害時への応用の可能性という意味で興味を持ってくれた人は多い。 質疑や会場のお客さんの多い質問は 「明日会場で飛ばしてくれますか?」 すいません会場持ち込みの機体じゃ持ち上げられんし、 滑走路もありましぇーん。高久先生苦笑い。

彫り彫りHoliday

今年もまた徹夜で頑張る林、北川コンビ、よく体が持つねぇ...とある意味感心。

台風の影響で到着の遅れているチームがあり、発表順の繰り上げがあった。 しかし牧野君のアシストのもと、説明したい内容についてはちゃんとまとまった 発表でした。過去に私も「えーっと」病を発症した経験のある身だが、 林君も緊張して「えーっと」があったかな。 でも、昨夜の原稿の仕上がりも、格段に分りやすくなって、 初めてのきちんとした発表だったかもしれないけど、良い発表でした。

他の高専の展示をみて、

同じ程度の完成度かなと、我が身と比べながら見るものもあれば、 よくもここまで完成させたよなと思えるネタやら、レベルも色々。

移動?

プログラムコンテスト参加のための移動日。 といっときながら、彫刻チームは出発11時までは、フル稼働。

移動前日

プログラムコンテスト準備最終日(といっておきながら明日の朝もゴタゴタするだろう) ということで、デモ時の掲示資料の印刷+プレゼンテーション資料のダメだしを 行う。

構造体の説明

政治経済の先生が体調不良で欠席だったので、翌日がプロコンでプログラム応用 の授業ができない点もあり、代行授業。 避難訓練の予定もあるため、自習にはできない。

留学生が別授業であったため、早く進むこともできないので、 避難訓練のネタとして情報系の災害対策を少し話す。 その後は、構造化プログラミングの説明で『処理の構造化』を話した後、 構造体の説明として『構造体の入れ子』を説明する。

小型模型制御実験1回目

以前から準備を進めていたH8を使った小型模型の制御実験を、 3年後期の4週実験としてとりくむ1回目。

最初総括を話した後は、2グループの各班で前半後半に別れ、

  • H8の操作とプログラムの簡単な説明(斉藤)
  • モータIC,光センサーの説明+実験(石川)

を行う。最初のグループには、プログラムの他に、 ライントレースの原理みたいな部分の説明が甘かった。 来週追加説明が必要であろう。

リスト構造の一括 free のプログラムを示した後、ポインタの先に共有がある 場合の問題点として、破壊系リスト処理(nconcを例として示した)で、 後処理の一括 free の呼び出しの有無が判断が困難である事例をしめす。 ガベージコレクタ等の解説は、リスト構造全般の話が終了した時点で行う予定。

双方向リスト

単純リストが、可変長・次参照のみ、配列が固定長・ランダムアクセスである 点を強調する。この後で、エディタを作る場合の処理の特徴として、 前・次の参照、途中の挿入削除を説明する。この解決策としての双方リストの 説明を行う。

struct BDList {
  struct BDList* prev ;
  int            data ;
  struct BDList* next ;
} ;
struct BDList* bdcons( struct BDList* p ,
                       int            x ,
                       struct BDList* n )
{ struct BDList* m ;
  /* malloc行を穴埋めとして質問 */
  m = (struct BDList*)malloc( sizeof( struct BDList ) ) ;
  if ( m != NULL ) {
    m->prev = p ;
    m->data = x ;
    m->next = n ;
  }
  return m ;
}
void main() {
  struct BDList* top ;
  /* 下記 top のイメージ図を示し */
  top = bdcons( NULL , 1 ,
          bdcons( NULL , 2 ,
            bdcons( NULL , 3 , NULL ) ) ) ;
  /* 双方向リストにするための以下2行を穴埋め質問 */
  top->next->prev = top ;
  top->next->next->prev = top->next ;
}

この後、双方向リストのプログラム事例として、後方 insert を 穴埋め形式で質問し、ポインタの繋ぎ換えをイメージ図で説明する。

最終段階?

プロコン本番を週末に控え...の割に、彫り彫りチームは、まだ全体像の動作確認には 至らない。しかしセンサー系も含めほぼメドがたったかな。 QR コードのチームは、ほぼ全体像の動作も含め完成の様子。 入賞を狙えるほどの完成度ではないかも知れないが、 全体の動作が動くようになっている時点で、頑張った成果であろう。

新居浜豪雨?

主催者より、新居浜が台風の影響で JR が新居浜駅付近が運航中止状態らしい。 代行バスが出ているらしいが、帰りの列車が乗り会わせが困難となるかもしれない。 状況を調査しなければ....

H8/3664を使ってライントレーサを作ってもらう。 同一実験を本科3年を対象に予定しているが、専攻科学生には、 車体の設計・組み立てから制御まで全てを体験してもらう。

最初に実験配布資料を解説し、実験の目標を説明する。 専攻科生には、光センサーの値をA/D変換しながら、プログラムによる PWM で 速度制御までできることを期待。しかし、車体などのハードの数にも制限が あるので、3人グループに2つの車体材料を与える。 初日は、車体の組み立てと H8 の概論・プログラム書き込み手順の説明。

シラバスの提示として、授業内容の説明の後、最初の講義として計算機システムの 歴史の説明を行う。

配布資料 の最初として、計算機の歴史を説明。 WWI前の時代から第1〜4世代までを、演算素子の変遷、主要なコンピュータ、 OS、プログラム言語などを開発者名や雑学を交えながら説明を行う。

時間が残っていたので、次週予定のマイクロプロセッサの発達の歴史として、 i4004〜16ビットコンピュータ初期の頃までを解説。 中途半端なので来週はもう1度8ビットから説明を予定。

構造体の説明

後期最初の授業ということで、後期前半の授業予定を話し、構造体の説明に入る。 今年の学生は、一応2年時に構造体については少し経験があるみたい。 進度を早め後期後半のグラフィックスの範囲に時間余裕を持たせることが可能かも。

しかし、来年度の工学基礎コースが動き出すと、1年時の情報系ボリュームが 落されることからも、元に戻るんだろうなぁ....

2015年12月

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

アーカイブ

Google

このアーカイブについて

このページには、2004年10月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2004年9月です。

次のアーカイブは2004年11月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。