情報系初心者の頃に使っていた教材などを振り返る

最近友人数人でグループを組んで、情報科学分野に女子を増やすためのアウトリーチ活動みたいなものをやろうとしています。

そのときに、自分が実際にプログラミング初心者だった時にどんな本やネットの資料をみて勉強や情報収集をしていたかということを久しぶりに思い出す機会があったのですが、今振り返ってみても良いと思えるものが結構多いように感じたので、書き留めておきたいと思います。

当時の自分のレベル

タイトルに「初心者」と書きましたが、これから紹介するものは私が大学2年の春〜夏に、Google STEPプログラムを受講していた時期に触れていたものです。 当時の私のレベルは、C++が少しだけ書けるが情報系の授業は1コマ(基礎的なアルゴリズムを扱うもの)しか受けたことがなく、情報科学の分野にどのようなものがあるのかまだあまりわかっていない、という感じでした。

というわけなので、何らかのプログラミング言語の基礎的な文法を一通り押さえているくらいの人に読んでもらうのが良いかもしれませんが、 Hello Worldをついさっき終えたくらいの全くの初心者の人や情報科学をすでにある程度学んでいる人にも、興味を持ってもらえるものがあるかもしれません。

おすすめの教材, コンテンツ

1. Crash CourseのComputer Scienceシリーズ

www.youtube.com

Crash Courseは、様々な分野の入門的な内容を扱う動画を製作してYouTubeで公開している団体のようですが、その動画のうちComputer Scienceについて扱っているシリーズです。

この教材の特徴は、タイトル一覧をざっと見ていてわかる通り、コンピュータの歴史・プロセッサの構成・OS・アルゴリズム・ネットワークなどのような情報科学の基礎のような内容から、機械学習・ロボット・コンピュータビジョンなどの応用的な分野の紹介まで、内容が多岐に渡っていることです。

どの回も10分程度の動画なので、大学の授業ほどの深さはないかもしれませんが、情報科学の様々な分野の概観をざっくり掴むのには良い教材だと思います。

私がGoogle STEPの教育コースに通っていた時期にこの動画の前半部分が毎週アップロードされていたので、前半の動画はよく見ていました。

2. 『コンピュータシステムの理論と実装』(nand2tetris)

コンピュータシステムの理論と実装 ―モダンなコンピュータの作り方

コンピュータシステムの理論と実装 ―モダンなコンピュータの作り方

nand2tetrisという、大学のコンピュータサイエンスの授業でよく使われている有名な教材があります。 これは文字通り、NAND回路からCPU、コンパイラ、さらにはOSを自分の手で組み立てていって、最終的にテトリスが動くようなコンピュータを作ろう!という趣旨の教材です。 そしてこの本は、そのnand2tetrisを用いた教科書の日本語訳です。

Courseraでもnand2tetrisについての授業が開講されており、英語ではありますが同内容の授業を受けることができます。前半と後半に分かれており、以下の2つのコースが該当しています。

私はこれも前半しかやっていないのですが、単純なNAND回路から算術演算器やメモリ、CPUが作れるということを自分の手を動かした実感できたのは良い経験になりましたし、うまく回路を組み立てるのは結構楽しかったです。

後半に関しては、アセンブラコンパイラを自分の好みの言語で実装していく感じだったと思うので、何かしらの言語がある程度流暢に使える人でないと厳しいかもしれません。

3. 白と黒のとびら

情報科学の一分野であるオートマトン理論の内容をわかりやすく解説している小説です。

・・・こう紹介すると、無理やり小説の文体を取り入れた学習参考書のような本に聞こえるかもしれませんがそうではなく、むしろ普通の小説に見えるが読んでいるといつのまにかオートマトン理論の諸概念を理解できるようになっている、という感じの本です。 扱っている内容も充実していて、その後受講した大学の形式言語理論の授業で出てきた話題はこの本でも8割くらいカバーされていた気がします。

情報科学の理論的な側面に触れてみたい人はこの本から始めると良いと思います。

ちなみにこの本には続編もあります。続編では、オートマトン理論に限らず情報科学の様々な概念を扱っています(詳細は公式ページに載っています)。 個人的には続編の方が物語のスケールが大きく、小説としてより面白かったと思います。

4. Linux標準教科書

https://linuc.org/textbooks/linux/

Linuxのコマンドをあまりちゃんと知らなかったので読んでいました。わかりやすくて良いと思います。

5. にゃにゃにゃラジオ

にゃにゃにゃラジオ | Free Listening on SoundCloud

STEPの授業でも一度お会いした、ゆずちんさんという方が配信していたpodcastです。ゆずちんさんもGoogle STEPの卒業生で、このプログラムを通じてGoogleでのインターンを経験していた先輩だったので、猛烈にSTEPのインターンに受かりたかった当時の私は非常に興味を持って聞いていました。

6. Twitter

STEPに通っていた頃、周りの友人がTwitterで話題になっていることをいつも喋っていたことがきっかけで、情報系の学生やエンジニアは結構Twitterをやっている率が高いということを知り、始めました。 実際情報系の界隈はTwitterの普及率が高く、Twitter上である種のネットワークが形成されている部分もありますし、情報収集に最適なSNSであることは認めざるを得ないと思います(もちろんやっていない人も一定数います)。

ただし、SNS特有の中毒性があったり、世の中のしんどいニュースに対する批判的なツイートやイキリツイートを見て心がたまにしんどくなったりもするので、運用には注意が必要かもしれません・・・


以上に紹介したのものの中には自分の興味の方向に偏っているものもありますし、万人におすすめできるわけではないですが、どれかしら興味を持ってもらえたものがあれば嬉しいです :)