本文へジャンプ

学科概要
  • HOME
  • 学科概要
  • 学生による学科紹介

学生による学科紹介

3年生夏学期

計算機構成論 | 平木敬
必修科目
来学期に控えるCPU実験とも関連してくる講義です。主に扱うテーマは”計算機の命令セット設計”、”計算機高速化技法”などです。世の中にプログラミング言語はさまざまありますが、それらのほとんどは”高級言語”と呼ばれています。計算機の中ではこれを機械が分かるように翻訳した”機械語”が使われます(実際には高級言語→アセンブリ言語→機械語という流れがありますが、これは2年冬の基礎実験で学びます)。計算機は、たとえば先頭に"0101"が来たら次に来る数同士を足し合わせ、"0110"なら引き…のように機械語と計算処理の辞書のようなものを持っています。これが命令セットです。命令セットは計算機の振る舞いや性格を決める重要なものです(画像処理向けなら特別に行列演算向けの処理を入れておく…等)。この講義では歴代の計算機で用いられてきた命令セットを学ぶほか、1〜2人でひとつの計算機を担当し、そのマニュアルを読んで命令セットについて発表する機会があります。CPU実験では命令セットは自分たちで定義する必要がありますので、そうした意味でこの講義は重要といえるでしょう。”計算機”は、大雑把には演算装置とメモリ(と入出力デバイス等々)から成り立っていますが、授業後半では、メモリアクセスを高速化したり、命令の実行順を入れ替えたりして計算機の処理速度を上げるテクニックを学びます。CPU実験の課題は、自作したCPUで与えられたプログラムを実行し、規定のCG画像を出力することが目的ですが、これが達成できた後は、プログラムの実行からCGを出力するまでの処理時間をできるだけ短くしていくのが目的となります。したがって、ここで学ぶ高速化技法は処理速度向上に大いに役立つでしょう。
離散数学 | 今井浩
必修科目
離散数学は文字どおり、連続でない離散的な対象を扱う数学です。授業では各種の問題をコンピュータ上で効率的に解くアルゴリズム、グラフなどの離散的な対象が持つ性質などを扱います。対象がある性質をもつことにより、知られている効率的なアルゴリズム適用できたり、できなかったりします。今井先生が特に授業で強調するのは二重性(duality)です。二重性とはある性質がある性質の裏返しであり、その裏の性質ももとの性質の裏返しであることです。例えば、2部グラフにおいては最大マッチングとグラフについてあるネットワークを考えたときの最大流量は同じ値になり、これにより、点被覆を簡単に求めることができます。この性質が成り立っていれば、経験則ではありますが、その構造を利用した効率の良いアルゴリズムが存在することが多いと言われています。 板書を主に用いて授業は進められます。板書を授業の内容を理解しながら板書を写していくことが今井先生にも推奨されています。だいたいほとんどの内容をカバーする参考書が紹介されますが、それに沿って授業が進むわけではありません。授業では定理の証明、定理の紹介や用途などしか紹介されないのですが、演習は情報科学演習1(情報科学科3年は必修)で積むことができるので、それとあわせてより深い理解を得ることができます。
言語処理系論 | 小林直樹
必修科目
言語処理系論は、ソフトウェアの実装に欠かせないコンパイラの動作機構と具体的アルゴリズムの深い理解を目標として、言語処理系構築のための素養の会得、あわよくば履修者が未来の高機能言語処理システム開発の一端を担う者として世界に羽ばたかんことを企図した講義である。まずは機械がプログラムを解読するための字句解析・構文解析についていくつかのアルゴリズムを比較検討する。この時点で、機械のために相当譲歩された言語であるプログラミング言語ですら、厳密なデータ構造に落としこむのはなかなかに骨の折れる作業であり、人間の直感的な読解プロセスと想像以上の乖離があることに気づくだろう。さらに効率化のための様々な最適化手法について学習し、極めつけにはコンパイラコンパイラなるものの理論的背景となる二村射影が登場して講義は終了となる。小林直樹先生による簡明で的を得た解説は大変理解の手助けになる。講義スライドも充実しており、ウェブページで配布もされるので後で見直したい場合にも安心だ。
情報論理 | 蓮尾一郎
必修科目
この講義では、ものごとを計算機で処理するための理論の基礎を学ぶことができます。 講義の前半で扱う論理学では、推論するということの定式化を行い、その定式化の正しさを議論することを通じて、計算機で推論を行うための理論的手法を学びます。具体的に論理学では、推論するということが、記号列の規則的な書き換えを行うこと、それぞれの記号に意味を与えること、という2つの作業に分離されて定式化されます。このうち記号列を書き換える作業だけを行って「正しい」推論ができるかどうか議論します。 後半で扱う計算可能性理論では、計算機の能力についていくつかの等価な特徴づけを与え、計算機の能力の限界について学びます。例えば与えられたプログラムが停止するかどうかを「はい」「いいえ」で答えることが、計算機にはできないということを実際に証明します。 この講義と付随する演習によって、記号列とその意味を明示的に分離するというアイデア、構成的帰納法や対角線論法といった証明手法など、理論計算機科学で基本的な考え方を身につけることができます。また講義は先生お手製の英語の教科書を用いて、英語の板書と日本語の説明によって進みます。これから先、英語の論文を読み英語で卒論を書くことになる情報科学科生にとって、この講義は理論計算機科学の英語へのよい導入になることでしょう。
オペレーティングシステム | 石川裕
必修科目
OSというとWindowsやMacなどの見た目がどうとかそういう話を想像されるかもしれませんがそうではなく、より根幹の機能について講義されます。 そもそもOSというのはパソコンやスマートフォンはもちろん駅の電光掲示板や冷蔵庫に至るまでコンピュータがあればほぼ確実にその中で動いているもので、現在のコンピュータ・システムに欠かせないものです。 難しい言葉で説明するとOSの主な役割は、仮想化、抽象化、ハードウェアの有効利用及び資源管理であるとまとめられます。 例えば皆さん今iTunesで音楽を聞きながらブラウザでこのサイトを見ているかもしれませんが、もしそのパソコンにOSが入ってなかったら、そんなふうに複数のアプリケーションを同時走らせるなんてことはまず不可能です。 仮になんとかOSなしで同時に走らせることができたとしても、その場合はあるプログラムが異常終了した瞬間に他の全く関係ないプログラムも同時にクラッシュする可能性に怯えながら使わないといけませんし、新たなアプリケーションを開く際にいちいちそのパソコンが搭載しているメモリの容量を上回らないか気にしないといけません。 更にOSがなければファイルやディレクトリという概念も存在しないので、皆さんはどのデータがディスクの何番地にあるのかいちいち覚えていないといけません。 そしてセキュリティも皆無になるので何か悪意のあるプログラムを実行してしまえば最後、パソコン上の文字通り全ての情報を消されたり奪われたりすることになります。 などなどこのようにOSによってコンピュータはとても便利に(というか使用可能に)なっているのですが、それだけではなくOSのおかげでコンピュータは高速化しています。 特に、新しい特徴的なハードウェアが登場したとき(最近だと不揮発性メモリ(MRAM, PRAM)などでしょうか?)に、その特徴を活かして最大限性能を発揮できるようにするのはOS周りの研究者の仕事で、彼ら研究者の努力のおかげでユーザーは何も気にしなくてもその恩恵にあやかることができるのです。 そういった研究の基礎(の基礎)を学ぶことができるのがこの講義なのです。