創造工学の導入実験でPerlと正規表現
4年の前期実験では、2週分を創造工学でのシステム作りの導入とするための、 基礎実験を行っている。クラスを3グループに分け、私の担当は初回にPHPによる、 Webプログラミングの説明。これにより簡単な掲示板やアンケートを作ってもらった。
2回目の今日は、1日実験でPerlと正規表現の実験を行った。 最初に、超単純英語によるBot作りをネタに、Perlの基本文法と、正規表現を体験してもらう。 理解度が速い人向けに、後半はメールデータを題材にしながら、 Jcode.pmを用いた文字コード変換、headerのmime_decodeを説明し、 このメールデータの中から、From,Toの部分を抽出するプログラムを作ってもらう。
#!/usr/bin/perl # 超基本英語によるBot while( <> ) { $line = $_ ; if ( $line =~ /like/ ) { if ( $line =~ /^(.*)\s+like(|s)\s+(.*)\.$/ ) { print "$1 は $3 が好きです。\n" ; } } }
#!/usr/bin/perl # メールデータの文字コード変換 use Jcode ; my $head = 1 ; while( <> ) { $line = $_ ; if ( $head ) { print Jcode->new( $line )->mime_decode->utf8 ; if ( $line =~ /^$/ ) { $head = 0 ; } } else { print Jcode->new( $line )->utf8 ; } }
Perlを初めて使ってもらうので、 暗黙変数$_とのマッチングや、 「式 if ( 条件 ) ;」といった Perl らしい節操のない書き方は、説明を避けた。
OB特別講演
プログラミングに興味を持ってもらうためにも、 情報系の企業の方の知識で語ってもらう特別講演にて、 OBの中西さんに来てもらい話していただきました。
話の途中で、学生さんの実態を確認したくなって、途中で色々とアンケートっぽく 挙手形式で聞いてみた。 インターネット花盛りで情報系なんだし、インターネットビジネスの入口をどこまで体験しているか ということで、Google検索使ってる?GMail使ってる?Mixi使ってる?Twitter使ってる? GREE使ってる?モバゲー使ってる? 的に聞いてみた。 ただ、結果としては、予想外にネットを使っていないことが解った。 GMail当たりは使っている人も3割程度だったけど、Google検索・Gmail以外のGoogleサービス 使ってる?と聞いても、反応は薄かった。 Twitter,Mixi,GREE,モバゲーと聞いてみたけど、かぶっている利用者ばかりで、 2割を切っていたかなぁ… ヘビーに活用しているひとは使ってるけど、それ以外の人が多すぎるってことか。
ということで、4年の創造工学でアイデア出しとかしても、ネタに窮するのは、 やっぱり電子情報工学科といいながら学生さん自身がインターネットを深く活用していないというのが 根本だと感じたなぁ…
# ヘビーにネット依存されるのも困るんだけどね…2極化?
高専プロコンの講評結果
先日、5チームの応募の中らか、全国高専プロコンの予選に、自由部門1チーム通過、 競技部門1チーム参戦の結果が来ていたが、その書類審査の講評が送付されてきた。
興味深いのは、思考過程を『旅』と捉え、マインドマップのネットワーク共有型エディタの作品の 講評がどういった結果か、興味があった。 思考過程を旅ととらえる部分が趣旨よりはずれていると見られたかどうかであるが、 講評を見ると、「面白い着眼点」とみているひとと「趣旨はずれ」とみなしている人と、 両意見であった。でも予選を通過できなかったのは、どちらかというと「具体性」だったようだ。 もう少し、プロトコルやらデータの管理方法を明言すべきであったようだ。
これに比べ、応募資料的には不安であった、砂で遊ぼうのチームは予選通過となった。 やはり「オリジナルのハードウェア」を含む作品は、「独自性」が高いと評価されやすい傾向がある。 一方で、ソフトウェア単体で動くアイデアの物は、「既存」と判断されやすい。 以前から、創造工学で取り組んでいるのだが「もっとハードに絡むもの」を増やさないとダメだな…
課題レポート採点
今日は寮の日直ということで、 その間にプログラミング応用と情報構造論の課題レポートの採点。
プログラミング応用のレポートは、がんばって書いている人もいるけど、 すでにテスト生点でそれなりの点数が取れた人は、 ちょっと手抜きの様子。 成績は、max(テスト生点,テスト*60%+レポート40%)という計算方法なので、 レポートの加点を入れても、成績が上がらない人がほとんど。 まあ、プログラムがそれなりに書ければ、こんなものかな…. レポートの説明で、変数表とか処理の説明してくれているけど、 どちらかというとイメージ図を交えたりといった説明が欲しかった。 といっても、簡単な課題だし説明を丁寧にといっても、 変数表ぐらいしか丁寧に書けないか….
LEDメッセンジャーを行き先表示板に
自宅で試作していたLEDメッセンジャーのプログラムを職場の行き先表示板にしてみました。PICNICのカタカナ表示よりは便利になりました。 PICNIC版と同じように、携帯からメッセージを書き込めるようにしたし、 表示でもスクロール機能があるので、256byteまでのメッセージであれば、 分かりやすく表示できます。
創造工学演習・ガイダンス+アイデア検討
例年通り、何らかのコンテスト参加を目標に、ソフトウェアシステム構築に挑んでもらう。 高専プログラムコンテストや、その他のコンテストなどの事例を紹介しながら、 授業後半は、アイディアを考えてもらい、最終的にアイデア検討資料ということで、 1人1枚のレポート「マインドマップ形式or自由書式」にて記述。
- 高専プログラミングコンテスト
- 課題部門:旅とコンピュータ
- 自由部門
- 競技部門:「水瓶の恵み-緑と水のネットワーク-」
- 募集要項・部門のご案内 一式(PDF)
- ふくいソフトウェアコンペティション
- ETロボコン2010
- 歯みがきロボットコンテスト
- 防災マップコンテスト
六角形フィールドの取り扱い演習
高専プロコンの競技部門は、蜂の巣状の空間の陣取り合戦みたいなルールなので、 来週の演習(実験)では、このフィールドの取り扱いに慣れてもらうネタに、 取り組んでもらう予定。 ということで、案内資料に書かれているヒントを元に、 六角形フィールドを2次元配列に格納し、そのデータを表示するサンプルプログラムを 書いてみた。
演習(実験)時間には、このプログラムをベースに簡単な5目並べや、 適当に配置したコマで、閉じた空間をつくっているか判定するプログラムに 改良してもらう予定。実際に参加する人は、閉じた空間の面積を数える所まで、 直すことができないと難しいかな…
情報処理技術者試験の2009年度からの新制度
学生さんへの勉強への意欲拡大で、資格試験の積極取得を伝えているが、 情報処理技術者試験の2009年度からの変更にともない、情報収集。 秋の試験願書受付期間も7/13-8/19の期間みたい。
新しい区分になったけど、直感的に分かりやすい資料を探してみた。 これを見ると、基本情報(FE)は、ほとんどそのままの様子。 新しい「ITパスポート試験(IP)」は、情報システムの利用者側の視点での出題で、 初級システムアドミニストレータが、入門的になったものだろうか… 試験問題の例などを見たけど、どうも経営・法律・業務などの業務系関連知識が 要求される知識ネタが多そう。 3年ならば、今までどおり基本情報にチャレンジするのが、無難だと思う。
高専プロコン予選通過、競技部門のみ
高専プロコンの予選結果が発表となった。 残念ながら、今年度は競技部門だけとなった。 審査員の講評を見ると、
- … 自由と課題の中身が似通ってきています。 これは課題部門が幅広い解釈ができるため…
- … 世の中にある話題の中から適当なものを見つけてきたような作品が多く、 若者らしい斬新なアイデアが少なかったことが残念です。
と書かれている。実際、応募資料を作る時も、 自由/課題の選択はアイディアが出てからの後付け。 アイディアについても、指導教員の知っているネタ説明を元に、 考え出したりしていれば、ご指摘のとおり…としかならない。 逆の見方をすれば、資料さえあと少し頑張れば、予選通過をしてもおかしくなかったとも言える。
PHPにてDB&画像扱いのサンプルコード
創造工学演習の作業にて、画像を扱うグループで作業が止まっている。 プログラムの入り口となる知識が分かっていなさそうなので、 指定ディレクトリ内の画像をHTML的に表示したり、画像を選択するプログラムだけを書いて、 基本説明を行う。
同じく、データベースを使うグループが、SQLの勉強をしているのだが、 SQLの解説ページを見ているだけで、実際に手を動かせないでいる。 しかたがないので、SQLite3 を使って、ローカルなDBファイルにて "create table"でテーブルをつくり、 "insert into"で1件データを書き込み、 "select from"でデータを読み込むというだけの PHPプログラムを示して、SQLとPHPのイメージを結び付けてもらう。
PHP講習会/H8割り込み講習会
4EIの実験時間を用いた創造工学演習向けの基礎講習会の2回目。 40人を2つに分けて実施するため、場所が狭かったり実験が困難だったり。 H8の割り込み講習会の参加グループの方が、実際の実験環境の準備が大変で、 割り込みやモータ制御の文献調査になってしまった。
PHP講習会の方は、簡単にアクセスカウンタのプログラムを説明し、 何らかのファイル操作を伴うプログラムを作成し、 レポートに「この知識を自分のテーマに使えそうか?」、 「PHPのプログラムの起動の際のユーザ権限」、 「ファイルロックなどの問題点」などを、各自選んでレポートとして記載し提出してもらう。
<?php if ( ($fp = fopen( "count.txt" , "r" )) != FALSE ) { $count = fgets( $fp ) ; fclose( $fp ) ; } else { $count = 0 ; } $count++ ; print "counter = $count" ; // このプログラムのディレクトリは、 // 誰からも書き込みできる許可を与えておく。 // 別途危険性は説明する。 if ( ($fp = fopen( "count.txt" , "w" )) != FALSE ) { fputs( $fp , "$count" ) ; fclose( $fp ) ; } ?>
プログラムをちょっと修正したら、レポートを書きだすと思っていたけど、 予想に反して、くだらない機能追加なんだけど、全員が積極的に「修正」している。
# レポート作成に時間を取ってほしいんだけど….