自學的人怎樣進行編程練習?

本人大二,想畢業後跨專業找工作/深造(cs方向)。最理想的是能拿到暑期實習。。。

數學學過微積分,即將學概率論與統計。

大二寒假學了java,數據結構和離散數學。

離散學了命題邏輯和圖論部分。

java看過一部分21天學通java,java核心技術1基本看完了。編程練習做了21天學通java的一部分和java語言程序設計——基礎篇的大部分(沒做完)。

數據結構了解了幾種基本的數據結構(圖,鏈表,樹)等和存儲結構(順式,鏈式),但基本沒實現過。

之後應該會完成這三部分內容。。。

想問一下繼續學計算機專業知識的具體規劃。

計劃大二下學計算機組成原理和操作系統,C語言

大二接大三的暑假 計算機網路,編譯原理(有無必要?),完成之前沒完成的。

大三上 計算機系統結構

大三下 做一些練習,複習前面的。

找暑期實習。。。

1.請問這個計劃是否合理?

2.請問一般每門課要花大概多長時間?(假期連續看和平時上學時課餘看兩種情況)

3.看書和編程練習的比例一般是多少?(感覺自己這方面安排不太合理。。。)或者說每門課一般有多少的代碼量?

4.編程練習來源有哪些?

謝謝大家解答。


練習項目可以隨便寫什麼都可以,只要是你能寫出來的就可以,比如音樂播放器或者知乎客戶端



就我有限水平看來,學習編程至少需要學習一門語言和數據結構。有這兩樣就可以不考慮任何性能之類的問題進行編程了。

如果希望編寫的代碼在穩定性、性能等方面有提升,需要學習計算機體系結構、操作系統、計算機網路。

實際上,可以看到計算機/軟體考研的四門必修課就是數據結構、計算機組成原理、操作系統、計算機網路。側面說明這幾門課程的重要性。(額外提到一點,學習編譯原理的時候,我的老師提到,上這門課程,哪怕其他什麼都學不會,只要學會了自動機,也是值得了。自動機的思想如果在編程中能夠應用,對於解決問題幫助很大。)

另外,非計算機/軟體工程出身,可能更容易缺乏一些科班出身所認為的常識,很多在科班出身看起來是常識的問題,在不知道的情況下,很容易栽到坑裡,這一部分常識,來源於其他計算機相關必修選修課程,來源於相關論壇、博客、科技新聞,來源於授課教師上課的閑談。

回到題主問題:

1.請問這個計劃是否合理?

這一部分我給不出答案,因為沒有進行過自學,都是在老師指導下學習,沒有辦法估算時間。那幾門需要學習可以看我寫的前半部分。

2.請問一般每門課要花大概多長時間?(假期連續看和平時上學時課餘看兩種情況)

見回答1

3.看書和編程練習的比例一般是多少?(感覺自己這方面安排不太合理。。。)或者說每門課一般有多少的代碼量?

這幾門課程,除了數據結構,可以認為都是很難自己編程的,可以不進行編程練習。

4.編程練習來源有哪些?

我寫代碼比較少,都是完成了老師布置的課程設計就完了,平時都是自己亂寫,沒什麼規劃。

另外關於實習,可以看這幾本書《編程珠璣》《劍指offer》等,雖然我都沒看過。。

碼農的面試一般範圍跑不出數據結構,計算機網路,操作系統,設計模式的範圍,特別是數據結構,掌握了基本數據結構和提到的演算法(線性代數、離散數學裡面也提到了其中的部分演算法,可以交叉學習)就可以了。


計算機專業體系匯總 建議你刷這個,挺有意思的,我正在刷,你想學的課程Java、數據結構、離散裡面都有。數據結構、離散我也正在刷,剛開課,你有時間可以去跟一下。裡面有課堂練習、還有PAT在線練習,挺好的,祝成功。


同樣對變成感到迷茫又神秘


看起來你是按照 CS 系課程設置安排的,作為 CS 已畢業的過來人,我感覺本科課程設置本身就不怎麼合理,用的教材都太偏理論,不容易理解,更不容易用於實踐。

簡單給你提點建議吧

1. 操作系統,組成原理和 c 可以換成 "深入理解計算機系統",當然這本書需要你有 c 和 unix 基礎。因為伺服器都是 unix/linux,macos 內核也是基於 unix 的,學習底層理論如果不接觸 unix 那麼就太脫離實際了。

2. 以上都是偏硬體的東西,作為碼農,通常需要理解和使用就可以了。核心還是程序設計,你打算學的東西裡面程序這塊太薄弱了。

21天 java 肯定是不行的,你需要了解動態語言和靜態語言的區別,了解函數式編程是怎麼回事,推薦 SICP,然後再制定語言學習計劃,包括是否學習編譯原理,其實我覺得學解釋器比較有用。

然後非常重要的是數據結構和演算法,對於學生做題是比較好的方法。


推薦閱讀:

三線城市普通家境的985小碩留京 高薪or戶口?
海歸找不到合適的工作,怎麼辦?
想成為一名遊戲評論人/編輯,需要做到哪些?
醫學專業就業前景怎麼樣?
如今軟體工程就業前景如何?程序員職位是否已經飽和?

TAG:編程 | 計算機 | 大學生就業 | 計算機科學 | 學習規劃 |