本文へジャンプ

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

学生による学科紹介

2年生冬学期

アルゴリズムとデータ構造 | 五十嵐健夫
必修科目
この講義では、多量のデータを効率よく格納するためのヒープ、スタック、木といったデータ構造や、データ群に対して行うソートや探索などの基本的なアルゴリズムとその計算量、そしてグラフ(これもデータ構造の一種)について学びます。たとえば電話帳にデータを追加していくとき、ただ次々後ろに追加してしまうと誰のものがどこにあるかわかりませんが、”五十音順”というルールを決めて、田中さんは斉藤さんより後で中島さんより前…という風に考えて追加していけば指定の要素を見つけるのが早くなります。このように、データの追加・削除・検索などをしやすくするための工夫がデータ構造です。アルゴリズムという言葉は、日本語では”(ものごとを効率よく行うための)手続き、ルール”などに相当します。中でもソート(並び替え)アルゴリズムは、プログラミング言語を学習する際の初歩的課題になることが多く、学んだことは今学期の基礎実験や次学期の関数型演習で大いに生かされるでしょう。また、アルゴリズムの性能を示すのが”入力に対してどれくらいの手間がかかるか”を表す計算量という概念です。同じことをやるなら手間が少ないほうがいい、ということです。計算量そのものは3年冬学期の計算量理論や情報科学演習IIで本格的に学習します。最後にグラフについてですが、この授業で扱うグラフは、棒グラフや円グラフではなく、いくつかの頂点とそれらを結ぶ辺でつくられるデータ構造をあらわします(情報分野で単にグラフというと基本的にはこちらを指します)。たとえば、"AさんとBさんが友達である"をグラフにすると、AさんとBさんはそれぞれ頂点、友人関係は頂点同士をつなぐ辺で表されることになります。グラフについても、詳しくは計算量理論や情報科学演習IIで学習します。教科書には擬似コードが多数載っているので、担当の五十嵐先生も仰るとおり、自力で実装してみると理解が深まるでしょう。
情報数学 | 須田礼二
必修科目
情報数学の講義では今後情報科学の勉強、研究をしていくために役立つ数学的概念とその応用などを扱います。前半に集合、関係、束、代数系を扱い、後半に情報理論を扱います。すべてのテーマが3年以降の授業、または研究を行う上で必要であろう知識がカバーされます。かなり幅広い範囲を扱うため、ほとんどのテーマについて触りだけが解説されるので、さらに詳しく知りたい場合は自学するか、または数学科の該当する授業を取る必要があると思います。 板書を主に用いて授業は進められます。多くの内容を広く扱うので何かの教科書にそっているわけではなく、扱う分野ごとに参考書が何冊か紹介されます。毎回1,2枚の資料が配られ、その回の要約、板書で扱うのは長すぎる証明などが記されています。また毎回の授業でレポート問題が出題され、学期中に2回に分けてまとめて提出します。レポート問題は毎回その授業の範囲から出題されます。出されたレポートはその週の内に解くと、自分の理解度をテストすることができ、次の授業も万全の理解で望むことができるのでおすすめです。
形式言語理論 | 蓮尾一郎
必修科目
この講義では主に有限オートマトン、正則言語、文脈自由言語を扱います。正則言語と有限オートマトンの関係、種々のオートマトンの等価性、文脈自由文法と正則言語の関係などが主なトピックとなります。形式言語はもともとは自然言語やそれに関する人間の思考のモデルとして提案された概念ですが、現在ではプログラムを扱うモデルとしても用いられます。例えばコンパイラの字句解析、構文解析では正則言語が用いられており、プログラミング言語の仕様記述などに文脈自由文法は用いられています。この授業内で応用の話に入ることはないのですが、これらのモデルは3年の授業「言語処理系論」、「言語モデル論」、「コンパイラ演習」などで応用の話が詳しくなされます。また厳密にプログラムを扱う上で便利な概念なので学ぶ価値はあります。それ以外にも、構造的帰納法、記号列などの数学的な記法など情報科学で今後よく使うことになる数学的概念、手法に慣れる機会になります。 授業は基本的に板書と教科書(履修すると配布されます)を用いて進められます。ほとんどの詳細な証明などは教科書に譲り、授業では教科書だけではつかみにくいイメージや全体像に重点がおいて解説されます。まれにスライドを用いた講義、英語による講義も行われます。丁寧に説明をしてくれるますが、時間が足りなくなり、チューリング機械、計算可能性などの範囲はカバーできておらず、軽く触れる程度となることが多いです。これらのトピックは3年の情報論理、計算量理論の授業にて詳しく扱われます。毎回の授業でレポート課題が出題され、(授業の理解度を図るもの)先生からフィードバックをもらうことができ、その都度自分の理解度を測ることができます。
ハードウェア構成法 | 小林芳直
必修科目
ハードウェア構成法は、信頼性の高い同期式デジタル集積回路を設計・構築する技術の修得をめざし、情報過多の現代社会に於いて誰もが安心して使用することのできる堅牢なデバイスをハードウェアの側面から提案する能力を養い、ひいては有象無象のエンジニア達がひしめきあう昨今のIT業界に先進的高性能・高信頼設計の旋風を巻き起こす新世代の風雲児を育成して世に放つことを究極の目標とした講義である。まずはデジタル回路の基本概念であるブール演算の学習に始まり、ラッチの構造解説の洗礼を受けて、組み合わせ回路と順序回路の設計手法を学ぶ。講師の小林芳直先生は、日本IBM研究所で端末開発等の研究を重ねてこられた百戦錬磨のハードウェアの専門家。およそ15年前から本講義を非常勤講師として担当されており、その熟練された雑談混じりの授業スタイルには学生一同魅了されること請け合いだ。時たまのサプライズイベントは特に必見である。また期末試験には任意のウェポンを使用してよい(原文ママ)ので、各自思うがままに武装していこう。ちなみに筆者は優秀なTAをウェポンとさせていただいた。この講義を修了した暁には、同期式回路の知識はもちろんのこと、種々の設計の勘が体得でき、未来の情報科学を先導する一翼として大きな一歩を踏み出せたことを身をもって実感できるだろう。
計算機システム | 平木敬
必修科目
「計算機システム」では、我々が日々使っている「コンピュータ」というものがどんな仕組みによって成り立って、どのようにプログラムを実行しているのかを勉強します。 講義ではまずプログラムの実行における中心的存在であるCPUについて、データ表現や命令セット、プログラム(命令列)の実行のされ方、割り込みなどの保護機構などが説明され、そしてCPUなどのハードウェアを仮想化、抽象化するオペレーティング・システム(OS)について、システムコールなどの保護機構、プロセス・スレッド、ファイルシステム、仮想メモリなどの概略が話されます。 この講義の内容は同じ学期にある「情報科学基礎実験」内の「アセンブリ演習」でプログラミングによってより具体的に学べますし、3年生の講義である「計算機構成論」、「オペレーティング・システム」でより深く学習できます。 学科に入ったばかりでまだコンピュータのことを何も知らない人たちにとっては、ハードウェアやOSと自分達が普段使っているパソコンとの間の関係性がなかなかつかめず、抽象的で難しいと感じるかもしれません。 しかしこの講義の内容を習得することで、コンピュータが動くとはどういうことが本当の意味で理解できるのです。