[翻譯]每個計算機專業的學生應該知道的知識(一)

原文地址:matt.might.net/articles/wh…html

摘要:因爲計算機科學領的飛速發展,要想辨識出現代計算機科學學位包含哪些知識,是一件具備挑戰性的事情。

「什麼是每個計算機專業的學生應該知道的知識?」,教職員工們正在參與這場討論,我彙總了個人想法做爲這個問題的答案。git

我試着把這個問題做爲下面四個問題的結合來回答:程序員

  • 每一個學生應該知道什麼才能得到一份好的工做
  • 每一個學生應該知道什麼才能維持終身就業
  • 每一個學生應該知道什麼才能進入研究生院
  • 每一個學生應該知道什麼才能對社會有利

我下面的想法包含與現代計算機相關的通常原則特別推薦。 計算機專業的學生,請自由使用這篇文章做爲自學指南。github

若是有任何添加和刪除的建議,請發電子郵件或推特給我。
郵箱:matt-blog@might.net 推特:http://www.twitter.com/mattmightweb

更新:謝謝您的建議和提醒,當我收到後,我會將其整理進文檔,以保持積極更新。算法

做品集 VS 簡歷

計算機科學項目從工程和數學中脫離而出,採起了一種基於簡歷的方法來招聘畢業生。shell

一份簡歷沒法說明程序員的能力。數據庫

每個計算機專業的學生應該創建一個做品集。編程

做品集應該和我的博客同樣簡單,上面有每個項目或成就的文章。一個更好些的做品集應該包含每一個項目的文章以及可公開瀏覽的代碼(託管在github或者Google code上)。vim

應該連接並記錄對開源軟件的貢獻。

代碼做品集可以讓僱主直接判斷你的能力。

GPAs(平均分)和簡歷卻作不到。

教授們應該設計課程項目來豐富做品集,學生在每個課程完結時,應該花時間去更新做品集。

做品集例子:

技術交流

計算機科學中的孤狼是一種瀕臨滅絕的物種。

現代計算機科學家必須習慣於和非程序員有說服力地、清晰地交流。

在較小的公司,程序員是否能和管理人員交流想法,可能會關係到公司的成敗。

不幸的是,經過增長一門課程沒法解決這個問題。(儘管技術交流方面的紮實課程並不會有任何壞的影響)

須要更多的課程提供學生機會,去展現他們的工做,並經過口頭表達來保護他們的想法。

特別推薦

建議學生掌握一個像PPT和(我最喜歡)Keynote同樣的展現工具。(抱歉,雖然我很喜歡基於LaTeX的展現工具,但這些工具太過靜態)

對於製做美觀的數學文檔,LaTex是最好的選擇。

全部技術文檔的書面做業都應該用LaTeX提交。

推薦閱讀

工程核心

計算機科學不徹底等同於工程學。
可是,足夠接近。

計算機科學家會發現本身和工程師一塊兒工做。

計算機科學家和傳統的工程師須要說一樣的語言---一門來源於實時分析,線性代數,機率論和物理的語言。

計算機科學家應該經過電磁場來研究物理學。可是,要作到這一點,它們須要經過多元微積分(以及用於良好度量的微分方程)來處理。

在進行聲音信號仿真時,掌握機率和線性代數(一般是線性代數)是無比重要的。在解釋結果時,沒有任何東西能夠代替對統計學的紮實理解。

推薦閱讀:

Unix哲學

計算機科學家應該適應並實踐Unix計算哲學。 Unix哲學(相對於Unix自己)強調語言抽象和組成來實現計算。

在實踐中,這意味着對命令行計算,文本文件配置,無IDE軟件開發的概念感到滿意。

特別推薦

因爲Unix systems的流行,今天的計算機科學家應該能流利地掌握基本的Unix,包括以下能力:

  • 瀏覽和操做文件系統;
  • 用管道進行組合操做;
  • 習慣於用emacsvim編輯文件;
  • 給一個軟件項目建立、修改和執行Makefile;
  • 寫一個簡單的shell腳本。

學生們在不瞭解Unix哲學的強大能力前會抵制它。所以,最好的方法是激發學生去完成在Unix上具備相對優點的有用任務。 好比:

  • 從給定的目錄中找出佔磁盤空間最大的5個文件夾。
  • 從計算機上找出重複的MP3文件(從內容判斷,而不是文件名)
  • 取一列姓名,其名稱和姓氏都是小寫,對他們進行合理的調整。
  • 找出第二個字母是x,倒數第二個字母是n的全部英文單詞。
  • 一臺電腦的麥克風輸入直接經過網絡從另外一臺電腦的擴音器輸出。
  • 給定一個目錄,將全部文件的文件名中的空格替換成下劃線。
  • 報告web服務器中來自特定IP地址的最後十次錯誤訪問。

推薦閱讀

如下下內容正在翻譯,敬請期待
系統管理
編程語言 離散數學
數據結構和算法
理論
計算機體系結構
操做系統
網絡系統
安全
密碼學
軟件測試
用戶體驗設計
可視化
並行
軟件工程
形式化方法
圖形與仿真
機器人
人工智能
機器學習
數據庫