高校生のためのコンピュータサイエンスオンラインセッション2020

大学で学ぶコンピュータサイエンスって?

萩谷昌己先生 東京大学/情報処理学会副会長 フェロー

高校の情報の授業は大学のコンピュータサイエンスにもつながっている

ご本人提供
ご本人提供

私からは、「高校の情報科と、大学のコンピュータサイエンス」というお話をいたします。東京大学の学部では、理学部情報科学科という学科を担当しています。今回の企画は情報処理学会の主催で、私がこの6月からこの学会の副会長を務めている関係で、今日皆さんにお話しすることになりました。よろしくお願いします。

 

まずこちらが、われわれ東大の理学部情報科学科で、何年か前に高校生の皆さんに学科の紹介をするために作ったコンテンツです。学科でどういう勉強をして、どんな研究をしているのか、「計算する機械を作る」とか「人工知能と機械学習」といったいろいろなトピックの記事やFAQなどをまとめて作りました。

 

このコンテンツは、東京大学が2015年に推薦入試を始めた際に、高校生の皆さんに情報科学、特にコンピュータサイエンスについて発信しようということで作ったものです。

 

FAQには、「情報科学科の授業は高校の情報の授業とどこが違うのでしょうか」という質問があります。高校の情報科と大学で学ぶ情報科学とか情報工学、いわばコンピュータサイエンスの違いは何か、と言いますと、特に「情報の科学」の内容はそんなに違っているわけではありません。

 

ですから、現在の情報科学の学習指導要領、カリキュラムに従ってきちんと勉強していただければ、大学のコンピュータサイエンスともつながるのです。ただ、そのように学習指導要領に従って教えられているのかな、というのが心配なところであるわけです。

 

 

高校生の皆さんは、学習指導要領なんて見たことがない、という人が多いかもしれませんが、授業で何を・どのように教えるのか、ということは学習指導要領で詳細に決められています。

 

 

こちらは現行の「情報の科学」の学習指導要領解説の一部です。例えば、「(2)問題解決とコンピュータの活用」の中には「処理手順の自動化」という項目がありますが、これはまさにアルゴリズムとプログラミングのことです。

  

 

2022年から始まる新しい学習指導要領の情報の科目である「情報Ⅰ」では、ちゃんと「アルゴリズムとプログラミング」という項目名になっています。また、「モデル化とシミュレーション」という内容も入っています。「(3)情報の管理と問題解決」にはデータベースに関する内容が入っています。これが「情報Ⅰ」では、この部分にデータの収集・整理・分析といった、いわゆるデータサイエンスの内容が入ってきていますが、現行の「情報の科学」でも、そんなに大きな違いはありません。

 

最後の「(4)情報技術の進展と情報モラル」では、情報社会と情報倫理に関連する内容が入っています。こうやって見ていくと、「情報の科学」はコンピュータサイエンスの中核の内容を扱っているのです。

 

コンピュータサインエンストはどのような学問か

ではコンピュータサイエンスとは何か。このスライドにあるCS2013(Computer Science 2013)というのは、2013年に国際的な学会がまとめたカリキュラムです。また、J17というのは、このCS2013をベースにして、日本の情報処理学会が中心になってまとめた情報分野のカリキュラムです。その中にコンピュータサイエンスのカリキュラムも入っています。詳しくは、こちらのURLをご覧ください。

 

https://www.ipsj.or.jp/annai/committee/education/j07/ed_j17-CS.html

 

 

コンピュータサイエンスの知識体系のキーワードを挙げてみました。これらが、世界的にも大学で標準的に教えられているコンピュータサイエンスのカリキュラムの項目や分野です。先ほど見た「情報の科学」とそれほど変わりはありません。「(1)コンピュータと情報通信ネットワーク」に対応しては、大学の分野では「アーキテクチャと構成」「オペレーティングシステム」「ネットワークと通信」「情報セキュリティー」があります。そして「アルゴリズムと計算量」から始まって、「プログラミング言語」も「ソフトウェア工学」も入ってきます。

  

 

大学の「計算科学」は、先ほど言いましたように、「情報の科学」の「(2)問題解決とコンピュータの活用」の「モデル化とシミュレーション」に対応しています。「情報の管理」というのは、高校の学習指導要領にも、この大学のコンピュータサイエンスの中にもありますね。大学のコンピュータサイエンスの最後の「社会的視点と情報倫理」は、「情報の科学」の「(4)情報技術の進展と情報モラル」に対応しています。ですから、今「情報の科学」を学んでいる皆さんは、教科書をぜひ読み返してみてください。それが発展した形が、大学で学ぶコンピュータサイエンスである、と考えていただいてよいと思います。

 

大学で学ぶコンピュータサイエンスの体系

われわれの東京大学理学部の情報科学科(私は何年か学科長を務めてきました)は、まさに世界的なコンピュータサイエンスのカリキュラムに従って学科の授業を構成しています。

 

これは学科のカリキュラムをまとめた図です。見ていたただくと、2年生、3年生、4年生と進んでいく間に、アルゴリズムと計算量のような理論的な分野から、実際にコンピュータを作るといった授業まで、先ほど紹介したコンピュータサイエンスのコアな部分が全て教えられるカリキュラムになっています。

 

https://www.is.s.u-tokyo.ac.jp/pamph/pdf/utokyo_ISguide2013_01.pdf 

 

 

特に3年生の冬学期に行われる「プロセッサコンパイラ実験」は、われわれの学科の名物授業になっています。この授業では自分でコンピュータを作ります。コンピュータを作ると言っても、部品を買ってきてそれをつなぎ合わせるということではなく、コンピュータの中心部にあるCPU(中央処理装置)を自分で設計します。つまり、デジタル回路を基にして、機械語命令(コンピュータを走らせる機械語の命令)を自分で考えて、それをデジタル回路に落としていって、自らの手で実際に動く新しいコンピュータを作ることまでやります。

 

様々な卒業後の進路

大学でコンピュータサイエンスを学んで、その後の進路はどうなるのか。研究者になる人もたくさんいます。コンピュータサイエンスの、特に最先端の研究分野というのは、どんどん時代とともに変わっていきます。

 

皆さんもご存知のように、人工知能の、いわゆる機械学習の分野が、現在一番ホットな最先端で、非常にたくさんの人たちが研究しています。

 

 

それからスーパーコンピュータ、これは広い意味では計算科学といった分野になります。例えば様々なシミュレーションを高速に行うということに関しては、シミュレーションの手法だけでなく、それをいかに高速にコンピュータで動かすか、そのためのスーパーコンピュータをどうやって作るのかということが、課題になります。先ほど紹介した学部のCPU制作実験では一つのCPUを作りますが、現在のスパコンは非常に膨大な数のCPUが同時並列で走っています。どうやってスーパーコンピュータを構築していくかということが、一番ホットなテーマになっているのです。

 

量子コンピュータについては、聞いたことがある方もいるかもしれませんが、量子現象を活用した次世代のコンピュータで、ここも熱いです。そしてコンピュータグラフィックス(CG)やユーザインターフェース(UI)、バーチャルリアリティー(VR)とか、オーグメンテッドリアリティー(AR)というのは、ここ数年実用に向かって急激に進展している研究分野です。

 

こういった研究者になる人もたくさんいる一方で、研究というよりも、本当に役に立つシステムを作るエンジニアになっていく人たちもいます。例えば、このあとお話しされるGoogleのような企業のエンジニアになる方もいますし、システムエンジニアだとかウェブエンジニアといった世の中の情報技術を支えているような人たちもいます。

 

それからゲームを開発する人もいますし、コンピュータサイエンスと少しずれるかもしれませんが、主にデータ分析を行うデータサイエンティストになる人もいます。最近は、より応用的な分野で活躍する方も非常に多くなってきます。これは最先端の研究とも関連していて、例えば自動運転の開発者などがここにあたります。あとは、教育者になる人もいます。

 

さらに、技術を究めて会社を作る人もたくさんいます。大学院に在学するうちから会社を作ってやっていく人も出てきました。最初は自分の技術で会社を立ち上げ、やがて新しい技術をビジネスにしていくという道を歩む人も、多くいます。

 

このように、コンピュータサイエンスを学ぶと、本当に様々な道が開けていると言ってよいと思います。

 

「情報学」は文理の両方に広がる基盤的な学問

「情報学」、英語で言えば「informatics」という言葉がありますが、「情報学」という場合は、より広い学問分野と考えられると思います。

 

私は、日本学術会議が大学の学部の専門教育に関して定めた「参照基準」で、情報学分野の参照基準の策定に関わりましたが、情報学分野の参照基準では「情報学」をこのように定義しています。

 

「情報学は情報によって世界に意味と秩序をもたらすとともに、社会的価値を創造することを目的として、情報の生成・探索・表現・蓄積・管理・認識・分析・変換・伝達に関わる原理と技術を探求する学問である」

 

コンピュータサイエンスは、この情報学のまさに中核にあると位置付けられると思います情報を機械的に処理するコンピュータというものを構築し、そのコンピュータを様々な分野に応用していくという学問であると。さらに、そのコンピュータや情報処理の背景にある、理論的な探究をしていくという分野でもあるということで、コンピュータサイエンスは、この情報学の中核にあるということです。

 

 

ただし、「情報学」はもう少し意味が広くて、例えば社会情報学といった文系の分野も含まれています。ここは情報技術のある意味で広がりを意味していて、情報技術というのは広く世の中で使われて初めて意義が生まれ、発展していきます。そういう技術はやはり社会に受け入れられなければならないし、情報技術が社会を変えていくということもあるわけです。つまり、情報技術と社会の関係というのは非常に大きな研究テーマであり、それが当然ながら様々な学問を形成しているわけです。

 

この意味で情報学という場合は、社会情報学のような文系の分野、その文系の分野の根底にある理論的な分野も含めて考えられています。そういった広い意味の情報学も、この定義に合うわけです。

 

ですから一般的に「情報学」という場合は、大学でも文系の情報学を教育・研究しているところから、コンピュータサイエンスを中心にしているところまで、文理に横断的に広がる基礎的な学問ということになります。ですから、情報にはすごく興味があるけど、エンジニアにはなりたくない、という方もいるかもしれませんが、そういった方もぜひ、広い意味での情報学から見た進路を考えていただければと思います。