はじめに
この記事はQiita エンジニアフェスタ 2021「今まで買ってよかった技術書を紹介しよう!」の参加記事です。
このフェスタに参加しつつ、Qiitaに貢献できることを考えた結果、情報系大学生が何を学んでいるかを紹介することを考えつきました。
現時点、Qiitaに大学の参考書の記事はありません。これをきっかけに、様々な情報系学部の参考書が共有されたら、エンジニアにとって役に立つのではと思います。
実力社会と言われるエンジニア業界です
が、全くの初心者が学んだ軌跡なので、全くプログラミングを触ったことのない人にも参考になると思います。
この記事の構成
カテゴリに分けて紹介していきます。
おすすめの本には★をつけています。
プログラミング
プログラミング言語C 第2版 ANSI規格準拠
教科:C言語
履修時期:1年前期
- 言わずと知れたC言語のバイブル
- 正直難しい。大学入ったばかりの初学者が読むものではない
- ただ頑張って読んでみるとサンプルコードなどが充実しており、教授のスライドの補足として役に立った。
今思えば大学一年生には非常に難しい一冊でした。人によっては苦しんで覚えるC言語を参考にしていました
入ったばかりの大学生になんの言語を学ばせるかは、議論が分かれるところのようです。
ちなみに私はC言語で良かったと思います。ポインタの概念が理解でき、プログラミング言語の設計などに活かせるようになりました。
★独習C++ 第4版
教科:C++
履修時期:1年後期
- C言語を学び、オブジェクト指向を理解する位置付け
- C言語を理解した人なら、非常にわかりやすい一冊だと思う
- 内容も大半がクラスやその継承、オーバーロードなどオブジェクト指向の入門
C言語を学んだのちに、オブジェクト指向を学ぶ一環としてC++が選ばれたように思います。
ここで脱落した友達が多く、そのうち数人は留年していきました。
★Java本格入門 ~モダンスタイルによる基礎からオブジェクト指向・実用ライブラリまで
教科:JAVA
履修時期:2年前期
- C、C++を理解した後に、ライブラリやAPIなど実践的な内容を学ぶ位置付け
- C++と共通する内容はつまらなかった覚え
- この本にはないが、NHKの番組表APIを取得する内容が役に立った
言語を学ぶというよりかは、APIやJavaDoc、変数名の付け方など、実戦で役に立つ内容が含まれています。
JSONやCSVを扱うライブラリで、NHKの番組表APIを使用しました。
もしこの本を使う方がいたら、ぜひ取得してコンソールに表示させてみてください。
オブジェクト指向における再利用のためのデザインパターン(改訂版)
教科:中級プログラミング
履修時期:2年後期
- GoF本として有名。プログラミングの書き方のテンプレが書かれている
- **買っていない。**なぜなら5000円を越すほど高いから。(研究室で読みました)
- 23種のデザインパターンは正直現場で使用するのかわからない
教授の解説がなければ理解できないであろう一冊。オブジェクト指向を理解した上で、さらに理解を深めるきっかけにはなります。しかし、デザインパターンを実際に利用しようとは思えない。
ライブラリを作る人などは必須と教授が言っていた。現代はライブラリが豊富なため、これを使う人は少ないのでは。
【補足】GoFのデザインパターンとは
- よくある課題に対して汎用的に使用できるプログラミングの設計のこと
- オブジェクト指向を応用した設計手法が23個あげられている
【番外編】入門 Python 3
教科:-
履修時期:2年と3年の間
- 独学で学ぼうとした時の一冊
- 研究で必要→何でもいいやろ、俺天才やし→めちゃむずいやん!!ってなった一冊
- 「完全に理解した」状態になっていた私を目覚まさせた
大学3年でプログラミングを完全に理解したと天狗になっていたが、教科書一冊を理解できたのは教授のおかげだと知らしめさせられた。
2年では挫折しているため内容は覚えていません。
理論、設計
★アルゴリズムの基礎
教科:アルゴリズムとデータ構造
履修時期:1年前期
- ソートアルゴリズムと探索アルゴリズムを題材に、アルゴリズムの基礎を学べる
- オーダ記法など研究でしか使わないと思ってたら普通に使うんですね
- ただ、ソースコードは一切なく、数式と擬似言語表現のみのため、抵抗がある
**アルゴリズムとは?**から始まる講義でした。
内容は今となっては遅れて理解できますが、プログラムのソースコードを用いた参考書の方が理解しやすかったと考えています。
アルゴリズムの設計と解析 I&II (サイエンスライブラリ情報電算機 35)
教科:アルゴリズム応用
履修時期:2年前期
- ここにきて絶版本。1977年出版
- ALGOLが使われているものの、擬似言語表現として読めば理解できる
- 再帰法や木など、アルゴリズムの設計が学べる
- もっと簡単な本があるのでは?
アルゴリズムを学ぶなら、あえてこの本を選ぶ必要はないと感じます。
教授の板書が全てこの本の丸写しだったため、買ってノートを端折りました。
離散数学―コンピュータサイエンスの基礎数学 (マグロウヒル大学演習)
教科:命題論理
履修時期:1年前期
- 集合の表し方から、離散数学における関数の理論を学ぶ一冊
- ガチガチの数学授業と思いきや、その後のコーディングに役立つ
- 回路を組むときににも必須の知識が詰まっていた
レジュメがなければ理解できなかっただろうと思います。
数式が苦手な人(私も含め)が独学するにはお勧めできないですが、必須の知識だと思います。
Web知識
★情報ネットワーク (放送大学教材)
教科:ネットワーク基礎
履修時期:1年前期
- 放送大学の教科書ともあり、理解しやすい
- IPアドレスやサブネットマスクなど、基礎中の基礎が書かれている
- 基本情報技術者試験の合格に役立ったと思う
他大学の教科書ですが、十分に独学でも理解できると思います。
放送大学で受けると11,000円かかるそうですが、テキストのみ+補足をネットで調べるで十分理解できると思います。
★基本からわかる 情報通信ネットワーク講義ノート
教科:ネットワーク、セキュリティ
履修時期:1年後期、2年前期
- ネットワークの基礎的知識があれば、充実した内容
- 確かに基本からなのだが、その基本がある程度の知識がないと理解できない
- 図解入り、2色刷り、問題付きと、これまでの教科書に比べてとっつきやすい
そもそも独学でも学べるように作られているため、わかりやすく理解も深くなるという良書。
教授の講義がなくても、基本情報〜応用情報技術者の学び始めレベルが理解できる。
番外?一般教養だけれどもITに役に立ったもの
経営学の基本テキスト
教科:マネジメント
履修時期:2年後期
- Amazonに売っていないので、これ以外でもいいと思います
- 経営というか、社会の仕組みについて理解できる一冊
- 基本情報技術者試験の範囲に被る
基本情報技術者試験に出てきたため、紹介しました。
エンジニアを目指すものとして学ぶべき内容だと感じます。
コア講義 線形代数
教科:線形数学
履修時期:1年前期、1年後期
- 行列、ベクトル、情報を学ぶ上で必須の知識
- ただ、この教科書が一番わかりやすいとは言えない
よくある数学の教科書ですが、学んだ内容はエンジニアに必須であると感じました。
基礎レベルではあるものの、Qiitaにも最新の機械学習の論文を紹介する記事があります。
それを理解するのに役立つと思われます。
終わりに
12冊を紹介しましたが、教員の解説があるかないかによっておすすめできる本が変わります。
Qiitaに必要とされている技術書と、いわゆる教科書はそう言った根本的な違いがあるのかもしれません。