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

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

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