電腦科學與技術學習反思錄

2022-11-29 22:06:06 字數 5450 閱讀 7790

電腦科學與技術這一門科學深深的吸引著我們這些同學們,上計算機系已經有近三年了,自己也做了一些思考,我一直認為電腦科學與技術這門專業,在本科階段是不可能切分成電腦科學和計算機技術的,因為電腦科學需要相當多的實踐,而實踐需要技術;每乙個人(包括非計算機專業),掌握簡單的計算機技術都很容易(包括程式設計),但計算機專業的優勢就在於,我們掌握許多其他專業並不「深究」的東西,例如,演算法,體系結構,等等。非計算機專業的人可以很容易地做乙個晶元,寫一段程式,但他們做不出計算機專業能夠做出來的大型系統。(與司徒彥南兄的談話)今天我想專門談一談電腦科學,並將重點放在計算理論上。

計算機理論的乙個核心問題--從數學談起:

記得當年大一入學,每週六課時高等數學,天天作業不斷(那時是六日工作制)。頗有些同學驚呼走錯了門:咱們這到底念的是什麼系?

不錯,你沒走錯門,這就是電腦科學與技術系。我國電腦科學系裡的傳統是培養做學術研究,尤其是理論研究的人(方向不見得有問題,但是做得不是那麼盡如人意)。而計算機的理論研究,說到底了,如網路安全,圖形影象學,**音訊處理,哪個方向都與數學有著很大的關係,雖然也許是正統數學家眼裡非主流的數學。

這裡我還想闡明我的乙個觀點:我們都知道,數學是從實際生活當中抽象出來的理論,人們之所以要將實際抽象成理論,目的就在於想用抽象出來的理論去更好的指導實踐,有些數學研究工作者喜歡用一些現存的理論知識去推導若干條推論,殊不知其一:問題考慮不全很可能是個錯誤的推論,其二:

他的推論在現實生活中找不到原型,不能指導實踐。嚴格的說,我並不是乙個理想主義者,政治課上學的理論聯絡實際一直是指導我學習科學文化知識的航標(至少我認為搞電腦科學與技術的應當本著這個方向)。

其實我們計算機系學數學光學高等數學是不夠的(典型的工科院校一般都開的是高等數學),我們應該像數學系一樣學一下數學分析(清華計算機系開的好像就是數學分析),數學分析這門科學,咱們學計算機的人對它有很複雜的感情。在於它是偏向於證明型的數學課程,這對我們培養良好的分析能力極有幫助。我的軟體工程學導師北工大數理學院的王儀華先生就曾經教導過我們,數學系的學生到軟體企業中大多作軟體設計與分析工作,而計算機系的學生做程式設計師的居多,原因就在於數學系的學生分析推理能力,從所受訓練的角度上要遠遠在我們之上。

當年出現的怪現象是:計算機系學生的高中數學基礎在全校數一數二(希望沒有冒犯其它系的同學),教學課時數也僅次於數學系,但學完之後的效果卻不盡如人意。難道都是學生不努力嗎,我看未見得,方向錯了也說不一定,其中原因何在,發人深思。

我個人的淺見是:計算機系的學生,對數學的要求固然跟數學系不同,跟物理類差別則更大。通常非數學專業的所謂「高等數學」,無非是把數學分析中較困難的理論部分刪去,強調套用公式計算而已。

而對計算機系來說,數學分析裡用處最大的恰恰是被刪去的理論部分。說得難聽一點,對計算機系學生而言,追求算來算去的所謂「工程數學」已經徹底地走進了誤區。記上一堆曲面積分的公式,難道就能算懂了數學?

那倒不如現用現查,何必費事記呢?再不然直接用mathematics或是matalab好了。

我在系裡最愛做的事情就是給學弟學妹們推薦參考書。中文的數學分析書,一般都認為以北大張築生老師的「數學分析新講」為最好。萬一你的數學實在太好,那就去看菲赫金哥爾茨的「微積分學教程」好了--但我認為沒什麼必要,畢竟你不想轉到數學系去。

吉公尺多維奇的「數學分析習題集」也基本上是計算型的東東。書的名氣很大,倒不見得適合我們,還是那句話,重要的是數學思想的建立,生活在資訊社會裡我們求的是高效,計算這玩意還是留給計算機吧。不過現在多用的似乎是復旦大學的《數學分析》也是很好的教材。

中國的所謂高等代數,就等於線性代數加上一點多項式理論。我以為這有好的一面,因為可以讓學生較早感覺到代數是一種結構,而非一堆矩陣翻來覆去。這裡不得不提南京大學林成森,盛松柏兩位老師編的「高等代數」,感覺相當舒服。

此書相當全面地包含了關於多項式和線性代數的基本初等結果,同時還提供了一些有用的又比較深刻的內容,如sturm序列,shermon-morrison公式,廣義逆矩陣等等。可以說,作為本科生如能吃透此書,就可以算高手。國內較好的高等代數教材還有清華計算機系用的那本,清華出版社出版,書店裡多多,一看就知道。

從抽象代數的觀點來看,高等代數裡的結果不過是代數系統性質的一些例子而已。莫宗堅先生的《代數學》裡,對此進行了深刻的討論。然而莫先生的書實在深得很,作為本科生恐怕難以接受,不妨等到自己以後成熟了一些再讀。

正如上面所論述的,計算機系的學生學習高等數學:知其然更要知其所以然。你學習的目的應該是:

將抽象的理論再應用於實踐,不但要掌握題目的解題方法,更要掌握解題思想,對於定理的學習:不是簡單的應用,而是掌握證明過程即掌握定理的由來,訓練自己的推理能力。只有這樣才達到了學習這門科學的目的,同時也縮小了我們與數學系的同學之間思維上的差距。

概率論與數理統計這門課很重要,可惜大多數院校講授這門課都會少些東西。少了的東西現在看至少有隨機過程。到畢業還沒有聽說過markov過程,此乃計算機系學生的恥辱。

沒有隨機過程,你怎麼分析網路和分布式系統?怎麼設計隨機化演算法和協議?據說清華計算機系開有「隨機數學」,早就是必修課。

另外,離散概率論對計算機系學生來說有特殊的重要性。而我們國家工程數學講的都是連續概率。現在,美國已經有些學校開設了單純的「離散概率論」課程,乾脆把連續概率刪去,把離散概率講深些。

我們不一定要這麼做,但應該更加強調離散概率是沒有疑問的。這個工作我看還是盡早的做為好。

計算方法學(有些學校也稱為數學分析學)是最後一門由數理學院給我們開的課。一般學生對這門課的重視程度有限,以為沒什麼用。不就是照套公式嘛!

其實,做圖形影象可離不開它,密碼學搞深了也離不開它。而且,在很多科學工程中的應用計算,都以數值的為主。這門課有兩個極端的**:

乙個是古典的「數值分析」,完全講數學原理和演算法;另乙個是現在日趨流行的「科學與工程計算」,乾脆教學生用軟體包程式設計。我個人認為,計算機系的學生一定要認識清楚我們計算機系的學生為什麼要學這門課,我是很偏向於學好理論後用計算機實現的,最好使用c語言或c++程式設計實現。向這個方向努力的書籍還是挺多的,這裡推薦大家高等教育出版社(chep)和施普林格出版社(springer)聯合出版的《計算方法(computational methods)》,華中理工大學數學系寫的(現華中科技大學),這方面華科大做的工作在國內應算是比較多的,而個人認為以這本最好,至少程式設計方面涉及了:

任意數學函式的求值,方程求根,線性方程組求解,插值方法,數值積分,場微分方程數值求解。李慶揚的那本則理論性過強,與實際應用結合得不太緊。

每個學校本系裡都會開一門離散數學,涉及集合論,圖論,和抽象代數,數理邏輯。不過,這麼多內容擠在離散數學一門課裡,是否時間太緊了點?另外,計算機系學生不懂組合和數論,也是巨大的缺陷。

要做理論,不懂組合或者數論吃虧可就太大了。從理想的狀態來看,最好分開六門課:集合,邏輯,圖論,組合,代數,數論。

這個當然不現實,因為沒那麼多課時。也許將來可以開三門課:集合與邏輯,圖論與組合,代數與數論。

(這方面我們學校已經著手開始做了)不管課怎麼開,學生總一樣要學。下面分別談談上面的三組內容。

古典集合論,北師大出過一本《基礎集合論》不錯。

數理邏輯,中科院軟體所陸鐘萬教授的《面向電腦科學的數理邏輯》就不錯。現在可以找到陸鐘萬教授的講課錄影,自己去看看吧。總的來說,學集合/邏輯起手不難,普通高中生都能看懂。

但越往後越感覺深不可測。

學完以上各書之後,如果你還有精力興趣進一步深究,那麼可以試一下gtm系列中的《introduction to axiomatic set theory》和《a course of mathematical logic》。這兩本都有世界圖書出版社的引進版。你如果能搞定這兩本,可以說在邏輯方面真正入了門,也就不用再浪費時間聽我瞎侃了。

據說全中國最多只有三十個人懂圖論。此言不虛。圖論這東東,技巧性太強,幾乎每個問題都有乙個獨特的方法,讓人頭痛。

不過這也正是它魅力所在:只要你有創造性,它就能給你成就感。我的導師說,圖論裡面隨便揪一塊東西就可以寫篇**。

大家可以體會裡面內容之深廣了吧!國內的圖論書中,王樹禾老師的「圖論及其演算法」非常成功。一方面,其內容在國內教材裡算非常全面的。

另一方面,其對演算法的強調非常適合計算機系(本來就是科大計算機系教材)。有了這本書為主,再參考幾本翻譯的,如bondy & murty的《圖論及其應用》,人民郵電出版社翻譯的《圖論和電路網路》等等,就馬馬虎虎,對本科生足夠了。再進一步,世界圖書引進有gtm系列的"modern graph theory"。

此書確實經典!國內好象還有一家出版了個翻譯版。不過,學到這個層次,還是讀原版好。

搞定這本書,也標誌著圖論入了門。

離散數學方面我們北京工業大學實驗學院有個世界級的專家,叫邵學才,復旦大學概率論畢業的,教過高等數學,線性代數,概率論,最後轉向離散數學,出版著作無數,**集新加坡有一本,堪稱經典,大家想學離散數學的真諦不妨找來看看。這老師的課我專門去聽過,極為經典。不過你要從他的不經意的話中去挖掘精髓。

在同他的交談當中我又深刻地發現乙個問題,雖說邵先生寫書無數,但依他自己的說法每本都差不多,我實在覺得詫異,他說主要是有大綱的限制,不便多寫。這就難怪了,很少聽說國外寫書還要依據個什麼大綱(就算有,內容也寬泛的多),不敢越雷池半步,這樣不是看誰的都一樣了。外版的書好就好在這裡,最新的科技成果裡面都有論述,別的先不說,至少是「緊跟時代的理論知識」。

組合感覺沒有太適合的國產書。還是讀graham和knuth等人合著的經典「具體數學」吧,西安電子科技大學出版社有翻譯版。

抽象代數,國內經典為莫宗堅先生的「代數學」。此書是北大數學系教材,深得好評。然而對本科生來說,此書未免太深。

可以先學習一些其它的教材,然後再回頭來看「代數學」。國際上的經典可就多了,gtm系列裡就有一大堆。推薦一本談不上經典,但卻最簡單的,最容易學的:

這本「introduction to linear and abstract algebra"非常通俗易懂,而且把抽象代數和線性代數結合起來,對初學者來說非常理想,我校比較牛的同學都有收藏。

數論方面,國內有經典而且以困難著稱的」初等數論「(潘氏兄弟著,北大版)。再追溯一點,還有更加經典(可以算世界級)並且更加困難的」數論導引「(華羅庚先生的名著,科學版,九章書店重印,繁體的看起來可能比較困難)。把基礎的幾章搞定乙個大概,對本科生來講足夠了。

但這只是初等數論。本科畢業後要學計算數論,你必須看英文的書,如bach的"introduction to algorithmic number theory"。

電腦科學理論的根本,在於演算法。現在很多系裡給本科生開設演算法設計與分析,確實非常正確。環顧西方世界,大約沒有乙個三流以上計算機系不把演算法作為必修的。

演算法教材目前公認以corman等著的"introduction to algorithms"為最優。對入門而言,這一本已經足夠,不需要再參考其它書。

再說說形式語言與自動機。我看過北郵的教材,應該說寫的還清楚。但是,有一點要強調:

形式語言和自動機的作用主要在作為計算模型,而不是用來做編譯。事實上,編譯前端已經是死領域,沒有任何open problems,北科大的班曉娟博士也曾經說過,編譯的技術已相當成熟。如果為了這個,我們完全沒必要去學形式語言--用用yacc什麼的就完了。

北郵的那本在國內還算比較好,但是在深度上,在跟可計算性的聯絡上都有較大的侷限,現代感也不足。所以建議有興趣的同學去讀英文書,不過國內似乎沒引進這方面的教材。可以去互動出版網上看一看。

入門以後,把形式語言與自動機中定義的模型,和數理邏輯中用遞迴函式定義的模型比較一番,可以說非常有趣。現在才知道,什麼叫「宮室之美,百官之富」!

電腦科學與技術學習反思錄

電腦科學與技術這一門科學深深的吸引著我們這些同學們,上計算機系已經有近三年了,自己也做了一些思考,我一直認為電腦科學與技術這門專業,在本科階段是不可能切分成電腦科學和計算機技術的,因為電腦科學需要相當多的實踐,而實踐需要技術 每乙個人 包括非計算機專業 掌握簡單的計算機技術都很容易 包括程式設計 但...

電腦科學與技術

黃拉拉三年以上工作經驗 男 27歲 1983年6月25日 居住地 北京 海淀區 139 手機 e mail 最近工作 3 年2個月 公司 xx網路安全技術 北京 研發中心 行業 計算機軟體 職位 軟體測試 最高學歷 學歷 碩士 專業 電腦科學與技術 學校 清華大學 自我評價 1 熟悉軟體驗證的一般理...

電腦科學與技術學習心得

作者 newsoftstudio 電腦科學與技術這一門科學深深的吸引著我們這些同學們,上計算機系已經有近三年了,自己也做了一些思考,原先不管是國內還是國外都喜歡把這個系分為計算機軟體理論 計算機系統 計算機技術與應用。後來又合到一起,變成了現在的電腦科學與技術。我一直認為電腦科學與技術這門專業,在本...