システム開発のジレンマ
現在、他の先生と共同で発達障害者支援システムの開発をしているけど、3/21に利用者を交えた事例検討会があった。
参加者の意見交換の中で、いくつかのシステム作りのジレンマを感じる意見があった。簡単にまとめると…
「支援システムのおかげで、支援能力は2倍になった。でも便利だからこそ、保護者は先生から3倍のサポートを期待する。」(N倍は感覚をわかってもらうための便宜的な数字)
この両者の不足分の「1」は…
- 先生への過度の負担にならないか…
- コンピュータ屋的には、PDCAサイクルもう1周まわして4倍にすりゃいいじゃん…でも、その開発費はどこから?
- ICTによる支援も大事だが、親と子供の直接の関わりを疎遠にさせてはいけない。
教育の情報化フォーラム
3月8日に、総務省主管による「教育の情報化フォーラム」が開催されました。
この中で、福井高専・電子情報工学科が協力している2件の報告がありました。
- 発達障害者プログラマーの育成と就労に繋げる支援とメンターの育成(福井大学)
- IchigoJamでものづくり
地域人材を生かして行う、ものづくりを通した科学技術体感型授業(ナチュラルスタイル)
pow(2,i)の速度
例年、2進数演算の課題を出すと、2i の処理を、pow(2,i) で書く学生さんがいる。
しかしながら、pow() は、double 型なので遅い。これは、2進数の特徴を踏まえれば、1 << i で書けば良い。
試しに、実際の処理速度を測ってみた。
#include <stdio.h> #include <math.h> long long int mask( ) { long long int m ; for( int j = 0 ; j < 10000000 ; j++ ) { m = 0 ; for( int i = 0 ; i < 60 ; i++ ) { m += pow( 2 , i ) ; // m |= (1 << i) ; } } return m ; } int main() { long long int x = mask() ; return 0 ; }
m |= (1 << i) ; --------- 1.296 [sec] m += pow( 2 , i ) ; ----- 44.956 [sec] 40倍の遅さ
型による処理速度の実験
授業のネタとするために、型によって計算時間がどう変化するか実験。レガシーなコンピュータを使ってきた人間には、float とか double とか出てきたら、「Z80な時代の頭」では数倍遅いのを期待したけど、FPU を搭載して当たり前のこの時代、そんなに差は出ない。
FPUという言葉さえ、最近は死語かな…
しかたがないので、macOS , Raspberry-Pi , Arduino 遅さの時代を逆行しながら実験。
// test.cxx #ifndef TYPE #define TYPE int #endif #include <stdio.h> TYPE foo( TYPE i ) { TYPE ans = 0 ; for( int j = 0 ; j < 30000 ; j++ ) { ans += i * i ; } return ans ; } int main() { TYPE y = 0 ; for( TYPE i = 0 ; i < 100000 ; i++ ) { y = foo( i ) ; } return 0 ; }
iMac で実験
iMac で実験。デスクトップ 64 bit マシンだし、そんなに差は出ないのは予想どおり。
bash-3.2$ uname -a Darwin imac2 17.4.0 Darwin Kernel Version 17.4.0: ... root:xnu-4570.41.2~1/RELEASE_X86_64 x86_64 bash-3.2$ g++ -O0 -DTYPE=int test.cxx bash-3.2$ time ./a.out user 0m6.857s bash-3.2$ g++ -O0 -DTYPE="long long int" test.cxx bash-3.2$ time ./a.out user 0m6.831s bash-3.2$ g++ -O0 -DTYPE=float test.cxx bash-3.2$ time ./a.out user 0m8.528s bash-3.2$ g++ -O0 -DTYPE=double test.cxx bash-3.2$ time ./a.out user 0m8.615s
Raspberry-Pi3 で実験
組み込み系の FPU などが貧弱なマシンを想定し、Raspberry-Pi 3 で同じことをやってみた。
64bit整数 long long int が想定外に遅いな。
raspberry-pi:~$ uname -a Linux raspberry-pi 4.14.22-v7+ #1096 SMP ...2018 armv7l GNU/Linux raspberry-pi:~$ gcc -O0 -DTYPE=int test.cxx raspberry-pi:~$ time ./a.out user 0m37.588s raspberry-pi:~$ gcc -O0 -DTYPE="long long int" test.cxx raspberry-pi:~$ time ./a.out user 1m18.535s raspberry-pi:~$ gcc -O0 -DTYPE=float test.cxx raspberry-pi:~$ time ./a.out user 0m52.206s raspberry-pi:~$ gcc -O0 -DTYPE=double test.cxx raspberry-pi:~$ time ./a.out user 0m50.287s
Arduino で実験
同じことを Arduino でやってみた。main のループは 1/10000 の回数にして、10000倍の時間を掲載…
ようやく「Z80 な頭」が期待している実験結果となったかな。
int 6880[sec] 16bit int long 6320[sec] 32bit int float 92080[sec] 32bit float double 92080[sec] Arduino Uno では、double = 32bit で float と同じ
授業アンケート結果
情報ネットワーク基礎(3EI)
情報構造論(4EI)
データベース(5EI)後期
データベースの授業では、83.8ポイントで、昨年度よりも若干ではあるがポイントも増加している。
例年は、板書のポイントが低いことが多いが、今年度は評価も高かった。
オブジェクト指向プログラミング(PS2)前期
オブジェクト指向プログラミングでは、84.4ポイントであった。電子情報系の学生の受講が無く、機械系・電気電子系学生であったが、課題にもきちんと取り組んでくれたこともあり、評価も高かった。
創造工学演習(4EI)前期
学生からの意見では、「アイデアをまとめる時間を短くして、製作時間を増やして欲しい」という積極的な意見があった。
限られた時間でものづくりまでを行う内容であるため、時間配分の検討が必要と感じた。
緊急連絡システムメンテナンス
大雪の連絡が飛び交う中、緊急連絡システムを確認したら、mailqueueに over 800 件の大量メール。配送に影響でているのかと色々と確認したら、メールアドレス間違いでエラーになったメールが各学校に送られていないみたい。
エラーメールが行き渡らないのは別途確認ということで、あまりにも大量なので強制的にエラーメールの未配送を選んで、メールを削除。
2/6雪に埋もれてます
今日は雪で専攻科2年の午後からの試験を除き休校。
とはいいながら、堀井さんから送られてきた9:30頃の正門。入れそうには見えない。(^_^)
休みをとって正解だった…。m(_ _)m
2段階認証のレポートにて
情報ネットワーク基礎で、セキュリティの話の中で2段階認証の説明を行ったので、レポートにて自分のアカウントの2段階認証の設定を行い、その経過をレポートにまとめるという課題をだした。TwitterやGoogleや自分のゲームアカウントの2段階認証でレポートを出してくれている。
ただし、レポートでは個人情報の扱いには注意すること…という条件をだしたけど、wordで提出されたレポートで、画像ファイルをみると、キャプチャ画像の上に図を貼って隠している状態のレポートが多い。これじゃ、上の図をずらせば個人情報丸見え…なレポートの人が若干見受けられた。以下の図がその状態を真似たもの。