このサイトは「Rubyによる情報科学入門」 を購入頂いた方のためのサポート情報をまとめています。

まえがき(抜粋)

本書の題名は「Rubyによる情報科学入門」となっていますが、 実はウソです。 というのは、最後の3章では例題用にJavaを使っているからです。 それで「RubyとJavaによる情報科学入門」 にしようかと本気で思ったのですが、さすがに微妙な題名なのであきらめました。 まあ、大部分の章はRubyによる、ということでご容赦ください。

さて、この本がどのような人を対象にしているかというと、 「コンピュータの仕組みに興味を持っている人」ということになるでしょうか。 そう言うと、CPUの構造とか基礎的なプログラミングとかが思い浮かぶかも知れません。 しかし、それらは確かに仕組みではありますが、表層のごく浅い部分に過ぎません。 今日のコンピュータの働きは複雑なソフトウェアの上に立脚していて、 ソフトウェアの構造や動作はその土台となる学問である、 コンピュータサイエンスが支えているのです。 だから今日、「コンピュータの仕組み」に興味があれば、 その人はコンピュータサイエンスを学ぶべきですし、 学べばその緻密さ、荘厳さ、美しさにきっと魅入られるはずだ、 と筆者は確信しています。

使い方

本書は読み物として読んで頂いてもよいのですが、 基本的には教科書または自習書として使うことを想定しています。 授業の教科書として使う場合は、 1章を90分〜180分として14回に分けて扱うのが適当でしょう。 時間/分量の制約がある場合は、1章から5章までだけでも、アルゴリズム、 制御構造、時間計算量などの必須概念をひととおり学ぶことができます (もちろん、その後のさまざまな題材もできれば扱って欲しいですが)。

先に述べたように、12〜14章では演習用の言語としてJavaを採用しています。 これは、静的な型の言語も体験して欲しいことと、 グラフィクスやGUI部品などの話題は、 これらの機能が標準で備わっているJavaの方が適しているためです。 授業で扱う場合は、Javaによる演習は省略する、 基本的な12章の演習だけを行うなど、 臨機応変に対処して頂くことを想定しています。

各章は(最後の14章を除いて)本文と付録に分かれていますが、 付録は本文の演習問題を解説しているので、 「次の回の冒頭に」扱うことを想定しています。 また、演習問題については易しいものから難しいものまで取り混ぜていますので、 各自の腕前に応じて選ぶのでよいと思います。

ただし、重要なことは「必ず演習問題をいくつかは解いてみる」ということです。 コンピュータサイエンスは学問ですが、 プログラミングという技能の上に立脚していますから、 手を動かしてプログラミングをやってみないことには絶対に身につきません。 逆に、プログラミングをやってみると、 その面白さの多くはコンピュータサイエンスから来ていることが実感されて、 内容の理解が深まることも請け合いです。 演習問題が難しければ、例題を打ち込んでそのまま動かすだけでもよいのです (実際、そういう演習問題が沢山あります)。 そうやって気軽に動かしてみながら納得できるというのが、 他の学問にないコンピュータサイエンスの美点なのですから、 それを活かさない手はありません。これだけはぜひお願いします。


コードや図などの素材について

2008.12 著者 記