2012暑期實習心得分享-高俊生(14級,現為清華大學資工系大學部3年級)
實習單位:北京清華大學
(一) 修課時間:民國101年8月16日至101年9月10日,共 26天
(二) 修課名稱:程序設計訓練
(三) 授課教師:張廣艷教授
(四) 修課動機:
從前就聽聞大陸學生競爭激烈,尤其能擠進北京清華大學更是萬中選一的人才,再加上新竹清華跟北京清華有段歷史淵源,所以心中一直期盼著有天能與他們坐在同一個教室學習。這次開設的課程剛好有系上沒開的C++程序設計,再加上時間許可,所以藉由這次機會,去了解頂尖大學學生的思維,體驗當地的生活,增廣自己的見聞、與世界接軌。
(一) 課程內容
須具備C++語法基礎與物件導向的觀念。
上課方式為一周上三天課,每次從上午9點上到上午11點半。從第二次上課開始會預留約1小時給同學上台做報告,每次5個人次,涵蓋內容如下:
(1) 上課總結
(2) 實驗課遇到個問題及解決方法
(3) 技術分享
(4) 心得感想
(5) 討論
報告不一定要受限於上述的項目,可以自由發揮,形式也不固定。
因為這門課強調「實作」的能力,所以先講求「會用」。因此不需要去將每項技術背後所需要的背景知識研究透徹,平均每次講授 70 ~ 80頁投影片。
每天都會有下午跟晚上兩個時段的實驗課。教授會先簡述該週的Project的項目需求與思路,再要求將上午所教授的範例實現或指派其他的作業。
第一周,圖形介面編程 By Qt
Qt中的信號/槽 (Signal/Slot) 機制、Qt中的元件及事件處理、Qt 繪圖。
第二周,網路與多線程程式設計
WinSock與網路概論、Windows網路編程基礎及API介紹、多進程 (Multi Process)與多線程 (Mutli Thread)概念及在Windows下的編寫、互斥鎖(Mutex)與信號燈(Semaphore)的編寫。
第三周,搜尋引擎 By Python & Django
Python語言、B/S架構與Python Web編程 By Django、正則表達式。
每周都需要繳交一份Project,內容為該週上課的主題,實驗課所指派的小作業不需要提交,內容為Project的部分內容或者該日上課範例。
上完第三次課後,在周末會擇一天晚上進行上機考試,考試時間2小時。開放網路,可以帶自己所有的資料過去。每次考3個大題組,內含數小題,採部份給分機制。考試內容涵蓋當天上午的上課教材。
(二) 上課收穫
第一周,圖形介面編程
(1) 理解函數指針(function pointer)的概念,也就是把函數當作是參數一樣去使用,進而了解Signal/Slot機制的原理。
(2) 會使用Signal/Slot跟emit去進行物件或視窗間的溝通。
(3) 能整理歸納出他人Source Code的架構,提取出所需要的部分來完成自己的Project。
第二周,網路與多線程程式設計
(1) 會使用WinSock API進行簡單網路程式的編寫。
(2) 了解在Qt事件處理循環裡進行Winsock通訊造成程式崩潰的原因:類似一種巢狀架構,將處理循環寫在另一個處理循環中,會因為內層(WinSock)會一直停留在偵測(Receive)階段而造 成外層(Qt Event)的其他元件無法得到控制權,而造成程式崩潰。
(3) 學會使用多線程去解決上面的問題。
(4) 利用線程中再開新的子線程們來處理Server服務多的Client的功能。
第三周,搜尋引擎
(1) 掌握Python這個新語言的編寫。
(2) 初步了解B/S架構,並使用Python的Web框架:Django,去編寫動態網頁。
(3) 了解初步的搜尋引擎原理:爬找一個網頁並對它的Source Code進行 Parser,取出超連結並建立索引標籤(Index),之後再開始進行下一層的搜索(可使用BFS 或者 DFS),直到找不到頁面為止。
(4) 初步掌握正則表達式(regexp)的使用 (用來做上述的Web源代碼的Parser)
(三) 心得感想 - 我在北京清華學到的三件事
(1) 抗壓
當初看課程大綱,以為是要以速成的方式從頭學C++,直到第一節課後才驚覺原來這門課是建立在你「已經」會C++的基礎上進行授課。而且照著當初的課程大綱,每個禮拜都要學一種新的Topic,要進行上機考是與交出一份Project,一切從零開始並且要在短時間內展現出成果,這種壓力在台灣我很難感受到。
人對於未知的事物會感到恐懼,每個禮拜都是全新的開始也是挫敗的開始,每天面對這些新事物我心中一直想著:「今天上的東西我還沒有全盤了解,及之前被視為理所當然的背景知識我還沒有念完,明天又要上新的東西,幾天後要上機考再來要交出Project,怎麼辦?」儘管每天不斷花時間去追趕進度,但覺得自己總是在半生半熟的狀況下去考上機考,不同於在台灣可以花一段長時間充分準備,心中沒有十足的把握,十分忐忑。有時候狀況好,能夠發揮應有的水準,自己就會鬆一口氣,但在結果未符合自己的標準時,就覺得難過沮喪,畢竟機會已經那麼少了,我竟沒有把握住它。
後來直到老師在課堂上說到:「得意失意在所難免,重點是你如何調整心態?」從前對這句話的認知只停留在勵志佳句的階段,而在那個當下,這句話深深衝擊到曾經歷過低潮跟高峰的我,我思考著為什麼大陸的學生可以做到,我卻只能在這邊害怕沮喪?
回想這一段歷程,雖然每次給自己打氣,想要撐下去,但還是不免一路跌跌撞撞。就算跌倒很痛,但還是要爬起來,因為沒有本錢也沒有資格一直倒下去。後來體會到,這就是現實,沒有人會等你準備好,你得隨時處於準備好的狀態,要學會去擁抱壓力,才能去跟別人競爭。
我想,我是跨越了這一關了。
(2) 效率與資料整合
之前有從事一些程式競賽的活動,所受的訓練屬於嚴謹扎實,對於一個Algorithm,得去了解它的原理甚至還要證明他的正確性與複雜度,起初還是想要把所有的東西都了解後才去使用它,否則心中會有不踏實感。隨著時間的推進,使用這種學習方式的我感到十分吃力,因為東西越來越多,時間越來越不夠。直到老師說「要用最有效率的方法做事」,還有「不懂原理就不去用是科學,不用明白就去用是技術」這兩句話無疑對我是一記當頭棒喝,讓我思考反省我一直使用錯的方法去面對這一切,上實驗課的時候,總是要了解所有的資料後才開始動手,上機考的時候,總是要清楚背後原理後才作答。
每個禮拜丟到這片名為「知識」的大海中浮沉,遼闊的知識可能連自己面對一個函式是不是自己所需要的都不知道,時間上更不允許我如此鉅細靡遺的理解它背後的原理。這是需要我在最短的時間蒐集到我需要的元素,然後拼裝出成品展現出來,哪能讓我慢慢這那邊瞎耗?再次呼應老師所說的,先把它當成工具、技術,以先展示成果為優先。此時此刻的我們,面對這個日新月異的世界,一項新的技術可能過沒多久就過時了,在了解技術背後的原理後,別人早就不知道已經將你拋開到十萬八千里外去了。
我想,我親身學到了一課。
(3) 企圖心
我個人很喜歡上台報告的機制。為了淬鍊出那十幾頁的投影片,每個人在背後下了多少的功夫,其實很明顯可以感受到。雖然老師有提供報告的項目格式,但我看到的大陸學生,不流於制式,想展現出跟別人不一樣的成果。這很符合我想來北京清華修課的初衷:見識別人的思維,並自己比較,突破自己的思考框架。在這當中我看到了大陸學生的競爭力,還有我們所缺乏的企圖心。
台灣學生過得太安逸,坐擁那麼好的環境,卻不懂的利用。即使都已經用了填鴨的方式去教,不用去思考活用,只需將它背起來,也沒有教的很多、很難,但可能不想那麼累,只想求一個Pass,或者只是耽誤到自己玩樂的時間,就在那邊抱怨東抱怨西。可能教學意見調查填完,老師被叫去約談後,馬上改變方針,變成了皆大歡喜。
張廣艷老師曾在課堂上鼓勵我們:「要難一點才能提升水平,否則就沒有學習的意義」及「大家要有信心去勇於挑戰」我想這門程序設計訓練,在台灣應該會生存不下去,就算能再開,也會被先前修過的學長姐或同學阻止,說為什麼要浪費你可以玩樂的暑假,去修這種吃力不討好的課?但是在北京清華,這門課已經開了三年,而且修課人數都是一百多人。在一樣的時間,大陸學生所做出來的Project讓人感到驚艷,甚至還有些跟我們一樣沒有都是C++基礎的轉系生,我們可能只是剛好過90分拿了個A+然後就不理那門課,或者隨便敷衍了事,做一個差不多先生。但是看到一位常鋮同學已經將Project做得讓我覺得佩服,卻還是聽他講說要將它做的更完善,頓時我知道,在他們心中早已將「好還要更好」作為圭臬去奉行。
這一切了解到我們不只是能力上的差異,還有心態上的差異,見識到了這個世界,體會到了自己的渺小。
(一) 食
校內食堂大部分需要使用餐卡付帳,只有少數接受付現。這次在那邊生活26天,使用10張只有38元人民幣的餐卡,因為有幾次出校外吃及校內付現,勉強撐到最後一天。如果要餐餐在校內食堂吃,以男生來說會不足夠。
校內食堂開放時間:中餐11:00 ~ 13:00、晚餐17:00 ~ 19:00。
使用「兩」為單位,1兩為50克,男生大約2 ~ 3兩飯即足夠。
北京餐飲的口味比較重,對於吃清淡的人來說會過鹹過辣,建議可以提前跟老闆說少油少辣。
(二) 住
這次是住 26號樓。
房間約為 2 ~ 3 人一寢,每個位置是屬於兩層式,下層是衣櫃及書桌,上層則是床鋪。
書桌附有一個插頭,但沒有檯燈。它的插頭因為有個擋板,所以如果轉接頭只有八字會插不進去,必須要用附有接地線的八字插頭才能推動擋板,抑或使用一般平的插頭也可以。
只有冷水澡,如果想洗熱水澡就得去東區辦理澡卡,然後去北區澡堂洗澡。
宿舍飲水需要辦理飲水卡,這與洗衣卡是同一張卡。
(三) 行
北京清華校園很大,建議是用腳踏車代步。
如果時間比較短,所以建議用租借的,若是長時間就會建議買二手車。租借的車子需要押金,建議別租新車,因為押金貴(400人民幣)而且很容易失竊。
(四) 通訊
手機可以去C樓紫荊超市買一個門號 35 ~ 50都有。
網路則是一天10元人民幣,可使用2G流量。如果超過了則是累計計費。
上一篇 第一期-2012.10出刊-暑期實習-陳盟仁 下一篇 第一期-2012.10出刊-暑期實習-林冠吾