見出し画像

ドイツの大学で卒論(情報工学)を書きました

ドイツの大学TUドルトムントの情報工学科で卒論を書いたので、経緯や経験をまとめてみました。

【担当教官探しと準備運動】
TUドルトムントのInformatik(情報工学科)では卒業に必要な180単位中の120単位を修了すると卒論を書き始めることができ、学生が自分で担当教官を探します。それまでの授業でいいと思った教授、卒論を書いた他の学生の評判がいいところ、興味のある分野の研究室(LS:Lehrstuhl)の教授、など選び方はいろいろ。情報工学科(Fakultät Informatik)の教授ならだれでも可。他には企業で卒論を書くという方法もあります。メールなどで卒論を見てほしい旨を伝え、先生側がOKすれば卒論開始です。
ワシはProseminar(卒論を書くための準備を目的としたゼミ形式のモジュール)で扱ったテーマがおもしろかったので、その担当だったKI(人工知能)の教授のところに連絡しました。が、もう指導中の人が多くこれ以上受け入れはできないといわれてしまいました。次のセメスターまで待ったら受け入れ可能かもききましたが、それも無理とのこと。出だしからしょんぼりですね。でも、希望の先生が受け入れできないということは少なくないです。
ということで、各研究室のサイトで卒論についての案内を漁り始めました。教員側からいくつか卒論向けのテーマが提案されてるところもあります。あとは過去の卒論を例としてアップロードしてるところも。その中でLS2の卒論テーマにいくつかおもしろそうなのがあったので、さっそく教授にメールしました。前年2021年の10月にTUドルトムントに着任したばかりの先生でどんな人なのかとか前情報がゼロなのでちょっとドキドキしました。すぐに返信が来て、まずは面談をしようということになりました。

面談に行くとまずはお互い自己紹介をし、これまでどんなモジュールをやってきたかを聞かれ、その後教授が各テーマをざっくりと説明してくれました。もうすでに他の学生に振り分け済みのテーマもありましたが、興味を持っていたテーマの中の1つFaktorisierungsalgorithmenに決めてその日は解散。テーマとともにメインになる本もすでに教授側が用意してくれてて、早速図書館で借りて帰りました。

テーマを決めてもすぐ開始とはならないです。ある程度お試し期間が与えられてます。この時点ならまだ試験課(Prüfungsamt)へ卒論登録もしてないので、参考文献を読んでみたり先生と何回かやり取りしてイマイチなら、テーマなり先生なりの変更がサクッとできます。ワシの場合はメインの本を読んだりアルゴリズムの実装を少し始めて2,3回先生と面談したのち、これに決定ということで試験課に卒論登録をしました。教授(Erste*r Gutachter*in)のほかにもう一人Zweite*r Gutachter*inを選ぶのですが、教授の元にいるWissenschaftlicher Mitarbeiterの1人を教授が選んで決定でした(ツイートで「教授の手下」と呼んでいた人物です)。彼に決まった理由は、実装に使ったSage Mathの経験が豊富だからというもの。卒論は4カ月の時間が与えられていて、ここからこの4カ月のカウントが始まります。病気やケガで途中卒論が進められなくなった場合は、診断書を提出すればその分期限が延長されます。この登録をした後でも一定期間内なら「やっぱりやめた」と撤回することができます。
さあ、担当教官探しと準備は終わりました。本格的に卒論開始です。

【読んで、実装して、実験して】
先生との面談はほぼ毎週でした。毎回次までにやってくる内容を指示されて、次の面談までにこなして、疑問点があれば面談で相談という形でした。テーマだけじゃなくその途中のマイルストーンも細かく設定してくれていて、自由度がないという側面もあるけれど、変な方向に暴走したり、内容が薄すぎたり、いらない沼に足を突っ込んで卒論提出というゴールに辿り着けないといった事故を未然に防いでくれます。最初のほうは参考文献内のアルゴリズムをプログラミングしてみて正しく機能するかをチェックしました。3つのアルゴリズムの実装が終わったところで「まずは計算時間を比較してみようと思う」と言ったところGOサインが出たので実験開始。入力値の生成方法とその理由、結果、そこから出てきた疑問点や改善点を報告し、GOサインが出ればやってみて…を繰り返しました。先生からの突っ込みを受けて比較実験したものもあれば、自分で突っ込みを入れて改良実験したのもありました。後々一連の実験を書いてまとめることになるので、その時に困らないように記録を取っておくことも大事です。基本的なことですが、実験の動機と目的(例:何を比較したいのか)、条件(変更箇所)とその設定理由(例:なぜそれが比較につながるのか)、理論から予想される結果、実際の結果と数値化・数値分析、結果から見えたこと、などを毎回まとめておきました。毎週の面談で先生に報告するために記録し始めたのですが、いろんな実験やってるとやった本人でもところどころ忘れてくるので、後々の進行にも役立ちますし、書く作業に入ったときに情報を整理して出すことができます。

【書く準備】
ワシの改良アイディアが大体出尽くして実験が終わったところで、書く作業に入りました。言語はドイツ語と英語が選択可能でした。この2つは教授やテーマにかかわらずほぼ確実に選択が可能で、担当教授が他にもできる言語があればそれを選ぶことも可能らしいです。ワシはドイツ語を選択しました。ずっとドイツ語で生活も勉強も仕事もしていたので英語がもうあまり出てこないという理由もありましたが、参考文献が英語なので、ドイツ語で書けば嫌でも自分の言葉になるという目論見もありました。
そして、Prüfungsordnung(試験規定)によって、文量が指定されています。Informatikの卒論の場合は、本文が40ページ以上120ページ未満。この「本文」の定義はあまり明確にされていないのですが、ワシの場合は、文章(目次などを除く)と図やグラフと疑似コードも含めて45ページで認可されました。実験結果のプロトコルはAnhang(Appendix)として付けました。
ちなみに学部が公式に配布しているひな形があります。LaTeX形式で、書式などの設定が済んでいるものなので、そこまでLaTeXに詳しくなくても書き始めれます。LaTeXのいいところは、数式や疑似コードがきれいに入れれるところと、各章ごとにファイルを分割できるので編集中に全体像を見失わないことです(ワードでも数式とかをきれいに入れることは可能らしいですが)。HTMLとCSSができる人ならほぼ直感的に使えます。学部と卒業生団体が共同で開催してたLaTeX講座に行っていたのですんなり始めれました。

【いざ、執筆】
ひな形にもある通り、そしてProseminarでもやった通り、動機、関連の先行研究、中身、まとめ・結論というよくある段取りです。Einleitung(導入)には動機と先行研究、卒論の大まかな流れのほかに、卒論に関連する数学知識の説明も入れました。これは教授の提案で、実装の根底にある数学がわかっていると示すのが目的です。「他のBachelorの学生が読んだときに理解できる」というというのも一つの指針のようでした。ちなみにここで対象にしたのは、高校までの学校教育やInformatikの必修モジュールでならわないもの、つまり卒論に当たってワシが新しく覚えたことでした。名指しでいうと、「Kongruenz modulo m」とか「Quadratischer Rest modulo p」とか「Legendre-Symbol」ですね。読んでる段階では適当にネットで調べて理解して終了だったんですが、これもワシの勝手な理解ではないと示すために理系大学生向けの数学の本とかを参考文献に書きました。

その次はいよいよ中身です。実装したアルゴリズムの説明(どんなアイディアが元なのかとか、実際どういう手順でコンピューターに計算させることができるのか)とか疑似コードとかで、この辺は参考文献のWiedergabe(再叙述)ですね。Eigene Leistung(自分自身の手でやったもの)であることが大事な卒論、ただただ英文の参考文献の翻訳マシーンにならないよう、具体的な入力値を例に途中でどんな処理がされて出力に至るのかを説明しました(BeispielとGegenbeispielは証明でも説明でも常に「イイ」)。ここでも「他の学生がわかるように」が目安でした。他の学生がわかるように説明することは、つまり自分が理解していて自分の言葉で説明ができるということですからね。後半は実験の経緯をまとめました。実験中の記録をもとに、何を観察したいのか、どんな入力値を選んだのか、何を変えたのか、どうしてその数値や変更を選んだのか、理論上推測される結果、実際に出てきた結果、それを受けて満足なのか次の実験をするのかなど。すべての実験をできる限り同じフォーマット(項目、情報の出し方)で統一して書くと、書き忘れや説明不足が避けられると思いました。それに読む側もわかりやすい(参考文献でも統一した展開だとわかりやすいですよね)。そして総まとめを書いて終了。

書く作業も、全部書いてから提出ではなく、毎週面談で進捗を報告でした。途中こういうグラフを入れたほうがいいとか、こことこことの繋がりが(文章だけからだと)わからないから書き足しなさいとか、教授や手下からアドバイスがありました。教授と手下は理論が破綻していないかなど内容面の指導はしてくれますが、ドイツ語の添削とかはしません。母語ではない言語で書いているのでその辺を聞いたところ、「内容が読み取れないほど悲惨なものや読みにくいレベルで文章がダメなもの以外は大丈夫」とのこと。他の人に文法などの添削を頼むのは可能とのことで元々ツレ(同じくTUドルトムントでInformatikやってたドイツ語母語話者)やGrammar Nazi(文法や正書法にうるさい人という意味)に変身できるといわれるマブ母の知り合い(彼もまた母語話者)にお願いしたかったのですが、二人とも都合がつかず、結局自分で読み直してタイポや文法の間違いを直して提出しました。「内容が読み取れないほど悲惨なものや読みにくいレベルで文章がダメ」な場合、提出前にストップがかかります。

提出はオンラインの卒論提出プラットフォームにアップロードで完了でした。アップロード後は表示されるQuittung(アップロードしましたの証明書)を保存し、教授と手下に連絡。このアップロードまでを4カ月以内に行う必要があります。

【プレゼン】

Präsentation、Verteidigung、Kolloqiumなどいろいろな呼ばれ方がありますが、卒論発表会のことです。口頭で発表し、質疑応答をするというもの。ワシの場合は、同じ教授のもとで卒論を書いた他の2人の提出者と一緒にやりました。テーマはみんな違います。順番に発表して、質問をしたりされたりという流れです。他の同席者は教授の研究室の人たちで、他の発表者のZweite*r Gutachter*inもいれば、発表者の卒論にはかかわってない人もいました。持ち時間は各自30分。長いように見えますが、4カ月の間いろいろやっているといっぱい語りたくなってしまい、個人的には1時間は余裕で話せるところを絞りに絞った30分でした。言語は英語がドイツ語か、形式は(まだコロナ措置が取られている期間でもあったので)オンライン化対面かを選べました。結局、ドイツ語・オンラインになりました。

Bachelorなのもあって、先生側からも基本的に「意地悪な」質問はされませんでした。対象内容を表面的にではなくしっかりある程度の深さまで理解しているか、本当に自分でやったものかを確かめるのが目的とみられる質問でした。

【結果待ち】

さて、発表会が終わり、卒論も終了です。試験規約により、結果(Note:評点)は提出から8週間以内に出すことになっています。発表のTerminが遅くなったのでこの時点で残り3週間くらいでした。がしかし、割とすぐに結果が出されました。1,7。卒論はKlausurに比べていい評点がもらいやすいといいますが、2,0を切ったことには驚き。これにて大満足で終了しました。


【まとめ】

今現在のBachelorは2つ目のBachelorなので、実は一度卒論を書いた経験があります(日本の大学でだけど)。しかも当時は西洋史専攻だったので卒論の前からレポートなどをたくさん書かされており、文献を見つけて読んで書くというのはもう慣れた作業でした。一応Proseminarでこの一連の流れは勉強しますが、レポートなんてそれ以外全く縁のないカリキュラムなので、そこで苦労する人もいるそうです。

最初のBachelorの卒論のときとは全く違い、テーマどころか参考文献もメインになるものは教授側が提示してくれたり、その上毎週面談してくれたりと、至れり尽くせりで驚きでした。この辺は同じ大学同じ学部でも教授によって違うと思うので、運がよかったとも言えます。

気が向いたら追って加筆・修正をします。

この記事が気に入ったらサポートをしてみませんか?