1. 程式人生 > >計算機專業的學生必須掌握的五門課程

計算機專業的學生必須掌握的五門課程

時也 ret 等等 實驗 語言 科學 解決問題 com 線性代數

轉自:http://www.nowamagic.net/librarys/veda/detail/2192

為了成為牛逼的程序員,知識儲備也一定要牛逼!

計算機專業概念有點大。就計算機科學與技術專業而言,以下這些是必修的:

1、計算機組成原理(包括先修課程“數字邏輯與數字系統”,簡稱“數電”):這是一門硬件基礎課,學完後你能清楚的知道如何從用最簡單的數字元件,像搭積木一樣構成整個計算機系統,那就算及格了。

2、線性代數,概率論和離散數學:要知道,凡是能稱之為“科學”的專業,就必須有一定的數學功底,否則難以稱作“科學”。這三門課我覺得是本科時期最重要的三門數學課,比高等數學重要。如果你想在計算機科學的道路上走遠點,那這三門可是必修的。

3、MIT開設的《Introduction To algorithm》,中文版叫《算法導論》:我覺得應該學習它而不是國內習慣開設的《數據結構》。數據結構僅僅是算法的一部分,國內的數據結構課程回避了很多本質的東西,僅僅是對一些常見的數據結構的羅列,學起來總有些不痛不癢的感覺。《Introduction To algorithm》雖然有些章節夾雜著很多很讓人討厭的“數學”,但卻能從本質上帶你領略這門十分必要而且有趣兒的課。

4、操作系統與編譯原理:操作系統可以說是《算法導論》的實驗課,最好能在學習期間自己實現一個小型的操作系統,或者操作系統各分系統的Demo。編譯原理可能是普遍本科生覺得難的一門課,但是作為軟件科學家,這是基礎中的基礎,學完之後所有的語言在你看來應該沒有太大的區別,這麽課應該是離散數學+算法導論的實驗課。最好能在學習期間自己實現一個小型的編譯器,語言最好是自創。

5、掌握一門常用的編程語言和編程技術:能了解你用過的所有的程序內部大致是怎樣的,能用你熟悉的語言編寫大部分的程序,至少不能是對任何一個程序滿頭霧水。

以上這些不難做到,我覺得是基礎中的基礎,我偏激的以為,不能掌握他們就不應該獲得學位。

簡而言之:

  1. 數學課 (概率,統計,微積分等等)
  2. 語言課(java,c++等)
  3. 數據結構和算法
  4. 計算機網絡
  5. 操作系統和編譯原理

其實只要算法和數學牛,可以吃遍矽谷大多數的IT公司。

具體書籍

  1. Concrete Mathematics 具體數學,絕對是計算機科學的數學基礎“之一”,國內的計算機科學跟不上國外的一大原因,我始終認為是數學上的差距。
  2. Introduction to Algorithms 算法導論,所有的程序都需要算法作為基礎,所以算法是不得不學的。
  3. Introduction to Computer Science and Programming 整體的介紹了計算機,同時也讓學生了解CS能幹嘛,自己該幹嘛。
  4. Operating System Engineering 操作系統的重要性不言而喻,同時也介紹了編譯器。
  5. Network 網絡編程,中國 大學的本科生們有多少能熟練於網絡編程。當今又有多少程序不需要考慮到網絡。

有時候問自己幾個問題:

  • 當你學完各種數學、原理、算法之後,你能用這些知識解決什麽問題?
  • 你能開發出什麽應用或系統嗎?你具備多強的開發能力?
  • 是更多人對這個專業更感興趣了,還是心生厭倦、恐懼、甚至放棄了?
  • 大學畢業到現在,還有多少知識你還記著?有多少還在用?

其實能解決問題的課程才是最重要的。

計算機專業的學生必須掌握的五門課程