温肯本科学习回忆录一:简述我的本科专业
為什么80%的碼農都做不了架構師?>>> ??
- 學校簡介:
溫州肯恩大學是2014年3月31日教育部正式批準成立的我國第一所具有獨立法人資格的全一本招生的中美合作大學。由美方完全負責學校的日常教學工作,全英文授課比例高于90%;由中方負責學校日常行政和后勤保障工作。本屆(2017屆)產生畢業生的五個院系為會計系、金融系、國際經濟與貿易系、計算機系以及英語系(按照入學人數排列),另外開設視覺傳達設計系以及市場營銷系。根據學校畢業生質量報告,第一屆畢業生考研錄取率達57%,在102名考研學生中,考入世界前100名研究生院院校32人,錄取率達到30.5%。以下是有關本校更多詳細情況的相關鏈接:
溫州肯恩大學官方網站: http://www.wku.edu.cn/zh-hans/
溫州肯恩大學第一屆畢業生質量報告: http://www.wku.edu.cn/zh-hans/2016/12/2016niandubiyeshengjiuyezhiliangniandubaogao/
-------------------------------------------------------------正文開始--------------------------------------------------------------------
據《計算機科學導論》(第4版)的描述,計算機科學研究的問題是“什么能被自動化”。樓主則認為,這個看法本身是沒錯的,但是在人工智能技術、云計算存儲技術以及大數據科技高度發達的今天,如此看待這個問題可能就具有局限性了。樓主刻苦修習計算機科學與技術四年,感慨其博大精深,若真的只能用三言兩語概括計算機科學與技術,樓主認為它是一門以算法研究和離散數學為核心、以程序編寫為手段的通過一系列規范化、模塊化和模式化的軟硬件開發過程達到解決各領域用戶需求這一目的科學技術。
特別地,在我們學校,教授們在傳授給我們專業知識的同時會反復強調計算機編程乃至計算機科學技術只是手段,解決問題才是最終目的。因此,我們的課程設置會更加側重于計算機科學與技術在各學科、各領域的應用研究,形成了我校計算機系非常獨特的跨學科計算機科學與技術應用研究的教學和學習體系。因此,樓主認為在這樣的學校不僅專業基礎知識要學得扎實牢固,更要懂得這些知識能用在哪些領域、解決哪些問題。相比于單純進行專業學習與研究的學校,專業知識的實際應用確實對我們構成了不小的挑戰。本文則從把握重點學科、掌握學習方法和關注業界動態這三個方面談談樓主計算機科學與技術探索學習路上的經驗教訓。
一、把握重點學科
樓主認為,想要初步了解計算機科學與技術以及它的跨學科應用,我們大學階段要按次序先后把握好基礎編程、基礎數學、人文科學、算法分析、跨學科知識、網絡編程、信息管理、系統知識和計算機安全這9個重點方面約25門學科的主題。
(1) 基礎編程(重要程度15%):雖然說編程只是手段,然而同樣是解決問題,編程高手善于更好地解決問題。如同一個問題,會不會用API肯定就有很大區別,會不會用這個語言特有的功能肯定也有很大區別。大學階段,想要走好這個階段需要的用時是從入學開始的一年半左右時間。此處列舉了樓主認為大學階段必須掌握的三個編程語言:
- Python語言:所有讀過研究生院的樓主學長們都跟樓主反映過大學階段沒學Python是一個很大的遺憾。的確,Python是當今研究生院的“通行”編程語言,在機器學習、可視化和數值計算等方面大顯身手。其著名的一些第三方庫如numpy和scipy也是被各大數據科學領域的磚家們用得不亦樂乎。此外,Python學起來難度遠低于Java和C/C++,因此樓主的建議是剛入學的小伙伴們從大學預科階段(又叫新生浸潤營階段)就開始著手進行學習,持續過程為一年左右。
- C/C++語言:C/C++廣泛用于系統編程、網絡編程和引擎優化的各個領域,在大學階段C/C++語言的編程能力直接與你計算機系統分析的領域、計算機安全分析領域相關,當你需要高性能的算法時,C/C++也間接與你的算法實現能力有關;C/C++還與跨學科領域中的科學計算和數值計算直接相關。因此,樓主強烈推薦后來者直接嘗試學習C++11或C++14標準,從大一第二學期就開始,先持續學習C/C++一年半左右。此外,強烈推薦學有余力的同學學習一下C/C++的boost庫,鏈接是:http://www.boost.org/
- Java編程語言:在移動端“大火”的今天,你極有可能找到一份開發移動端APP的工作。雖然這貨在計算機科學日后的學術生涯中用處真心不大,但是也應當成為你的工具箱中必不可少的一項“必殺技”,要能達到需要用的時候能馬上“撿起來”的程度。需要注意的是,在WKU Java語言基本上是從大一開學用到大二上學期為止(課程代號CS1231, CS2231和CS2232),因此這一年半也就成了你學習Java語言的黃金時段。
(2)基礎數學(重要程度20%):計算機系的人,需要掌握的數學能力獨特而又重要。我們學校是流傳這么一句話“一個計算機科學,半個數學專業”。甚至在某些數學系的童鞋看來,計算機人玩的數學他們都不一定懂。具有好的數學功底,你才能在專業學習的道路上一步一個腳印以致千里,否則你將在計算機科學(尤其是研究)的領域寸步難行。
- 離散數學:本科階段計算機系“碰到”的第一門數學課,它是以邏輯運算、數列處理、數據結構、排列組合、離散概率和漸進性為主,研究變量的離散情況的學科,是高等數學、計算機模擬、計算機操作系統、計算機組成原理和概率統計等眾多數學和計算機相關學科的基礎。雖然這門課大一下才開,課程代號MATH2110和MATH3120。但樓主真心建議后來者從大學預科開始學習,學習過程持續到大一下正式課程結束。
- 高等數學(1-2級):我們的高等數學共分為3個等級,難度從1-3依次增加。高等數學雖不教傅里葉變換,曲面向量積分也在第3級才學,但以微分和積分為主的主題不變,研究“運動的數學”。學好這個學科,不僅僅能夠培養數學能力思維,還能為數理統計、數值計算和計算機模擬等打下堅實的基礎。建議從大一上學期開學就開始學習,三個級別都學完,到大三下學期高等數學3結束的時候學習完畢。在溫肯第一個級別開課是大二上學期,明顯偏晚。三個級別課程代號分別是(MATH2415,MATH2416和MATH3415)
- 向量矩陣:在計算機科學中,諸如Strassen算法以及動態規劃算法等很多方面都與矩陣運算息息相關。向量運算的知識在高等數學第3級以及后面的數值計算中也會用到。因此這方面也要給予足夠重視。好在本學科與其他學科關聯不大,可以隨時開始,一學期時間學習完畢。建議是大一下開始接觸,到大二上該課程結束時(課程代號MATH2995)初步完成學習。
- 概率統計:基于貝葉斯理論和各種統計模型建立和研究的一門科學,作為高等數學的后繼以及數值模擬、機器學習、算法分析、系統概論等等領域的前提課程(課程代號MATH2526),概率統計這門學科的重要性自然不言而喻。建議從高等數學第2級修習完畢(大約大二上)開始學習,持續學習一年。
(3)人文科學(重要程度5% - 15%):作為計院的人也是要稍微有點人文素養的。樓主在各類學術研討會和業界分享會見過許多研究水平很高但是表達能力欠缺的高手,造成的后果就是要么別人沒聽懂在研究什么,要么就是自己都講不清楚自己在研究什么,讓自己的成果大打折扣。尤其對于我們這樣的中外合作大學來說,人文素養其實重要性是不輸于算法和基礎編程這些如此重要的課程的。想走出國門做研究的你們如果連自己做了什么都講不清楚或寫不清楚的話,估計第一關語言關就會“死”得很凄慘。因此,樓主決定本模塊的重要程度對于我校計院同學來說重要程度是15%,至于其他學校的計院,可能一般在10%左右。它包括以下幾個方面:
- 英語口語訓練(對應課程編號ESL0503或ESL0303):如果你連cache, client, exactly這種單詞發音都不標準,怎么能讓研究生院相信你的研究能力呢?此外,從功利角度,考雅思和托福的時候我們最容易栽的模塊之一也是口語,因此別小看了大學這兩門“不收GPA”的課程,事實上相當相當重要。否則當你托福敗績、雅思差半分的那天再后悔,這都木已成舟了。
- 英語議論文寫作(對應課程ENG1430和ENG1300):同樣從功利角度出發,自己體會。特別注意,ENG1430不僅記學分,還記6個學分,這將直接決定你大三上之前的總體GPA水平。此外,議論文寫作還有一個作用就是發表PAPER(無論是社區還是學術機構)用的。尤其是學術機構,語法錯誤頻出的PAPER當然只有被拒收的殘酷下場。
- 調查研究方法(對應課程GE2024):除了發PAPER用的,這門課教給你各種做調查研究的方法,無論日 后走入研究生院還是工作中遇到要研究的問題,這門課教給你的方法將對你產生深遠的影響。
- 公共關系之公眾演講篇(課程代號COMM1402):事實上,不知所云的公眾演講各有各的問題,好的公眾演講卻大體相似。在這個Public relationship如此重要的時代,公關知識不僅僅只是他們商科的專有的,我們計院人也一定要略懂一點。關于如何公眾演講,樓主此處提供一個攻略鏈接:http://blog.163.com/sy_sblog/blog/static/2657070222016112295335894/?newFollowBlog (千萬別告訴DVD小哥我寫的,這基本上可是他一學期課程的全部啊)
- 英語議論文高級寫作(對應課程ENG3091):可能剛看此文的小伙伴跟樓主感覺一樣是懵逼的,這門課不就寫寫簡歷、練練面試、搞搞proposal而已嗎?然而你們可能不知道,這個proposal換個名詞叫做開題報告,你的研究經費就是這么寫出來的;此外你去找工作,你不學絕對不知道在中國找工作的方式跟你在歐美截然不同,要是簡歷上放上私人信息你就OVER了。要是面試完畢不問工資可以拿多少你也OVER了。因此,這門課對于要工作和升研的計院同學用處都很大。
- 歷史學(課程代號HIST1062):它使你知道快速入門一個學科(比如化學)的方法是讀該學科的簡史,這個思想在日后你跨學科的學習中將會非常有用。
_ 備注:出國留學語言關的準備工作一般從大二下開始做,尤其要抓緊大二的暑假。大三上期間通過考試。準備太早了會影響專業基礎知識的學習積累,晚了則你自己申請來不及。這個時間點各位后來者務必把握好。_
(4)算法分析和實現(重要程度14%-16%):在本校比重大約15%。且作為業界的我們都知道為什么這個模塊占的比例如此之高。算法分析和程序的具體實現要充分考慮算法的時間復雜度、空間復雜度以及運行算法的操作系統和機器的性能,好的算法能達到事半功倍的效果,甚至存在不少將計算量從若干千年縮小到幾分鐘甚至幾秒鐘的實例。因此,算法的“魔力”還是值得眾位后來者不斷探究的吧。
- 數據結構與算法:包括數據結構部分從數組這個最簡單的數據結構到各種復雜樹的概念、復雜度和具體實現的分析,以及算法部分各種算法思想在解決具體問題中的運用。主干課程大二上才開始開設(對應課程代號CS2232和CS3440,其中CS3440一般A-以及以上不給,A-和A系榮譽等第),樓主認為大一下有一定編程基礎之后事實上就可以著手開始研究這方面的問題了。
- 數值計算:以誤差分析、泰勒展開式等高等數學學科為基礎,研究對于各學科領域中遇到需要計算問題的離散型計算算法的學科。這需要以完全的高等數學知識為基礎,建議從大三上開始學習研究。
- 系統模擬仿真:課程代號CS4410,是建立在統計學和高等數學基礎之上研究計算機程序和算法實現對于現實場景或系統模擬的學科,需要良好的基礎數學和算法素養以及較強的編程能力。建議從大三下開始學習研究,另:本課大三下會作為與CS4601 HCI同期開設的選修課。
(5)跨學科知識(重要程度4%-9%):在不強調跨學科研究的院校這部分可能不那么重要,然而在本校這方面知識占有與其他計算機擴展知識一樣8%的高比重。畢竟,如果計算機科學技術只是工具的話,那么這個工具怎么用呢?
-
生物:想玩生物信息學么?可是如果連蛋白質有幾級結構都不清楚的話還腫么玩呢?作為碼農想要迅速過渡到生物信息學,高中+的生物知識都嫌不夠。大學補課的機會來了,課程代號BIO13/1400。
-
化學(課程代號CHEM1083/4):計算化學也是近年來在藥物制造方面大火的一門學科。此外,我們系某教授的科研就是基于反應速率的計算化學研究,SO,不學化學怎么玩這些呢?另外提一句,市面上現在研究計算化學這方面的材料吧,大致都是用C#寫的,樓主一直想用Python也寫一本呢。
-
注:上面兩個學科拼起來玩,再加點計算機技術在里面的話,寫出來的東西至少SI高級起檔吧。
-
經濟學/會計學:想玩金融工程發財的小伙伴們苦于代碼不會寫和數學不行,而我們已經二者兼得了,如果再不小心學了個經濟學啥的那就離發財不遠了。當然,如果碼農 + 會計學的話,會計系小伙伴們可要哭了,畢竟他們吃飯的東西有可能就被我們“自動化”了。
-
心理學(課程代號PSY1000):先學著,即使未來機器學習的時代還沒到來,用來研究叫獸和怎么泡妞可能都有用。此外,本課也是比較容易拿GPA的課程之一。
由此可見,計算機科學跟稍微一點點的跨學科知識摩擦,就可能擦出火花。小伙伴們還不心動嗎?樓主的建議是,大二下學期基礎打得差不多的時候就可以開始找自己的“跨學科”了,并今后持續研究兩年這個自己找到的、喜歡的學科。
(6)網絡編程三部曲(重要程度5%-7%):
(7)信息管理(重要程度4%-6%):
- 數據庫(課程代號CS3740):數據庫是基于E-R模型研究數據的查詢、增添、刪除等數據操作的學科,在“大數據”大火的今天,樓主認為至少小伙伴們除了E-R型數據庫,mongodb和NoSQL也總是要知道一下。此外,據OSC2017年第一場會議透露的消息,樓主認為智能化大數據分析2017年必然大火。建議一般的小伙伴們在研究編程的大一下就可以開始程序鏈接數據庫的初步研究。到大二下開始全面鋪開這方面理論的研究。因為等大三上開課了再研究,也明顯是略晚的。
- 面向對象程序設計(設計模式,課程代號CS3962):說不重要吧,這門課卻是畢業課題的基礎;說重要吧,它沒有你的雅思和GRE重要。當然了,學好設計模式還是相當重要的,這是讓碼農們事半功倍的一個絕密武器哦。建議大三下學期考完語言關以后可以稍微研究一下。
(8)系統分析(重要程度8%-12%):說這部分重要的原因,不僅僅因為這是我國極其欠缺的技術,而且學好這部分對于理解計算機硬件和軟件如何“互動”是很有幫助的。建議大二寒假開始研究這個事情,本模塊難度較大,需要一直研究到大四結束。
(9)計算機安全(重要程度4%-6%):課程代號CS3498。為什么這一門課被樓主拎出來單獨成為一個模塊?因為它實在太重要了。多少優秀的APP和項目最終毀于駭客之手。因此,我們學習這一招,不僅為了黑別人和自黑,還是那句老話“害人之心不可有,防人之心不可無”。此外,這門課開設也略晚。在大二下結束你初步對系統有了解之后便可以開始研究了。不過這是個選修模塊,你也可以選擇對計算機安全一無所知。
順便解答一下關于樓主經常被問到的幾個選修模塊答疑:
- 營養學:課程代號BIO3200。這門課是BIO1300生物基礎的衍生課程,對于碼農們來說可能確實沒有直接用途。但是從身體是革命的本錢的角度來說,怎樣吃得健康營養合理還是很重要的,并且這門課A的難度系數相比于其他課也不高,建議3開頭選修缺一門冬季要上的可以選。
- C#:課程代號CS3351。C#這個語言用在.NET Framework以及一些化學分析領域還是蠻好用的。《大話設計模式》這本書源代碼也是C#,據說集成了現代軟件工程的所有結果。不過樓主認為語言嘛,這個自學即可。事實上,與C#同時期開的選修課是數據庫,樓主個人認為數據庫的知識比學一門語言是更加重要的。
- 人機交互:課程代號CS4601,又稱HCI(Human-Computer Interaction)。這門課基本上會講用戶界面設計,據上過的小伙伴說主要任務是寫Paper。不過感覺跟湯教授一起學的話好好聽課應該能了解到很多“玄外音”。因此樓主是建議小伙伴們去選修的(雖然自己沒選,因為對系統模擬方面更感興趣)。不過與它同期開得選修叫系統模擬,因此看小伙伴們更喜歡哪樣了。喜歡做用戶界面或者圖形圖像設計的就去找湯教授學這個,否則選系統模擬也是很不錯的(雖然個人感覺難度略超出了大三下的能力)。此外,若是想選這門課的話C#無論是自學還是聽課都要學一點(according to 湯崖教授)。
- 藝術類選修:當代美術(課程代號AH3741,Contemporary Art)。樓主認為AH3741這門課比大家都認為好拿分的AH1701更好拿分(AH1701很多記憶的要素,事實上對我們WKU計院這樣的純理科生來說還是很難的)。它課業任務量級適度,就是每周寫一些PAPER即可了。所以如果冬季缺3開頭的選修,除了BIO3200,這門課對于擅長寫PAPER卻不擅長記憶的計算機系的我們來說也是相當不錯的一個選擇。此外,藝術類選修課若配合HCI進行學習應該效果更佳。
二、掌握學習方法
在第一個模塊談了將近本系的30幾門重要的課程之后,這個模塊我們談談學習方法。就學長本人來說,這四年的總體學習中有經驗,也有不足,甚至有教訓。因此學長也打算把這些經驗、不足和教訓拿出來跟同屆的師兄師弟師姐們、上屆的學長學姐們以及后來的學弟學妹們進行分享。
-
突出學習重點
首先,看完模塊一,大家的反映一定是非常吃驚的。但是沒有辦法,模塊一已經是從計院總計的43門課里面精挑細選的絕對重點了。因此不說四年的時間43門課都吃透(也不可能),但至少這25門課大家都要有點建樹(選修模塊答疑的那部分實在不行也可以暫時不算重點,生化可以選一個當重點,生化后面的其他幾個選修暫時不當重點也行,除了PSY1000其實其他一般也不太會去選,這么不斷“挑肥揀瘦”弄出學科重點,學長也挺不容易的吧)。所以4年除一下,基本每年要抓住5-6個重點進行研究。
因此,每學期的一開始大家合理規劃時間就非常重要了。哪些課要作為重點,哪些課可以不那么重要都應該結合這些“重點”慢慢做到心中有數。此外,提個“雙休日不補課”倡議,因為根據學長本人經驗,大家往往雙休日都是不太想學習的。因此要抓緊周一到周五的時間進行學習(大家可以私戳本學長索取平時周一到周五的學習計劃,保證沒清華的那么恐怖,精確到10分鐘而已),那么雙休日則可以“浪”一點了。此外,真正厲害的學神一般在于雙休日不學新的也不“大浪”,而是在“溫故而知新”或反思整理加以適中程度的玩耍,這樣就能以更加飽滿的狀態開始下一周的生活。
-
及時記錄反思
有個叫艾賓浩斯曲線的東西想必不需要學長多解釋了,這個說的就是我們在學習中如果有好的想法、體會或者知識收獲的話不妨及時記下來,這樣一來有利于我們日后復習參考,二來若能相互之間分享學習心得的話,必然有事半功倍的效果。
-
學會調查研究
大學在學有余力的前提下建議可以搞一些research,因為萬一發表了paper,你的申請表就會“鶴立雞群了”。除此之外,你不僅僅是收獲了paper本身之外的名譽,更重要的是做paper教給你的調查研究方法、專業知識技能等等。發表PAPER的合適時間一般在大三下學期之前。
-
合理規劃假期時間
對于計算機系小伙伴來說,學長以過來人的反思,總結出幾個寒暑假建議應當利用如下:
- 大一寒假:多學1-2門除了JAVA以外的編程語言。
- 大一暑假:初步研習算法,進一步加深語言的學習。
- 大二寒假:深入研究算法和語言的學習,適度預覽一些系統方面的知識。
- 大二暑假:全力以赴攻“語言關”,爭取大三開學告捷。并在有余力的情況下深入研究系統方面的知識,學習一些網絡前端編程的知識。
- 大三寒假:去美國的小伙伴要開始攻G類考試啦。其他的小伙伴繼續深入研究網絡方面的知識。
- 大三暑假:把自己研究噠以及考試、實習噠等的結果全部整理一下,自己或者和中介一起好好整理申請的材料。因為大四上一開學英國澳洲方向就要申請了,大四上的11月份左右美利堅也開始了。然后把自己沒考好的什么考試再弄弄刷分試試看
- 大四寒假:之前考試有問題的、申請資料沒全的要加緊補上了。此外與意向學校進行確認,確保萬無一失。此外,租房和機票業務最好也此時開始規劃。
- 大四暑假:是個為數不多的可以真正好好放松的暑假(土澳除外,因為基本上大四下非正式結束到新學校開學也就兩個月不到),但別忘落實好在新學校的錄取確認、簽證確認、機票確認、新國家入關規則熟悉、導師聯系、課程選擇、住房選擇、學費繳納以及校園環境熟悉(著名建筑物地點、圖書館地點及使用方式以及社團情況等等)
三、關注業界動態
計算機行業更新是非常快的,書本的知識只是一些不變的原理性東西,那么在變化的一些業界最新進展就要我們另外特別關注了。
對于計算機系的小伙伴來說,至少因為你在中國(學長也清楚往往你們很喜歡看中文的東西),這兩個地方是一定要關注的。
- http://www.oschina.net/
- http://www.csdn.net/
關注它們有助于你業余的時候拓展一下自己的視野,更好地清楚自己所學的知識能怎么用,哪些是過時的、哪些是有用的、哪些是需要進一步學習的如此等等。這樣,在學好專業知識的同時你就能有望“跟上時代的步伐”了。
總結
本文寫得比較長,但是從把握重點學科、掌握學習方法和關注業界動態三個方面詳盡描述了計算機科學與技術這個專業究竟是做什么的以及該如何進行學習。其實樓主和你們湯崖教授都有過這樣的感受,就是計算機科學剛看到會覺得好奇,學了一陣子會略有點BORING,但是隨著學習的深入你會發現這是一門越學越喜歡的專業,因為你每天醒來會不斷迎接新鮮的東西,這種感覺非常清新。此外,無論是哪個國家,哪怕是美國,如今計算機專業的人員還是供不應求的,因此我們趕上了最好的時代。加油吧,同志們!
特別鳴謝:本文末尾,感謝以下教授,他們在樓主的小伙伴們以及樓主專業能力的養成方面傾注了大量心血,是我們永遠愛戴的大學教授和人生導師。
- 溫州肯恩大學計算機系張長江博士
- 溫州肯恩大學計算機系黃宏斌博士
- 溫州肯恩大學生物學學部孟宇博士
- 溫州肯恩大學計算機系湯崖博士
- 美國肯恩大學自然科學學院主任張至先博士
- 美國肯恩大學計算機科學學院研究生院指導教授劉景秋博士
- 溫州肯恩大學數學學部Mr.Dow教授
- 溫州肯恩大學原數學學部Dr.Nazar博士
- 溫州肯恩大學生物學學部Dr.Machelina博士
- 溫州肯恩大學原會計系李永清博士
- 溫州肯恩大學英語系Dr.Maquardt博士
- 溫州肯恩大學數學學部Dr.Olson博士
- 溫州肯恩大學原數學學部蔣亞楠博士
- 溫州肯恩大學計算機系Dr.Nazeer博士
- 溫州肯恩大學交流傳媒學部Dr.Girardelli博士
- 溫州肯恩大學原英語系王嘉蘭博士
- 溫州肯恩大學英語系以及商法學部Dr.Lew博士
- 溫州肯恩大學原英語系Dr.Thornton博士
- 溫州肯恩大學原英語系Mr.Mayer教授
參考資料既是大學階段引文的標準書寫方式,也是大學階段你不容錯過的經典書目。
參考資料:(標注*號則為選讀書目,其余為必讀書目)
(本書單系經學長親自仔細鑒定以及與本系相關同學教授們廣泛使用或認可之后認為的好書,后續還在更新中,請持續關注)
轉載于:https://my.oschina.net/Samyan/blog/851852
總結
以上是生活随笔為你收集整理的温肯本科学习回忆录一:简述我的本科专业的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Codeforces1380 D. Be
- 下一篇: 途家民宿VS木鸟民宿:民宿APP功能体验