莊永裕教授
✉️:cyy@csie.ntu.edu.tw
🌐:http://www.csie.ntu.edu.tw/~cyy/
✏️:曾翊綺、曾顯恩、林方綺、王品翔

教授認為新生在打工、休閒、愛情、社團等等課外活動該如何選擇,那些事情一定要把握?
盡量跟上,或者說要加倍努力!我以前念資訊系的時候,大部分同學都沒程式背景,那時的狀況可能反而相對好,因為大家的出發點都差不多。我想現在同學擔心的是會有真強者或大神在。不過基本上他們就是起步早,一開始程式的表現當然比較突出,但要對自己有信心,如果有興趣,認真學習,一定可以達到一定的能力。反過來講,如果你認真學習卻還是離及格很遠,就要稍微思考一下,我相信大部分同學如果努力都可以達到一定的水準。
當然興趣勉強不來,如果發現自己對程式不是很有興趣,我覺得也不用勉強,如果發現這不是你想要的,輔系、轉系、轉學都不是什麼不好的事情。最重要的是,首先你要努力嘗試過,確認這是不是你真的有興趣想學習的。
我相信如果這真的是你有興趣要學習的,以同學的能力一定不會有問題,要有信心。難免會有 10 % 的同學發現這不是你想要學的,但資訊系寫程式不是全部,說不定佔不到一半,計算的思維、解決問題的能力也很重要,程式設計只是實踐的一種方式。你對程式沒有很有興趣,說不定會對後面的——比如說:對演算法設計、計算生物——有興趣,那可能還是值得你念資訊系,即使是這樣,你還是要對程式有一定的能力,不能完全不學,可是你不用讓自己變大神。
說老實話,大部分系上老師的程式能力可能也未必比得上系上的大神,可是我們有這些領域的知識。所以分成兩個層面:你要知道資訊科學有很多面向,如果你可以 match 到一些面向是有興趣的,那就值得念資訊系;但如果你真的發現大部分的面向都不是你有興趣的,那應該要思考怎麼找到自己有興趣的,然後到正確的地方去學習。再來就是,程式的部分,重點是你要下苦功,練習可以讓你到達一定的程度,不過我一直覺得程式跟藝術一樣,有時是勉強不來的,有人就是有這樣的天分,很容易到達很高的地方,不過一般人經過努力的練習和按部就班的學習,都可以到達相當好的水準。如果可以到達那個水準,我覺得也就夠了,可是重點就是:第一個你要確定你有興趣,第二個你必須要願意投入時間去做練習。寫程式就像寫數學難題一樣,有時候你想到一下子就解決了,你沒想到,拖一個禮拜都解決不了,這個也是你必須去習慣、去面對的。
現在有許多系都有程式設計這門課,想請問教授資訊系的學生在這方面有哪些差異和優勢呢?
我覺得這會從資訊系的整體規劃來看。如果只單就學習一個程式,那也許差距不大,可是要寫一個好的程式,通常你要有的知識不單單只是程式本身。如果你對編譯器、系統有了解,你可能會比較知道如何寫一個好的程式;如果你對演算法有了解,你可能會知道如何去設計一個好的、有效率的方法;如果你對電腦的底層有了解,你可能會知道如何讓你的程式執行的更快。資訊系的訓練不單只有程式設計,我想資訊系的學生長處在於,其他課程的輔助會讓你對於程式有更深入的了解,你知道這個程式是怎麼樣被編譯,怎麼樣被運行,這些環節上有哪些需要設計、注意的,讓他執行地更有效率、更 reliable
教授對於上大學後的時間分配有什麼建議?
如果叫你通通拿去念書,你也不會做啊,因為每個人想法不同。不過我會建議不要把所有時間都花在課程上。花一些時間在人際關係,比如跟同學的交際,或參加社團。畢竟台大是一個大型的綜合型大學,把所有時間都花在系上的課程學習有點可惜。學習跟人合作、相處,也是大學很重要的一個環節。此外,很多資訊技能並不在課程裡面。我鼓勵大一的同學,在大一寒假的時間或一升二的暑假中,自己找一個有興趣的專案來做,經過一年的薰陶,你應該對程式有興趣,有一些你可能想進行的事。
在三十年前,一升二的暑假,我寫了兩個程式,撿紅點和魔術方塊,只是在暑假想找點事情做。我相信你們現在的環境跟資源更好,比如你可以去業界實習,或設定一個目標,也許是學一門線上課程,然後用所學的知識做一個專案。綜合來說,我會建議兩方面:第一個就是開拓你的人際關係,其實我很鼓勵同學參加社團,否則,你念了四年只認識資訊系的學生,不見得是好事;到了不同的年紀,你會需要會計師、律師和醫師的幫忙,如果認識不同領域的人,對你未來會有幫助,也可以理解不同領域的人對同個議題的看法。甚至如果你未來想創業,有不同背景的人比較容易成功。第二個,不要只做系上課程要求的事。如果你對資訊有熱情,應該會想進行一些你自己有興趣的專案。
請問教授如何判斷自己何時適合開始實習?
我覺得你有這個想法跟興趣,就去找找看,如果人家願意錄取你,就表示你適合開始實習啊(笑),若面試的結果大家覺得你還太早、不適合,那就代表你還沒準備好。在我們那個年代不太實習,機會也少,現在的學生實習的目的是甚麼?是為了賺錢呢?還是說想要藉由實習去獲得一些實務經驗,可能另外要考慮的就是說實習的工作本身對你有甚麼幫助。有些實習不見得對你的資訊技能有太大的幫助,只獲得金錢上的報酬而已,適不適合,視個人的需求去判斷。
教授建議學生如何發現自己的興趣、並決定未來研究方向?
我覺得比較好的有兩個。一個是專題,系上有專題研究,而且不限年級、次數,所以是可以在你覺得 ready 的情況下就去找老師,甚至多個老師,進行專題研究,會讓你對某個領域有較深的了解。
另一個是修課,可以藉由選修課去判斷你對這些課程的了解。通常最簡單的是,先從必修大概理解對哪些方向有興趣,假如你作業系統、網路修得很好,那你可能適合系統類的研究;如果你修演算法修的很有興趣,那可能適合走理論分析。有些應用課程都在選修裡,像人工智慧、圖學視覺、資料檢索等,這些都是屬於比較基礎的選修課,你可以從裡面去判斷對哪一個大方向比較有興趣,而這大方向下還有很多更細部的選修課。你可以在有了大方向之後,就找這大方向的老師做專題試試,或是在這大方向之下,再找更進階的選修課,修過之後覺得真的有興趣再去修專題。
再來我必須強調,研究所的研究方向,畢竟只是一個時期裡面,你有興趣和投入心力的一個方向,不見得你一輩子都要做這個方向。研究生的訓練其實很大一塊是訓練你解決問題的能力,而這並不限於特定問題。其實到博士也一樣,博士所做的論文領域,並不表示你一輩子只能做這個領域,所以其實也沒那麼嚴重。
請教授發表一下對出國唸書 / 留在國內升研究所的看法?
就出國來說,現在大部分同學出國的目的都是念碩士,接著在國外找工作,和念博士然後進入研究領域,我覺得是兩個不同的路徑。跟在台灣不同,在美國這個系統是這樣:大學畢業後,如果你想工作就直接去,其實不需要念 CS(Computer Science) 的 master(相當於台灣的碩士),想要研究就直接念 CS 的 Ph.D,也不需要念 master,美國大部分的碩士班反而是用來設計給大學部不是念資訊科學,但未來想走這方向的人。如果你是要出國做研究,那其實大學畢業就可以去申請博士班了。
可是並不是所有人都適合,有些學生他準備好了,包含語文能力、對生活的適應能力、履歷表,畢竟博士生的錄取是很困難的一件事,相較於來自全球各地的其他申請者,大部分大學部的學生畢業時不會有很好的履歷,所以如果大學畢業想去申請美國好的學校的 Ph.D,大部分的大學生是做不到的。但是少部分的學生是做得到的,如果在大學的時候有繼續跟教授做專題,有些論文的發表,累積很好的一些研究經驗。其實我也是在台灣念完碩士之後才出國念書的,碩士有一個優點就是讓你對研究領域有比較深入的了解,有更長的時間讓自己準備好,特別是碩士以研究為主,你一定會累積比較多的研究經驗,可以幫助你申請到好的博士program,如果你想出國念碩士然後工作,那就要看你的經濟能力了,其實我有學生念完碩士出去工作了 3~5 年再到美國念碩士、 program,如果你想出國念碩士然後工作,那就要看你的經濟能力了,其實我有學生念完碩士出去工作了 3~5 年再到美國念碩士、工作,有些人在台灣工作之後發現到國外工作會更符合他想做的事,才決定出國,這個時間點不是早做就比較好,想清楚再去做就是了。
最後請教授對新生說幾句話。