はじめに
以下は,音声ファイル(16:44)を文字起こししたスクリプトです.
はじめに一言
私も何年か前は学生でどの分野を学ぼうか迷っていました.コンピュータサイエンスは数学や情報系の様々な知識が必要で学んでいく自信がなかったときもあります.しかし,すっかりその学問の面白さに魅せられて大学院に進学し大変な幸運の巡り合わせで大学教員として採用して頂いて今日に至ります.おかげさまで現在でもコンピュータサイエンスの勉強と研究を仕事として継続することができています.コンピュータサイエンスは役にたつ学問ではありますが,皆さんにはその理論の美しさや楽しさも是非とも味わってもらいたいと思います.
読書のすすめ
コンピュータサイエンスやプログラミング言語については自分から進んで書籍を読んで学んで欲しいと思います.ウェブページだけでなく,紙の本で読書をするようにしてください(2020年時点では圧倒的に紙の書籍がオンラインの情報より質・量共に勝っています).授業のテキスト以外は1冊も本を読まない,ということが無いようにしてください.まとまった時間に知識を体系的に学べるのは学生の特権です.是非,読書を習慣として欲しいと願っています.
コンピュータサイエンスの初歩
皆さんは1–2年次においてコンピュータサイエンスの分野の勉強をしてきました.例えば,アルゴリズムとデータ構造,プログラミング言語,コンピュータアーキテクチャ,数値計算,オペレーティングシステム,ソフトウェア工学,データベース,(人工知能,ロボティクス,人間とコンピュータ)といった分野の勉強をしてきました.研究室配属後にも京都大学の理系1回生(1年次生)向けの入門書[OhGN99][TaNH99]を配布します.入門書とは専門分野の前提知識がない人向けに書かれたおり,その専門分野の学習を始める際に読むのに適した書籍です.ゼミでもこの一部を用いて学びを深めます.
ゼミでは直接は扱いませんが,よりとっつきやすいコンピュータサイエンスの入門書としては次のものがあります. [Bier93]は,MIT(マサチューセッツ工科大学)の教養課程のテキストです.語り口がやさしく,理系向けのテキストよりも数学を前提としていません. [Kawa17]と[Yama17]は,東京大学の教養学部の文系理系の両方が対象の教科書です.古典的な良書と知られているものとして[GoLi00]があります.現代からすると記述がやや古風で読みにくいところもあるかもしれないので,初歩を学ぶための1冊目としてはお勧めません.
読み物として読めるものには[Saka02]があります.[IsMi17]は,基本的なアルゴリズムを絵で見て直観的に理解するのにおすすめです.
南山大学図書館における横山研究室の指定図書を利用してください.
- [OhGN99] 大堀 淳,ジャック ガリグ,西村 進:コンピュータサイエンス入門〈アルゴリズムとプログラミング言語〉,岩波書店 (1999).
- [TaNH99] 田辺 誠,中島玲二,長谷川真人:コンピュータサイエンス入門〈論理とプログラム意味論〉,岩波書店 (1999).
- [Bier93] Biermann, A.W.(原著),和田英一(訳):やさしいコンピュータサイエンス,ASCII (1993).指定図書 請求番号VB3/V041500
- [Kawa17] 川合 慧:コンピューティング科学 新版,東京大学出版会 (2017).指定図書 請求記号 VB3||V043677
- [Yama17] 山口和紀:情報 第2版: 東京大学教養学部テキスト,東京大学出版会 (2017).指定図書 請求番号VB3/V041949
- [GoLi00] Goldschlager, L., Lister, A.,武市正人(訳),角田博保(訳),小川貴英(訳):計算機科学入門,第2版,近代科学社 (2000).
- [HeAl20] Hey, A.J.G., Allen, R.W.,原 康夫(訳),中山 健(訳),松田和典(訳):ファインマン計算機科学 (岩波オンデマンドブックス) ,(2020).指定図書 請求番号(不明)
- [Yuki18] 結城 浩:プログラマの数学,第2版,SBクリエイティブ (2018).
- [Saka02] 坂村 健:痛快! コンピュータ学 (集英社文庫),集英社 (2002).指定図書 請求番号VB3/V041613
- [IsMi17] 石田保輝,宮崎修一:アルゴリズム図鑑 絵で見てわかる26のアルゴリズム,翔泳社 (2017).指定図書 請求番号VB3/V042066
文章の書き方
論理的な文章が書けるようになることは重要なことです.1年次に用いた 理工学基礎演習(後半)資料 をよく復習してください.このテキストに掲載されている問題の一部を,WebClassの「テスト/アンケート」の「課題 文の技術」という自習教材にしてありますので,満点になるように回答してください. 出版年が4半世紀以上前の1981年でありながら,現在も継続して売れ続け累計100万部出版された[Kino81]は理系の学生には必読書です.エッセンスを手軽に学べる漫画版[KiKu18]を先に読み始めてみても良いでしょう. 私が学生のときに文章の書き方を[Sugi01]の元となるテキストで著者である杉原先生に学びました. 卒業論文の書き方は[Naka10]も参考になります.理科系で共通するところが多いので分野や大学が違っても参考になる部分は少なくありません.
スライドの作り方は,京都大学学際融合教育研究推進センターの宮野先生が執筆された書籍[Miya09]の豊富な実例も参考になります.
- [Kino81] 木下是雄:理科系の作文技術,中公新書 (1981).指定図書 請求番号VB3/V040895
- [KiKu18] 木下是雄(原作),久間月慧太郎(作画):まんがでわかる 理科系の作文技術,中央公論新社 (2018).
- [Yuki13] 結城浩:数学文章作法 基礎編,ちくま学芸文庫 (2013).
- [Sugi01] 杉原厚吉:どう書くか 理科系のための論文作法,共立出版 (2001).指定図書 請求番号VB3/V040918
- [Naka10] 中田 亨:理系のための「即効!」卒業論文術:この通りに書けば卒論ができあがる,講談社 (2010).指定図書 請求番号VB3/V041965
- [Miya09] 宮野公樹:学生・研究者のための 使える!PowerPointスライドデザイン 伝わるプレゼン1つの原理と3つの技術,化学同人 (2009).指定図書 請求番号VB3/V040896
LaTeX
本研究室ではLaTeXを使えるようにしておくことをお勧めします.理工学基礎演習で学んだ内容に加えて本分野でよく使うコマンドや慣習を学んでいく必要があります(cf. 2018年度理工学基礎演習(前半)資料の第5章と第6章).
我々の分野の多くの論文誌や学術会議で,LaTeXで書かれた原稿を投稿することが推奨されています.例えば,情報処理学会,日本ソフトウェア科学会,電子情報通信学会といった学会の研究会やプレプリントサーバarXivにおいてLaTeXによる原稿の投稿が推奨されています.貸与ノートPCのVirtualBox上のUbuntuにはLaTeXの環境が用意されています.
LaTeXはこの分野の文章を記述するのに便利です.2016年度3年次生Q3の課題に対するLaTeXで作成したレポートの例を見てください.このソースコードを見ることで書き方を学べます.複雑な数式やフォントの使い分けが多ければMicrosoft WordなどのワープロソフトよりもLaTeXを用いるのが便利です.過去の卒業生では8割強がLaTeX, 2割弱がMicrosoft Wordを用いています.ただし,2019-2020年度は全学生がLaTeXを用いました.
現在ではオンラインLaTeXエディタ(例えば,Overleaf)も研究者に用いられるようになってきました.オンラインLaTeXエディタには手間がかかるインストールが不要です.手軽に試すことができます.リアルタイムにグループで同一の文書をバージョン管理しながら編集するときに特に便利です.とりあえずOverleafに登録して試してみると良いでしょう.
- [OkKu19] 奥村晴彦,黒木裕介:[改訂第7版]LaTeX2ε美文書作成入門,技術評論社 (2019).
プログラミング
プログラミング言語OCamlを研究室の共通のプログラミング言語とします.2019年度の卒業研究において使っていたプログラミング言語はOCamlの他に,Python, Asymptote, MATLABがありました.2019年度のゼミで主に用いたプログラミング言語はOCaml, C, Java, JavaScript, PHPです.かつてはRubyもゼミで用いました.他にも研究用の小さなプログラミング言語Janus, R-WHILE, SRL, RL, Petitも扱いました.
OCamlは関数型言語の1つです(使う人をあまりみたことがありませんが,オブジェクト指向もサポートしています).プログラミング言語の処理系の制作にはとても力を発揮します. お茶の水女子大学 理学部 情報科学科 2年生用のテキスト[Asai07]やこのテキストを使った授業の資料で初歩を学ぶのも良いでしょう.
- [Asai07] 浅井健一:プログラミングの基礎,サイエンス社 (2007).指定図書 請求番号VB3/V041931, 本テキストを使った授業紹介.
- OCamlの公式Webサイト http://caml.inria.fr/ocaml/, OCamlのマニュアル http://caml.inria.fr/pub/docs/manual-ocaml/index.html
- OCamlを紹介したサイト https://ocaml.org/
開発環境
テキストエディタ,ファイルマネージャ,ターミナルなどをはじめとする開発環境を整備し習熟しておくことはコンピュータサイエンスの研究を進める上で重要です.1–2年次に使ってきたテキストエディタのGNU Emacs,ファイルマネージャのNautilusやExplorer,GNOME端末を使い続けるので構いません.上級生は,GNU Make, gitなども使っていました.
Emacsを使用する場合は,Emacsのチュートリアルをやっておくこと.
情報環境の整備
貸与ノートPCの調子が悪い場合は整えること。「Windows 10 のメモリ使用量を減らす」を参考にすること.
大学のメイルアドレスに送られている招待状に従って以下を行うこと.また,名簿のLINEグループ加入,Slack, overleaf, およびgithubの列の自分の行のセルを書き換えること.
- ガイダンス資料に従って,加入できる人はLINEグループに加入すること.
- Google Workspace for Education Fundamentals(旧 G Suite for Education)のアカウント(例 19se000@yokoyama-lab.org)でログインして初期パスワード(学生番号になっている.例 2019SE001)を自分しかわからないパスワードに変更する.具体的には,Google Driveに 19se000@yokoyama-lab.org のようなアカウントでログインできることを確かめること.
- Overleafに登録する.LaTeXをクラウド上で編集するのに用いる.
今後,文章を作成するときに,設定をする. - githubに登録する.開発するソフトウェアのバージョン管理に用いる.
後に,organization「横山研究室」に登録してもらう. - 横山研究室のSlackに大学のメールで登録する.研究室内のディスカッションに用いる.
以下のソフトウェアのインストールをすること。
- ドキュメントを読んでOCamlをインストール
- BNF Converterをインストール
いずれチュートリアル(一部,日本語に訳したもの)をやる(先に予習をしておくと良い).チュートリアルにインストール方法についての説明がある.バイナリをダウンロードして使用することを推奨する.
1年生から学んできた内容を踏まえて,推奨する環境は次のとおりである:
Windows 10 + WSL2 (Windows Subsystem for Linux) の「Ubuntu 20.04 LTS,emacs,OCaml, BNFC, git」 + overleaf (LaTeX) + github
英語の辞書の購入
- ちゃんとした英和辞典で英単語を調べられるようにしておくこと.紙の辞書と電子辞書はどちらでも構わない.(例:ジーニアス英和辞典 第5版)
輪読,輪講,研究報告
3-4年生の演習(いわゆるゼミと言われるもの)では,理系の研究室で一般的に行われているような輪読・輪講,研究進捗報告を行っていきます.ときに講演会へ出席することもあります.基本的に講義を受講することはありません. 輪読と輪講は,それぞれ書籍と論文の担当部分を読み以下の内容をレジュメやスライドにまとめて発表をするものです.ホワイトボードを使うこともあります.発表者は,その当日の「指導者」であり「先生」になります.
- 内容の要約
- 補足説明(途中の式変形,数学的な補足,指定された書籍以外から補っても可)
- 疑問や理解できなかった箇所(理由や原因もあるとよい)
文献の一部のコピーアンドペーストだけで資料を作ったり英語の文献やスライドの全訳をするようなことはしてはいけません.ただし,定義や数式はむしろ文献にあるとおりにしてください.
研究進捗報告は,研究進捗状況の報告や研究討論を行うものです.こちらも主にレジュメやスライドを用いて発表をします.
対面授業の場合:発表担当者は,レジュメおよびスライドを事前に参加者の人数分のコピーを用意します.さらに,電子的なファイルを配布するとよいでしょう.スライドの印刷をするときは,1ページに6ページや8ページを割り付けるなどして,紙の節約を心がけてください.