優(yōu)選答案不要把時間浪費在所謂的大學(xué)課程上,很多都是沒有營養(yǎng)的。其實軟件工程的知識體系也就是那樣,各個大學(xué)也是照著這個思路編排課程的。所以,自學(xué)的時候直奔主題就可以了。
軟件工程。包含兩個部分:軟件和工程。軟件是程序員做的,而工程是項目負責(zé)人管理、程序員實踐的。
軟件又包含兩部分:語法和算法。語法,即要掌握某種編程語言。一般來講,要想工作中用的上,那么面向過程的語言和面向?qū)ο蟮恼Z言都得掌握。一般學(xué)C、C++、Java、Dephi等等。面向過程的程序比較好學(xué),條目也很清晰。而面向?qū)ο蟮木幊绦枰獙W(xué)兩方面的內(nèi)容:語法本身和龐大的類庫。算法,這是編程的靈魂。一般包括:數(shù)據(jù)結(jié)構(gòu)和經(jīng)典算法。學(xué)無止境,一般性的工作話,掌握基本的就夠了,如果工作較復(fù)雜得多看看算法方面的期刊。

工程?,F(xiàn)代軟件越變越大,大型的編寫工作動不動就涉及萬人。工程的方法只是為了更好的組織、協(xié)調(diào)編寫過程。《軟件工程》本身就是一本書,很厚的。主要講軟件的生命周期,比較抽象和繁雜,但是規(guī)范的工作方式就是從這本書里來的。另外關(guān)注一些編程習(xí)慣的知識。這也是工程的一部分。
軟件只是計算機科學(xué)中的一種。所以,比如計算機基礎(chǔ)、計算機系統(tǒng)等等宏觀的知識也需要理解。特別是對于高級程序員,計算機運行的底層知識就更重要了。操作系統(tǒng)、80x86以及匯編語言是底層知識中的一部分。
軟件行業(yè)分工很多:網(wǎng)絡(luò)編程、數(shù)據(jù)庫編程、應(yīng)用程序編程、游戲編程以及操作系統(tǒng)編程等(中國似乎還沒有商業(yè)化的操作系統(tǒng)),研究任何一個都挺累人的。學(xué)習(xí)完上面的基礎(chǔ)知識后,就需要給自己選一個專業(yè)方向了。
建議一個學(xué)習(xí)流程。如果你什么都沒有學(xué)。

1】計算機基礎(chǔ)知識。主要是硬件方面(大一水平)
2】同時,學(xué)習(xí)C語言,語法就夠了
3】透徹的理解C++需要用C語言去編寫一個圖形化的應(yīng)用程序,但是,似乎也有一些直接上手的C++教材。學(xué)習(xí)語法,簡單的類庫。(現(xiàn)在就是大二的水平)
4】數(shù)據(jù)結(jié)構(gòu),C++表述的?!稊?shù)據(jù)結(jié)構(gòu)》的書里面會有一些經(jīng)典的算法的。
5】操作系統(tǒng)、80x86與匯編(大三水平,大四幾乎沒有幾本書要念的。)
6】專業(yè)學(xué)習(xí)。一方面是專業(yè)上的知識,另一方面是類庫在專業(yè)上的使用。(我想,應(yīng)該可以工作了,大學(xué)里關(guān)于這方面的知識是很淺薄的,僅僅建立一個概念而已。但是要拿來謀生的話,就需要學(xué)多點了,前面所有的積淀都是為了這個目標的)
先學(xué)著,自己有體會后,就能確定自己應(yīng)該學(xué)到什么程度。如果一切順利的話,大概兩年多一點就可以完成這個過程。