コンピューターサイエンスカリキュラム in Anthony University
(申し訳ありません。かなり長文になってしまいました。)
前に「手に職つけたかったらプログラミングをマスターしよう」というエントリーを書いたのですが、学ぶべきことをざっくりとしか書いていなかったので大学のカリキュラム風に詳細に書いてみました。
私はIT業界で働いて20年くらいになりますが、いつも思うのは日本のエンジニアは(自分も含めてなのですが)基礎ができていない人が多いなということです。
それに比べてアメリカではコンピューターサイエンスの学位を持っていないとIT業界で働くことが難しいので自然とエンジニアのレベルも一定以上に保たれることになるようです。
(ただ、アメリカの大学は入りやすいし州立だと学費も安いので学位取得は日本ほどハードルは高くありません。)
ということで日本のITエンジニアが知っておくべき知識を大学のカリキュラム風にまとめてみました。
前提として受講者はITのことは全く知らなくて将来ウェブ開発をメインに行うエンジニアをめざしていて、最終的にはスタートアップ企業をはじめたいと思っている人たちです。
それと講座の番号は私が以前通っていたアメリカの大学風にふってみましたが適当です。
・コンピューターサイエンス
- CS100 ウェブ時代のコンピューターリテラシー
- CS101 コンピューターとネットワークの基礎
- CS110 Linux入門
- CS201 C言語入門
- CS202 オブジェクト指向入門 Ruby1.9
- CS203 ウェブプログラミング Ruby On Rails,Javascript(jQuery),HTML,CCS
- CS210 アルゴリズム入門
- CS111 Linuxサーバー管理
- CS112 インターネットセキュリティ基礎
- CS211 リレーショナルデータベース入門
- CS212 コンピューターアーキテクチャー
- CS213 TCP/IPネットワーキング
- CS214 オペレーティングシステム
- CS300 アジャイルプロジェクトマネージメント
- CS204 関数プログラミング入門 Haskell
- CS205 言語処理系入門
昔だとワープロとか表計算の使い方になると思いますが、インターネットの時代ではGoogle AppsやTwitter,Facebook,ブログなどを使いこなせることが必須となります。
そのあたりのアプリケーションの使い方をレクチャーします。
最近だとiPhoneやAndroidの使い方も入れる必要があるかもしれませんね。
現在使われているコンピューターやネットワークがどのようにして動いているかの概要を説明します。
また、どういう経緯を経てこのような形態になったのかも歴史を交えて解説します。
コンピュータはなぜ動くのか〜知っておきたいハードウエア&ソフトウエアの基礎知識〜 矢沢 久雄 日経ソフトウエア 日経BP社 2003-06-02 売り上げランキング : 5857 おすすめ平均 Amazonで詳しく見る by G-Tools |
コンピューター200年史―情報マシーン開発物語 マーチン キャンベル‐ケリー ウィリアム アスプレイ Martin Campbell‐Kelly 海文堂出版 1999-10 売り上げランキング : 238818 おすすめ平均 Amazonで詳しく見る by G-Tools |
開発環境としてはLinuxが一番いいと思います。
いまや少し古くなりましたがコマンドベースの環境もエンジニアとしては知っておくべきでしょう。
内容としてはコマンド、viエディター、開発ツール(コンパイラ、make,git)、シェルスクリプトなどです。
最近の開発環境としてEclipseやNetBeansもいれてもいいかもしれません。
新Linux/UNIX入門 林 晴比古 ソフトバンククリエイティブ 2004-07 売り上げランキング : 16892 おすすめ平均 Amazonで詳しく見る by G-Tools |
最近はオブジェクト指向が当たり前なのでJavaなどの言語からはじめることが多いですが、初学者にはわかりにくいと思います。
まずは簡単な手続き型言語でプログラムの本質を理解してオブジェクト指向言語に移っていったほうが理解しやすいでしょう。
ただ、C言語はポインターの概念が分かりにくいのですが、メモリーを意識しながらコーディングしなければいけないのでより下のレイヤーを理解するときに役に立ちます。
やはりITエンジニアだったらC言語はおさえておくべきでしょう。
やさしいC 第3版 [やさしいシリーズ] 高橋 麻奈 ソフトバンククリエイティブ 2007-08-30 売り上げランキング : 4653 おすすめ平均 Amazonで詳しく見る by G-Tools |
Rubyを使ってオブジェクト指向設計やデザインパターンを学びます。
なぜRubyかというと単なる私の趣味です。(笑)
Javaのほうが本もたくさんあるのでJavaでもいいですが、コードが冗長になりがちなのが好きになれないんですよね。
言語はともあれここではオブジェクト指向とはなにでどういうところがいいのかが分かればいいと思います。
内容的にはカプセル化、ポリモーフィズム、継承という基本的概念に加えデザインパターンとよばれる考え方を理解することが目的になります。
たのしいRuby 第3版 高橋 征義 後藤 裕蔵 まつもと ゆきひろ ソフトバンククリエイティブ 2010-03-31 売り上げランキング : 8947 おすすめ平均 Amazonで詳しく見る by G-Tools |
Ruby 3 オブジェクト指向とはじめての設計 (CD-ROM付) (プログラミング学習シリーズ) arton 宇野 るいも 翔泳社 2009-08-28 売り上げランキング : 342690 Amazonで詳しく見る by G-Tools |
オブジェクト指向における再利用のためのデザインパターン エリック ガンマ ラルフ ジョンソン リチャード ヘルム ジョン ブリシディース Erich Gamma ソフトバンククリエイティブ 1999-10 売り上げランキング : 14940 おすすめ平均 Amazonで詳しく見る by G-Tools |
今やウェブ開発はフレームワークなくしては開発できなくなりつつあります。
Ruby On Railsは数多くのフレームワークの中でも早い段階でMVC(モデル、ビュー、コントローラー)モデルを統合的に扱えるようになったフレームワークです。
また、ウェブのUIはいまやJavascriptが必須となっています。
jQueryは最もメジャーなJavascriptライブラリで多くのプラグインも開発されています。
加えてHTML,CSSの基本も抑えておきます。
Head First Rails ―頭とからだで覚えるRailsの基本 David Griffiths 松田 明(監訳) オライリージャパン 2010-01-18 売り上げランキング : 8870 おすすめ平均 Amazonで詳しく見る by G-Tools |
jQueryクックブック jQuery Community Experts 株式会社クイープ オライリージャパン 2010-08-18 売り上げランキング : 1113 Amazonで詳しく見る by G-Tools |
HTML/XHTML&スタイルシートレッスンブック―ステップバイステップ形式でマスターできる エビスコム ソシム 2007-06-20 売り上げランキング : 1166 おすすめ平均 Amazonで詳しく見る by G-Tools |
ソフトウェアは全てある手順にしたがって実行される命令の集まりです。
アルゴリズムとはその手順を体系的にまとめたもので、具体的にはソートアルゴリズムや探索アルゴリズムなどがあります。
正直いってアプリなどの開発ではアルゴリズムが必要になることはあまりないのですが、やはりエンジニアの基本知識としてはおさえておくべきでしょう。
定本 Cプログラマのためのアルゴリズムとデータ構造 (SOFTBANK BOOKS) 近藤 嘉雪 ソフトバンククリエイティブ 1998-03 売り上げランキング : 52383 おすすめ平均 Amazonで詳しく見る by G-Tools |
Linux OSで様々なサーバーを構築する方法を学びます。具体的にはLinuxのネットワーク設定やDNS,ウェブサーバー、メールサーバーなどの設定、運用になります。
図解でわかる Linuxサーバ構築・設定のすべて 一戸 英男 日本実業出版社 2005-04-07 売り上げランキング : 16243 おすすめ平均 Amazonで詳しく見る by G-Tools |
いまやセキュリティなしにはITシステムは考えられなくなりました。
常に悪意をもつユーザーからの攻撃に対応するために暗号化、ウィルス検知、ファイアーウォールなどの知識が必要となります。
また、システムでの一番の脆弱性ポイントは人間であるという考えからソーシャルエンジニアリングについてかつてクラッカーだった人が書いた文献からセキュリティ攻撃の手法を学びます。
絶対わかる!最新セキュリティ対策超入門 増補改訂版―ネットワークのしくみを知る!基礎を学ぶ! (日経BPムック ネットワーク基盤技術選書) 日経NETWORK 日経BP社 2010-06-29 売り上げランキング : 118050 Amazonで詳しく見る by G-Tools |
欺術(ぎじゅつ)―史上最強のハッカーが明かす禁断の技法 ケビン・ミトニック ウィリアム・サイモン 岩谷 宏 ソフトバンククリエイティブ 2003-06-21 売り上げランキング : 189633 おすすめ平均 Amazonで詳しく見る by G-Tools |
リレーショナルデータベースはいまやITシステムには欠く事のできない技術となりました。
しかし、多くのエンジニアはSQL言語を使う技術ばかりしか注目せず、その基礎となる関係データモデルや集合理論を理解していません。
ここではリレーショナルデータベースの理論的な部分まで理解して、正しいDB設計ができることをめざします。
データベース実践講義 ―エンジニアのためのリレーショナル理論 (THEORY/IN/PRACTICE) C.J.Date 株式会社クイープ オライリージャパン 2006-02-01 売り上げランキング : 100688 おすすめ平均 Amazonで詳しく見る by G-Tools |
現在のコンピューターはノイマンアーキテクチャーという考え方を基本に設計されています。
この科目ではCPUはどう動くのか、その基本となるデジタル論理とはどういうものなのかを学びます。
そしてコンピューターアーキテクチャーで採用されているモジュール化という考え方についても解説します。
コンピュータアーキテクチャのエッセンス (IT Architects Archiveシリーズ) ダグラス・E・カマー Douglas E. Comer 鈴木 貢 翔泳社 2007-06-01 売り上げランキング : 263571 おすすめ平均 Amazonで詳しく見る by G-Tools |
デザイン・ルール―モジュール化パワー キム・クラーク カーリス・ボールドウィン 安藤 晴彦 東洋経済新報社 2004-03-26 売り上げランキング : 197866 おすすめ平均 Amazonで詳しく見る by G-Tools |
現在のインターネットはTCP/IPというプロトコルによって通信が行われています。
私たちがブラウザで何気なくウェブページを見るだけでもその下では輻輳制御やルーティング、名前解決など多くのやりとりが行われています。
この科目ではインターネットでなぜつながるのか、その上でアプリケーションを開発するときにはどんなことに気をつければいいのかを学びます。
マスタリングTCP/IP 入門編 第4版 竹下 隆史 村山 公保 荒井 透 苅田 幸雄 オーム社 2007-02-24 売り上げランキング : 2221 おすすめ平均 Amazonで詳しく見る by G-Tools |
ソフトウェアを開発するにしてもサーバーを構築するにしてもOSの知識が必要になることが結構あります。
プロセス管理はどうされているのか、メモリーはどのように割り当てられているのか、ファイルシステムはどのような構造になっているのかなどを知っておくとトラブルシュートを行うときなどで役にたったりします。
システムの土台となるOSはエンジニアにとって基本的知識でしょう。
モダン オペレーティング システム 原書 第2版 Andrew S.Tanenbaum 水野 忠則 ピアソン・エデュケーション・ジャパン 2004-12-07 売り上げランキング : 206344 おすすめ平均 Amazonで詳しく見る by G-Tools |
ソフトウェア開発で一番難しいのは見積です。
ビジネスでソフトウェアを作るときはどれくらいの期間とお金がかかるかをあらかじめ知っておくことが必要になりますが、これが至難の業なのです。
アジャイルプロジェクトマネージメントは事前にソフトウェア開発の見積りを正確に行うことは不可能だという考え方から出発しています。
しかし当てずっぽうでプロジェクトを進めるのではなく、ある程度の予測を様々な根拠から立てていって進めながら修正していくという方法を取っています。
ソフト開発プロジェクトはデスマーチと呼ばれる長時間労働を強いられる状況になりがちです。
人間らしい生活を送るためにもアジャイルプロジェクトマネージメントは学んでおいたほうがいいでしょう。
アジャイルな見積りと計画づくり ~価値あるソフトウェアを育てる概念と技法~ Mike Cohn マイク コーン 安井 力 毎日コミュニケーションズ 2009-01-29 売り上げランキング : 68469 おすすめ平均 Amazonで詳しく見る by G-Tools |
関数プログラミングとは関数という数学的な考え方を元に考えられました。
プログラムは何かを実行すると内部情報を書き換えることがあります。
これを副作用と呼びますが、この副作用がバグの大きな原因となっています。
関数プログラミングではこの副作用を一切なくしてソフトウェアを開発できるようにしようとする技術です。
最近話題に上がることが多い関数プログラミングはエンジニアとしておさえておくべき技術のひとつでしょう。
プログラミングHaskell Graham Hutton 山本 和彦 オーム社 2009-11-11 売り上げランキング : 13760 おすすめ平均 Amazonで詳しく見る by G-Tools |
プログラマーはコンパイラーやインタープリターなどの開発ツールを使ってソフトウェアを開発します。
しかし、それらの開発ツールがどういうふうにできていてどう動くのかを知っているプログラマーはそんなにいません。
自分が書いたプログラムはどう解析されて実行可能なコードに変換されるのか、ソフトウェアを開発するエンジニアとしては知っておくべき知識でしょう。
コンパイラ入門―構文解析の原理とlex/yacc、C言語による実装 (Computer Science Library) 山下 義行 サイエンス社 2008-07 売り上げランキング : 286084 おすすめ平均 Amazonで詳しく見る by G-Tools |
・数学
- ITエンジニアのための数学
- Math101 統計学入門
- Math102 論理学
ある分野のシステムでは画像処理やデータ解析で高度な数学が必要になることがあります。
私の経験ではそのような数学が必要になることはなかったのですが、ITエンジニアの一般教養として学んでおいたほうがいいでしょうね。
内容としては数学一般と微分積分、線形代数になります。
プログラマの数学 結城 浩 ソフトバンククリエイティブ 2005-03-24 売り上げランキング : 38163 おすすめ平均 Amazonで詳しく見る by G-Tools |
微分積分 (理工系の数学入門コース) 和達 三樹 岩波書店 1988-11 売り上げランキング : 124558 おすすめ平均 Amazonで詳しく見る by G-Tools |
プログラミングのための線形代数 平岡 和幸 堀 玄 オーム社 2004-10 売り上げランキング : 7611 おすすめ平均 Amazonで詳しく見る by G-Tools |
コンピューターでは何かを集計したり、抽出したりと定量的な問題を扱うことが多くあります。
統計学はそのような問題を数学的に扱う学問です。
集計系のプログラムを開発するときには必ず必要になる知識です。
完全独習 統計学入門 小島 寛之 ダイヤモンド社 2006-09-29 売り上げランキング : 2316 おすすめ平均 Amazonで詳しく見る by G-Tools |
コンピューターとは論理を扱う機械です。
もしこれがどうだったら何をするとか全ての対象からある条件のものを抽出するなど全て論理が関わってきます。
実際、ソフトウェア開発をしていると複雑な論理を扱わなければいけない状況になりがちです。
そんなときに論理学を知っていれば複雑な論理も把握することができるようになるでしょう。
ちなみにアメリカのコンピューターサイエンスコースでも必ず論理学は取らされる科目になっています。
論理学 野矢 茂樹 東京大学出版会 1994-02 売り上げランキング : 34548 おすすめ平均 Amazonで詳しく見る by G-Tools |
・ビジネス
- BA100 ファイナンス入門
- BA101 起業家のための基礎知識
- BA110 ネットマーケティング
- BA111 ハイテク企業の企業戦略
企業をやっていくためにはお金が必要です。
そのお金を企業はどう調達してどのように使うのかがファイナンスになります。
金融関係のシステムでもやらないかぎり必要のない知識ではと思うかもしれませんが、会社はどう運営されているのかを知ることは資本主義社会で生きていくためには必須のことだと思います。
そう考えるとITエンジニアに限らず全ての人が知るべきことなのでしょうね。
ざっくり分かるファイナンス 経営センスを磨くための財務 (光文社新書) 石野 雄一 光文社 2007-04-17 売り上げランキング : 3752 おすすめ平均 Amazonで詳しく見る by G-Tools |
IT産業ではシリコンバレーのベンチャー企業によって数多くのイノベーションが起こされました。
それはシリコンバレーがアメリカ東海岸のエスタブリッシュメントへのアンチテーゼとして発生したからなのかもしれません。
それはともかくITエンジニアとしては新しい技術を開発して世の中に広めたいと思う人は多いのではないでしょうか。
この科目ではハイテク企業を起こして成長していくにはどうすればいいかについて学びます。
エンジニアは技術さえよければ売れると思っている人が多いですが、本当に大事なのは顧客がお金を出してくれる製品やサービスを提供することです。
ビジネスでは技術はファクターのひとつでしかありません。
アントレプレナーの教科書 スティーブン・G・ブランク 渡邊 哲 翔泳社 2009-05-09 売り上げランキング : 195617 おすすめ平均 Amazonで詳しく見る by G-Tools |
インターネットが普及することによって人々のライフスタイルも変わってきました。
いままで店舗でモノを買っていた顧客がECサイトで買うようになり、ネットで知り合った人とメールやチャットでコミュニケーションしたりするようになりました。
このような時代のビジネスの方法もネットを使ったマーケティングにシフトせざるを得なくなってきています。
このクラスではSEOやSEM,ソーシャルマーケティングなどネットでいかに集客するかを学びます。
キャズム ジェフリー・ムーア 川又 政治 翔泳社 2002-01-23 売り上げランキング : 8104 おすすめ平均 Amazonで詳しく見る by G-Tools |
「ツイッター」でビジネスが変わる! Twitter Power ジョエル・コム 小林 啓倫 ディスカヴァー・トゥエンティワン 2009-11-05 売り上げランキング : 9942 おすすめ平均 Amazonで詳しく見る by G-Tools |
ハイテク企業を経営する場合、技術が大きな競争力であると思われがちですが実はそうではありません。
かつでDECという会社は技術的に優れた製品をたくさん作りましたが倒産してしまいました。
またマイクロソフトは技術的にはそんなに優れてはいませんでしたが世界一のIT企業になりました。
しかし、グーグルやフェイスブックの台頭によってマイクロソフトは今厳しい状況に立たされています。
このような状況を見て何が成功と失敗の分かれ目なのか、成功するためにはどんな戦略が必要なのかを考えます。
イノベーションのジレンマ―技術革新が巨大企業を滅ぼすとき (Harvard business school press) クレイトン・クリステンセン 玉田 俊平太 伊豆原 弓 翔泳社 2001-07 売り上げランキング : 1984 おすすめ平均 Amazonで詳しく見る by G-Tools |
ポーター教授『競争の戦略』入門 グローバルタスクフォース 総合法令出版 2004-01 売り上げランキング : 4886 おすすめ平均 Amazonで詳しく見る by G-Tools |
・英語
- English100 英語基礎
- English110 ITエンジニアのための英語
世界がグローバル化したことによって英語が必要になることが多くなってきました。
しかし、日本人は英語が苦手です。
多くの日本人は中学校からやっているのになぜでしょうか。
それは学校で教えている英語がコミュニケーションのための英語ではないからです。
まずはまちがってもいいので英語をどんどん使ってみましょう。
例えば知っている単語だけでBlogやSNSで英語でポストみてはどうでしょうか?
また、英語はペラペラにならなければいけないという思い込みもまちがいです。
シンガポールやインドは公用語は英語ですが、かなりなまっていてネイティブスピーカーでもわからないような英語を話しています。
言語って意外にいいかげんなものなんですね。
要は大体の意思疎通ができればいいのです。
だって日本人同士で話していてもちゃんと伝わっていないことが多いでしょ。
英語を上達するコツはできるだけたくさん英語に触れることです。
たくさん読んでたくさん聴いてたくさん話してたくさん書く。
まずは興味のある英語の本をたくさん読んでみましょう。
わからない単語はとりあえずはとばします。
そうすればいつの間にか英語ができるようになります。
KindleはAmazonが販売している電子書籍リーダーですが、Amazonで売っている電子書籍だけではなくPDFファイルも読むことができます。
英語の古典などはただでネットからダウンロードできるものも多いのでKindleで読むのがおすすめです。
ただPDFはA4サイズを基本としている場合が多いので少し高いですが、Kindle DXにしたほうが読みやすいと思います。
Kindle DX Wireless Reading Device, Free 3G, 9.7" Display, Graphite, 3G Works Globally – Latest Generation Amazon.com 2010-07-07 Sales Rank : 5 Average Review See details at Amazon by G-Tools |
また、英語を上達させるためには知っている単語を増やすのが一番です。
目安としては2万語程度が普通の生活で困らないレベルのようです。
KindleはNew Oxford American Dictionaryがついてますので、わからない単語が出てきても簡単に調べることができます。
英英辞典なので最初は辞書を引いても解説がわからないことが多いでしょうが、根気強くやっていれば英和辞書は必要なくなるはずです。
英語をビジネスで使う場合は正しい文法で文章を書かなければいけないこともあります。
特に技術文書は論理的に説明しなければいけないことが多いので標準的な英文の書き方は知っておいたほうがいいでしょう。
アメリカの大学では多くのライティングの授業を取らされるのですが、論文を書くことが必須のアカデミックな世界だからなのでしょう。
ビジネスの世界では相手に分かりやすい文章さえかければいいので、まずそこにフォーカスして英語を学んだほうがいいでしょう。
英語ライティングルールブック―正しく伝えるための文法・語法・句読法 デイヴィッド セイン ディーエイチシー 2004-04-27 売り上げランキング : 31765 おすすめ平均 Amazonで詳しく見る by G-Tools |
誰も教えてくれなかったIT英語―海外ITエンジニアはこう話す! 板垣 政樹 小坂 貴志 A.J. Schifano ソフトリサーチセンター 2002-06 売り上げランキング : 43463 おすすめ平均 Amazonで詳しく見る by G-Tools |
できるだけ最小限にしぼったつもりなのですが、これくらいの量になってしまいました。(汗)
とりあえずはウェブ系ITエンジニアとしてこれだけマスターしていればまずはいいのではないでしょうか。
できれば基礎知識として電子回路やハード関連の科目もいれたほうがいいいのかもしれません。
私はアメリカで働こうと思って大学に行ったのですが、わざわざ高いお金を払ってアメリカに行かなくてもITエンジニアとして必要な知識は勉強できます。
そう考えると大学というしくみももう時代遅れかもしれません。
人間の脳は変化することができるので何歳になっても新しいことを学ぶことができます。
したがって一生学び続けるという姿勢がこれからは大事なのではないでしょうか。