我在知乎上聽了一場live分享,標題是”如果自學計算機專業課程“,覺得老師講的很好,所以整理了這篇筆記。
首先自己要明白,為什么要學習計算機專業,如果沒有明確的目標,是很難堅持下去的。這個目標就因人而異了,而我學習的目的是因為現在的工作的太無聊,為了提升自己的核心競爭力,也為了自己的一個小夢想。
計算機的基礎知識是枯燥難懂的,而且大部分知識工作中都用不到,但學習這些基礎知識,會讓你”知其然,知其所以然“,也更有機會獲得創造性強的工作。計算機知識雖然龐大,但靠業余時間自學是完全可行的,不用懷疑
關鍵知識領域
計算機科學被划分為18個領域,領域之間都是有關聯性的,他們共同構成了計算機專業的關鍵知識領域
自學路線
下面這張圖概述了要學習的內容,推薦大家閱讀下浪潮之巔
學習方法
推薦閱讀“學習之道”這本書,這本書介紹了人的大腦是如何進行學習的。簡單來說,我們很多時候學習的知識都是零散的,人類學習的過程就是把知識轉化為組塊,並將其移入長期記憶的過程。我們在學習時的記憶是瞬間的,比如我聽了這場live,過了兩天我可能全忘了,但是記錄下來通多不斷鞏固,就會變成長期記憶。
基於組塊的場景式學習
這種方式非常適合解決工作中的問題。舉個例子,我的github有個開源項目Essay,這個項目最初我是為了解決公司業務中的vue ssr問題,要解決這個問題我需要學習webpack、vue、node、linux等這些組塊,通過掌握結合這些組塊順利解決了ssr問題。
學習的基本原則
這張圖很好理解,任何知識都不是看一遍就能完全掌握的,因此好書值得多看上幾遍。同樣,學習必須要制定計划,遇到問題不能得過且過。現在網絡這么發達,你遇到的問題很多都有解決方案,即使網上找不到,還有很多社區同行可以幫你。而有計划的學習可以讓進度可控,比如一本書有二十章,我每天必須掌握一章內容,把時間得到充分應用。最后的學習目標那就更重要了,能讀到我這篇筆記的人,相信都是有目標的人
認知規律
很多時候我們學習都是出於一時的興趣,這時的我們是感性的,並不知道學習它能給我帶來什么。慢慢的,當我們逐步深入,我們就會對要學習的東西有了理性的認識。
從具體到抽象可以看做是一個從初級到高級的過程,比如編程語言中的面向對象
理論必須在實踐中才能真正學好,這點相信每個人都有體會,上學時不知道學習的知識有什么用,工作后發現到處都要用
知識的“互聯網”
知識的深度遍歷
深度遍歷在實際生活中都有用到,比如我是做前端開發的,需要學習HTML、CSS、JS,而學習這三項又需要掌握其他知識,直到把他們都搞懂才算真正掌握
N + 1 和 N - 1層
工作中,我們處於第N層,比如前端大部分時間是寫頁面、對接口。N + 1層表示上一層,比如這個功能我如何做才能讓用戶喜歡、體驗更好。N - 1層就是下一層,比如瀏覽器的工作原理、http協議,為什么瀏覽器能渲染我的頁面?客戶端和服務器是如何通信的?
讀書的基本原則
“難書”如何閱讀
有些書看似薄薄的一本,但是看一頁都要花幾個小時,自信心受到打擊,真么辦?下面是幾種推薦方法
計算機專業課程學習建議
計算機與數學
數學和計算機的關系是緊密的,特定領域對數學的要求不同,但不可能脫離數學
推薦學習教材
認識計算機
下面這兩本書,帶你走進計算機的世界
深入理解計算機系統是一本經典教材,值得多讀幾遍
數據結構與算法
數據結構和算法是緊密關聯的,因此當數據結構發生變化,算法也同樣發生變化。學習數據結構和算法的目的,是為了針對特定的問題,設計出解決方案。比如https中的非對稱加密算法,其目的是為了解決數據傳輸的安全問題
下面是推薦閱讀的書籍和學習路線
計算機組成原理推薦書籍
計算機網絡
學習計算機網絡的關鍵是為了弄明白計算機是如何連接的、數據是如何在網絡中傳輸的、網絡軟件系統應該如何構建
推薦閱讀圖靈出版的書籍《網絡是如何連接的》
結語
最后用一張圖概括這場live所要表達的核心。
點線面,構成整個知識體系。另外,這個live是針對研究生的,因此是有難度的