研究室選択

2年生の後半くらいから研究室のことを少しずつ意識しだすと思うけど,

基本的には自分のやりたいことができる研究室を選ぶのがベスト.

やりたいことがよくわからないとかなら,まずは興味ある研究室に見学に行くべき.

先生と話したり,4年生と実際に話してみて研究室のテーマや雰囲気を知ることは大事.

注意することは,どんなにやりたいことでも教員との相性は非常に重要で,

どうしてもこの先生は無理という先生のところには行かない方がいい.

研究テーマの不一致よりも人間性の不一致の方が研究室での生活に影響があることの方が多い.

それで不登校とかになってしまって卒業できないでは元も子もない.

その研究室でないと出来ないテーマかどうかをしっかりと確認することも大事で,

もし他の研究室で似たテーマができるのであれば,あとは教員で選べばいい.

 

拘束時間とかが気になる人は先生にしっかりと聞いた方がいい.

研究室に行くのが,週1回しかないところもあれば,毎日のところもあるだろう.

ただ週1回しか拘束はなくても,やるべきことは異常に多いところもあると思うので,

研究室での拘束が少ないから楽,多いから大変ということはない.

よくブラック研究室云々という話を聞くが,週1回しか拘束はないけど,

特に指導もしてもらえず気づいたら卒論が危うくなるという研究室は隠れブラックだろう.

ただ教員が言うことよりも学生の体験談の方がリアルなので,

研究室見学する時には学生さんの話も聞けるようにセッティングしてもらおう.

 

自分たちが必要な情報はしっかりと集めて判断するようにしよう.

研究室のWebに掲載されている情報だけで判断するのは危険なことも多いので,

できるだけ研究室を訪ねて話を聞くことが望ましい.

バブルソート

基礎プロや応プロでバブルソートを習うと思うのだけど,

どうもコードの丸暗記が多くて,記憶が曖昧だったりして,

いつまでたっても正しいコードをかけない学生がいる.

バブルソート程度なら,とりあえず考え方を押さえておけば書けるはず.

 

バブルソートは「隣り合う要素の大小関係を比較して並び替えて行く」

ということが基本的な考え方.

例えば,「4,7,3,9,2」という列を昇順(小さい要素から大きな要素の順)にソートすると,

4 7 3 9 2 (配列だと0番目と1番目を比較)

4 7 3 9 2 (配列だと1番目と2番目を比較)

4 3 7 9 2 (配列だと2番目と3番目を比較)

4 3 7 9 2 (配列だと3番目と4番目を比較)

4 3 7 2 9

と隣合う要素を比較して,手前が大きければ入れ替えるという操作を行う.

この操作で,1番大きな要素の「9」は一番後ろにくる.

2巡目は,

4 3 7 2 9

3 4 7 2 9

3 4 7 2 9

3 4 2 7 9

3巡目は,

3 4 2 7 9

3 4 2 7 9

3 2 4 7 9

4巡目は,

3 2 4 7 9

2 3 4 7 9

となり,ソートが完了する.

 

各巡で行っていることは,「隣の要素を比較して交換する」ということだけなので,

listを配列,swapを要素を交換する関数とすると,上の各巡回は,

for(int j=0; j<=4-(今の巡回数); j++){ 

    if( list[j] > list [j+1] ) swap( list[j], list[j+1]);

}

とコードを書くことができる.

jの範囲で迷うかもしれないが,各巡回で最後に比較する要素は,

1巡目:配列の3番目と4番目

2巡目:配列の2番目と3番目

3巡目:配列の1番目と2番目

4巡目:配列の0番目と1番目

となるので,jは0から4-(巡回数)の範囲で動けばいいことがわかる.

 

あとは,巡回数が4回であることに注意すると,

上の作業を繰り返せばいいだけなので,

for(int i=1; i<=4; i++){

 for(int j=0; j<=4-i; j++){ // 4-(各巡回数)= 4-i

     if( list[j] > list [j+1] ) swap( list[j], list[j+1]);

 }

}

と完成する.

 

このままだと要素数が5にしか対応できないので,どんなサイズにでも対応できるようにしよう.

今,配列のサイズをnと置くことにする.

サイズに関係するところは,赤字になっていることは簡単にわかるはず.

for(int i=1; i<=4; i++){

 for(int j=0; j<=4-i; j++){

     if( list[j] > list [j+1] ) swap( list[j], list[j+1]);

 }

}

あとは,どう書き換えるかであるが,外側は簡単で,

例を見ればわかるように,配列のサイズ-1回の巡回を行えばいいので,

for(int i=1; i<=n-1; i++){

 for(int j=0; j<=4-i; j++){

     if( list[j] > list [j+1] ) swap( list[j], list[j+1])

 }

}

となることがわかる.では内側は?

例に戻ると,各巡回において,最後の要素の比較が,

1巡目:配列の3番目と4番目

2巡目:配列の2番目と3番目

3巡目:配列の1番目と2番目

4巡目:配列の0番目と1番目

というようになっていることから,一般化すると,

i巡目:配列のn-i-1番目とn-i番目

となることがわかる.実際にn=5を入れると正しいことが確認できるだろう.

ということで,最終的に,

for(int i=1; i<=n-1; i++){

 for(int j=0; j<=n-i-1; j++){

     if( list[j] > list [j+1] ) swap( list[j], list[j+1]);

 }

}

となって昇順のバブルソートのコードが完成する.

 

コードを書く時に必要なことは,(できる人は別として)具体的な例題を考えて,

まずは,どうすれば問題が解けるかを考える.

そのあとは,具体的なケースでいいので,それで動くコードを書いてみる.

最後に一般化するということを行えば,少しはミスを減らすことができると思う.

ただ,もちろん特殊なケースを考えることが必要になったりすることもあるので,

全てがこの方法で解決できるわけではないが,

何もわからない状態で,いきなり一般化したプログラムを書くというのは,あまり得策ではない.

 

プログラミングの勉強

僕はあまりプログラミングが好きではないので学生さんの気持ちもわかるんだけど,

さすがにうちの大学でやる必修の範囲くらいは普通に書けるので,

情報科学科に入ってきたからには,あの程度のことはできて卒業してほしい.

ただ,あの3コマの講義と演習だけでできるようになるわけないし,

できている学生はそれこそプログラミングの才能がある方なのだと思う.

ということで,できない人はしっかりと家でも学習時間を確保してプログラミングしましょう.

 

ただもちろん漠然と教科書読んでやっても退屈.

例えば,AIZU ONLINE JUDGE: Programming Challengeを利用してみる.

色々と問題があって,プログラム組んでコードをシステムに投げるだけ.

正解か不正解かオンラインでジャッジしてくれる.

実際にはメモリ制限や時間制限があるので愚直に組んだプログラムだと正解をもらえない場合もある.

ただ,現実の開発でもメモリ制限や時間制限は十二分にあることなので,

アルゴリズムをしっかりと考えるという能力も養われる.

基本的な問題を全部とけるようなら,うちの大学のプログラミングの講義なんて楽勝でしょう.

楽しくなってきた人は実際にAtCoderとかのプログラミングコンテストに参加してみるといいかも.

 

すでにそれなりに得意な人もプログラミングコンテストに参加してみたり,

有志で集まって何かアプリを開発したりして,さらに上のレベルに能力をあげましょう.

どうしても苦手な人は単位をとるということで精一杯かもしれないけど,

情報科学科を出て開発職に就こうと思う人は講義でやっているプログラミングは,

基礎的な内容で閉じているので,もっとガリガリとコードを書いた方がいい.

実際できれば卒論も楽になるだろうし,選べる仕事も増えるしね.

 

 

そろそろダイエットしよう

ダイエットするする詐欺をし続けて1年以上が経過.

だいぶ太ってから体重が変わらないから特に気にせず放置していた.

最近は体重は増えないけど,明らかにお腹出てきたし完全に中年おっさん笑

元々,陸上の長距離選手だったので現役時は52kgしかなかったのだが,

今や65kg近くになってしまって,この10年で13kg増...

身長が165cmしかないので,けっこうポッチャリしてきたなぁ,と.

 

2,3月は少しは時間に余裕があるのでダイエットしたいところ.

最悪,体重減らなくても筋肉質になればいいかな.

飲みに行くのをやめるのは無理なので,運動量を増やすしかない.

とりあえず,今はほぼ運動ゼロなので走るか泳ぐかしながら筋トレするか.

現状,ジムは課金されているだけの状態で何も得られていないので,

まずは週2-3回しっかりジムに行くところから始めないといけない.

ジム行ってから飲みに行きそうで,結果,太りそうだけど笑

 

とりあえず半袖になる季節までに少しは痩せたいなぁ.

今のままだと腹のところだけ綺麗にポッコリでてしまいそうだ...

健康のためにも少し飲みに行く量減らして運動した方がよさそうだな.

大学教員の仕事

たまに学生さんに「講義以外のときや,夏休みは何してるんですか?」って聞かれる.

ひどいと「夏休みとか春休みってやることないですよね?」とか笑

確かに講義だけ受けている学生からすると週1コマの講義でしか顔を合わせないので,

そう思われていても仕方ないかもしれない.

ということで,主な教員の仕事をメモしてみた.

 

ちなみに就業規則で決められている労働時間は,月曜から土曜午前までで計40時間の労働時間のみ.

下に記載した仕事で残業が生じても残業代とかは一切ありません笑

 

その1:講義関連

講義はそのために講義準備が必要で,しかも試験をするので採点等もしないといけない.

1つの講義でどれだけの準備時間や採点時間がかかるかは人それぞれだと思うけど,

1コマの講義準備で丸1日とられてしまうこともあったりする.

同じ講義を担当していると準備にとられる時間は減少していくけど,

それでも毎年少しは見直しを行うのでやっぱり時間は思った以上にとられる.

講義の質問(他の講義も含め)も対応するので,もはや何時間割けばいいか見積もれない.

この数年は毎年講義が変わっているので,ハードな準備しっぱなし笑

 

その2:研究室運営

2015年から指導教員の立場になったので,研究室運営がある.

卒論時期はもうほとんど自分の時間がとれないことも.

1研究室3-4人程度の配属であればそんなことは起こり得ないが,

現状,平均的には8-9人が配属されるので全員の卒論に目を通すだけで1日は簡単に終わる.

もちろん普段からゼミ等も行うので,その分も合わせれば相当時間を研究室運営に割いている.

3年生の後期から配属されるので,3年生の指導も入って後期はなかなかハード.

今年に一期生を卒業させたばかりで,まだまだ手探り状態なので,もっといい運営に向けて日々努力.

 

その3:学内業務

まず,学科会議や学部会議が毎月1-2回程度ある.

その日は水曜日の午後1時すぎから5時半くらいまではずっと会議.

他にも自分は学内雑誌の編集委員をしているので,その編集会議や校正もしている.

あとは2年生の担任なので時期がくれば留年生の面談やガイダンスの準備などが入る.

何か委員が割当られれれば,その分だけ仕事が増えるのは確実.

来年度はもう2つばかりやることが増えるので,自分の時間が減るのは当然.

 

その4:学外業務

大学の教員は大学とは別に研究会に所属していることが多く,

そちらの委員になると研究会運営の仕事が割り当てられる.

現在は電子情報通信学会のコンピュテーション研究会の幹事になっているので,

今年だとHP更新や研究会への参加等の仕事がある.

来年度は主幹事になるので,研究会の運営やメールの配信などの仕事に.

ちなみに来年はうちの大学で研究会を行うので,その準備も必要.

 

その5:研究

何もない時間は研究をしている.自分の論文を書かないと大学教員は評価されない.

何年も論文出していないと,あいつはダメだ,と酷評されることすらありえる.

企業と共同研究というのも1つの形だと思うので,評価の仕方は様々だが.

特に理工学部だと卒論研究があって,学生は研究室で指導を受けるわけなので,

研究していない教員の研究室に行きたいとは少なくとも自分は思わない.

なので,空いた時間はできる限り研究したり打ち合わせで出張したり.

学生が休みの期間はこの時間が比較的とりやすいので勝負の時期.

 

主なところでこの5つくらいかな,と.

何か忘れている気もするが,それはどれかに含まれているとみなしているはず.

ということで,教員は学生の休み期間にのんびりしているわけではないです笑

卒論回顧

卒論が2月9日に終わったのでメモがてら.

うちの大学は3年生の後期で研究室配属されて研究室生活がスタートする.

とはいっても,3年生の間はプロジェクト実験2コマと輪講1コマのみ.

現状,それが木曜日の1-3限なのでたった3コマしか研究室でのゼミはない.

うちは春休み前に研究テーマをある程度決めてしまうので,

その勉強資料を春休み前に渡して各自で勉強をしてもらっている.

今年から数名を同じ分野の研究に固めて勉強するような方針にした.

 

4年生に入ると,輪講とあとはゼミのみ.

こうなると各研究室によって来なければいけない日数が変わってくる.

うちの研究室は4年生は前期は週3日9コマをベースに研究室に来させている.

週1日にしか来なくていい研究室もあるらしいので,それに比べれば多い.

ただ,就活等に制限はかけていないので,ちゃんと連絡があれば他の日に振り返ればOK.

僕自身はあまりコアタイムを設けたくないのだが,

大学に来ない学生がしっかりと卒論を進める確率は残念ながら低いので,

どうしても半ば強制的に大学で作業をさせているのが現実である.

前期の終わり頃には中間発表を研究室内で行う.

 

後期からは状況に応じて研究室の日数を決めているが,基本はやはり週3日.

12月後半に卒論の初稿を提出させているが,2月に本提出なので,だいぶ早い設定の締切である.

9人分の卒論をすべて確認するには時間が必要なのと,1月にデスマーチしたくないのが理由.

実際,今年は1月にインフルエンザにかかった学生がいたので,かなり危険だった.

1月に入れば発表練習を行い卒論発表会を迎える.

1人最低3回は発表練習をするので,しっかりと準備はできている方だと思う.

 

あとは本提出と発表会.

今年の例だと2月1日に卒論提出で8日と9日が発表会だった.

発表会は1人10分発表+3分質疑応答.

うちの研究室の発表への質問が非常に有意義なものが多かったので,

特に止めずに5分以上質疑応答するケースが多く,非常によかった.

学生にとってはたまったもんじゃないだろうが,いい機会だと思うし勉強になっているはず.

 

来年度の4年生も同じようなスケジュールで進んでいくことになるだろう.

3年生については,週1回3コマでは少し厳しい部分も見えてきたので,

来年度からは週2回で合計4-5コマ程度に増やして研究室生活を送ってもらおうと画策中.

これを導入すると,おそらく研究室の人気は下がるだろうけど,

週2回程度のやる気もない学生を受け入れて運営するのは労力の無駄なのでいいかな,と.

そもそも毎年,研究室紹介でプチブラックですとか冗談半分に言っているからすでに人気は高くないだろうけど笑

2017年

2017年になりました.

今年もよろしくお願いします.

 

今年は色々と勉強すべきことがあるので1つ1つ勉強していきたい.

1月は卒論関係があるのでバタバタするだろうけど,それでも時間を作っていきたい.

とりあえず自分の論文の修正もあるからやることは多いな.

さすがに三が日はゆっくりするけど,4日から普通に仕事に戻るかな.

 

明日と明後日はいつも行く居酒屋に挨拶回りかな笑

新年から体調崩さないようにだけ気をつけねば.