原文地址:matt.might.net/articles/wh…html
「什麼是每個計算機專業的學生應該知道的知識?」,教職員工們正在參與這場討論,我彙總了個人想法做爲這個問題的答案。git
我試着把這個問題做爲下面四個問題的結合來回答:程序員
得到一份好的工做
?維持終身就業
?進入研究生院
?對社會有利
?我下面的想法包含與現代計算機相關的通常原則
和特別推薦
。 計算機專業的學生,請自由使用這篇文章做爲自學指南。github
若是有任何添加和刪除的建議,請發電子郵件或推特給我。
郵箱:matt-blog@might.net 推特:http://www.twitter.com/mattmightweb
更新:謝謝您的建議和提醒,當我收到後,我會將其整理進文檔,以保持積極更新。算法
計算機科學項目從工程和數學中脫離而出,採起了一種基於簡歷的方法來招聘畢業生。shell
一份簡歷沒法說明程序員的能力。數據庫
每個計算機專業的學生應該創建一個做品集。編程
做品集應該和我的博客同樣簡單,上面有每個項目或成就的文章。一個更好些的做品集應該包含每一個項目的文章以及可公開瀏覽的代碼(託管在github或者Google code上)。vim
應該連接並記錄對開源軟件的貢獻。
代碼做品集可以讓僱主直接判斷你的能力。
GPAs(平均分)和簡歷卻作不到。
教授們應該設計課程項目來豐富做品集,學生在每個課程完結時,應該花時間去更新做品集。
做品集例子:
計算機科學中的孤狼是一種瀕臨滅絕的物種。
現代計算機科學家必須習慣於和非程序員有說服力地、清晰地交流。
在較小的公司,程序員是否能和管理人員交流想法,可能會關係到公司的成敗。
不幸的是,經過增長一門課程沒法解決這個問題。(儘管技術交流方面的紮實課程並不會有任何壞的影響)
須要更多的課程提供學生機會,去展現他們的工做,並經過口頭表達來保護他們的想法。
建議學生掌握一個像PPT和(我最喜歡)Keynote同樣的展現工具。(抱歉,雖然我很喜歡基於LaTeX的展現工具,但這些工具太過靜態)
對於製做美觀的數學文檔,LaTex是最好的選擇。
全部技術文檔的書面做業都應該用LaTeX提交。
計算機科學不徹底等同於工程學。
可是,足夠接近。
計算機科學家會發現本身和工程師一塊兒工做。
計算機科學家和傳統的工程師須要說一樣的語言---一門來源於實時分析,線性代數,機率論和物理的語言。
計算機科學家應該經過電磁場來研究物理學。可是,要作到這一點,它們須要經過多元微積分(以及用於良好度量的微分方程)來處理。
在進行聲音信號仿真時,掌握機率和線性代數(一般是線性代數)是無比重要的。在解釋結果時,沒有任何東西能夠代替對統計學的紮實理解。
推薦閱讀:
計算機科學家應該適應並實踐Unix計算哲學。 Unix哲學(相對於Unix自己)強調語言抽象和組成來實現計算。
在實踐中,這意味着對命令行計算,文本文件配置,無IDE軟件開發的概念感到滿意。
因爲Unix systems的流行,今天的計算機科學家應該能流利地掌握基本的Unix,包括以下能力:
emacs
和vim
編輯文件;學生們在不瞭解Unix哲學的強大能力前會抵制它。所以,最好的方法是激發學生去完成在Unix上具備相對優點的有用任務。 好比:
如下下內容正在翻譯,敬請期待
系統管理
編程語言 離散數學
數據結構和算法
理論
計算機體系結構
操做系統
網絡系統
安全
密碼學
軟件測試
用戶體驗設計
可視化
並行
軟件工程
形式化方法
圖形與仿真
機器人
人工智能
機器學習
數據庫