早在大一的時候,就已經被各種恐嚇這一學期多累多操。雖然早己作好心理準備,但是這一學期的爆肝程度還是不停刷新大家三觀。 首先是 ADA-演算法設計與分析,簡單來說就是一堂作業是抱大腿、考試是智力測驗的課程;再來是 SP-系統程式設計,是一個要不停重看上課影片、複習老師用嘴巴講從未出現在課文裡的精華,也是考試的重點;又或著是網路服務程式設計,內容實用、但是別想藉由上課學到什麼,極度考驗你的自學能力…。整體而言真的滿操的,幾乎每天都 8、9 點到系館,然後一路學習到晚上 11 點多,甚至常常 1 點多回家。但或許是因為每天都瘋狂埋頭學習,感覺這一學期過得特別快,轉眼就要大二下,然後大學生活就過一半了…。
這一學期一共修了 19 學分,修習得課程為:
這門課是大二的必修課,算是大一下學期必修 - 資料結構與演算法 的續集。說是續集,難度卻多了一整一個檔次。在資料結構與演算法裡面(之後簡稱 DSA),內容多為基本資料結構如 stack、heap、queue 以及他們的衍伸,以及運用到這些資料結構的演算法等等,作業以及考試的部分,只要把上課內容熟記、認真複習就可以拿到高分,雖然也有那種俗稱「通靈」的思考難題,但是比例偏低,不會對學期總成績造成太大影響。
ADA 就不一樣了。全學期介紹了許多演算法,但是就僅僅介紹該演算法最基本的範例,或是一些簡單的應用。至於作業和考試,則會翻玩出各種花樣,常常一題要花上好幾天坐在那裡苦苦冥想,才能靈光一閃解題,但更多時候一無所獲只好去請教那些高手同學,每次都感覺是智力測驗…。因此好不容易花了好幾天終於想出符合某個時間複雜度的演算法的時候,會特別爽。
作業的部分總共有四次。每次的作業都是手寫部分+程式部分。平均來說手寫部分比較容易自己想到(自己想到的意思就是一個人爆想,然後大概幾天之後突然靈光乍現),大部分是題組,會有一個題幹,然後每一小題會逐步要你想出更好、時間複雜度更給我低或空間複雜度越小的演算法。有時候真的想不出來,會去找強者拿提示:請他給一個思考的方向這樣;程式的部分,每次大概都是 3~4 題,然後大家 submit code 到 ADA 課程特別維護的 online judge,一天只有 20 次繳交的機會,用完就謝謝明天再來闖關。題目就真的是非常辛辣了,雖然都是課程內容包含的範圍,但那些題目很大部分是競程選手炫技之作:他們恨不得大家不知道他們多屌,於是難度的 range 可以從 10 次 submit 搞定,到必須想一整週未果、請別人解釋還聽不懂要想很久…。儘管是這樣的一個光景,不才還是自己解出某些題,看到該死的 AC 因為我的淚水在螢幕上閃閃發光亮晶晶,就覺得「恩,努力值了…」。期末 project 是分組一起想一個 NP Hard 的問題演算法,submit 到 online judge 看哪一組的演算法較優。
整體來說,這門課可以學到很多東西。從 Divide and Conquer、DP、Greedy 到圖論、Amortized Analysis、NPC 問題,可以說囊括了所有重要的演算法。我得說真的很難,如果沒有同學一起討論、沒有別人教的話,肯定是 B+ 往下起跳,但是這些就是之後面試算法題的基礎,一想到學到的這些東西還是會有點小激動…。
如果說 ADA 是這學期作業花最多時間的,那 SP 就是在上課、複習方面下最多功夫的。內容大致上有 File I/O structures、Process structures、Program memory structures、Signal、Threading 這些。會覺得這些東西滿抽象的,畢竟 SP 就是關於系統背地裡偷偷摸摸做的那些使用者完全不知道的事情。如果要說的話,他是少數在系上必修裡的背科:只要把上課教的東西複習到很熟,基本上考試一定高分。但問題就是這門課「超難複習」。這門課的教授很會教,滔滔不絕而且很有條理,認真聽的話你不會想要睡覺(除非頂不住),但是資訊量實在太大了,常常一個恍神漏掉了一些東西,結果開始發現接下來漸漸聽不懂,然後到下課前就根本不知道老師在說什麼…。這種時候,回去複習上課投影片就好了吧?不,這個教授可怕的地方就是他的重點全都用口述,投影片有的東西都只是大概的敘述,而且重點超多、考試又全部挑這些重點往死裡打,所以期中考(第一次大考)平均超慘,直接被震撼教育。
萬幸的是,開學前就有學長好心提醒,說這堂課一定要有人錄影(老師不會錄),不然直接下去,所以每週就是我扛著個腳架坐第一排錄。冬天的時候早上冷到靠北,超多同學乾脆直接不上了等影片,所以我必須突破極限每天準時起床提前去佔位…。要說的是這其實不是什麼多偉大的情操,單純只是「沒錄到影片我自己也完蛋」…,所以一人得道雞犬升天,大家都有影片看了。我做的另外一件為難自己的事情是打上課筆記。剛剛說過教授的考試重點全都口述,所以我會花超多時間複習影片,然後把口述的重點全都打下來。這真的超花時間,一週大約兩個半小時的上課影片,我可能要花到 10 小時做筆記(常常還有老師講不清楚的地方,就要去翻課本、查資料,然後再把結果記錄下來)。這樣做的結果就是,我被我自己複習的超熟。期中考的時候平均大約 50,我好像考了 8、90,就只是因為我把時間都拿去看上課影片。
考試的部分基本上都是貼著上課考,雖然資訊量超大而且考超細,但是只要把上課影片教授口述的東西用懂背熟,高分沒有問題。兩次考試的內容一樣,都有很大部分的名詞解釋,然後需要思考判斷的部分,再來是寫 pseudo code 的部分。另外,考古題真的很重要,因為題型重複,連內容也有重複,期中考的時候邊考邊笑,因為一直寫到昨天半夜才瞄到的考古題。期末考的時候滿分 130,平均好像 100 多,所以很多人直接衝上去補救了期中考的屎成績,最後 A+ 的比例滿多的。整體來說,這門課可以算滿硬的,但是學到的觀念之後 OS 也會用到,而且內容並不艱深只是很多很雜。我自己是修得滿高興的,可能是因為這是少數投資報酬率高的資工系必修吧。
這應該是這學期最有趣的課了。課程的內容主要是關於互動式動態網頁的設置,但是不是最常見的那種伺服器端工作任務介面 (SSI,像是用 php ASP 寫的那種),是用 javascript 完成並在 client 端做呈現的網頁設計。老師從最基本的 HTML、CSS、javascript,到 React.js,然後開始教後端(教的是 Express.js),最後教了一下部署。
課程內容本身就是滿有趣的,前端嘛,就很像國高中美術課在做勞作,記得 HW0 要我們用 HTML CSS 刻一個音樂播放器的介面,大家都卯足了勁在那裡又修又用,完成之後還要到處分享比較,相當逗趣。作業的形式就是老師會給一份有大略基本架構的 Code,要同學加上 Code 讓這個 Web App 達到要求的功能。作業的評分可以說是「非常隨性」:是隨機分配給兩個同學批改,批改也不是改分數, 就是單純一個表單有兩個選項「有大略完成 / 動都沒動」。是的,所以就算你隨隨便便亂寫一些半吊子的 Code 交上去,就算再怎麼漏洞百出,只要架構還算正確,95% 的同學都不敢給你「動都沒動」的批改成績,所以在作業這一塊大家應該都是拿好拿滿 ⋯⋯ 考試的話其實就像是有限時間的作業。是在三節課之內,修改 Code 達成題目要求的功能。前兩次我覺得滿簡單的,但第三次卡在一個莫名其妙的錯、中箭落馬。第四次因為老師、助教團的技術問題取消考試,送大家分。
期末報告就是最多三個人一組用這學期所學做出一個 Web App。我們這組做的是美食地圖,沒什麼特別驚人的東西,就是一個中規中矩但是具有設計感的美食地圖。結果老師和助教的神奇評分方式把很多人(包括我們這組)送了下去。最大的問題就是評分的標準問題:標準太不一致了。系上有另一組做的是美女地圖,立意良好有夠有噱頭,但光是 syling 這方面,就會覺得「恩,你們真的要加油 ⋯⋯」。結果最後分數出來,他們傲視群雄拿到了一個奇妙的高分。另外有一組個人覺得做得超好的,卻拿到了一個奇妙的低分。我到現在還是不知道為什麼會這樣,我寫信之後(很多人也都寫信),得到的答覆都是:尊重老師、助教的專業跟評判,最後只好摸摸鼻子認了。好吧,還是 Respect,但是 Suspect 我就保留著啦。
話先說了:如果你是想要學好網球這項運動、習得更多技巧,或是練習特定技巧的機會的話,這堂課絕對不屬於你。但如果你已經對網球有一定的熟悉、單純想要找人跟你對打到天荒地老,那選這門課就對了。
印象中的上課模式就是:老師會先找厲害的同學示範他要教的東西(ex. 上網截擊、切球、高壓殺球),然後要同學們在旁邊觀摩。老師會一邊示範一邊講解動作,但是只是口述要訣、而不是帶大家一起揮拍練習的結果就是大部分的人仍然一隻半解。示範完之後就叫大家分組對打練習,但在根本還不清楚動作的情況下,練到後來迷失自我乾脆就開始抽球不管了。老師其實是個滿有趣的人,會用綽號叫別人,也常常講關於網球選手的事情相當有意思。老師在示範的時候也常常興頭上來,結果示範了超久,回過神一看錶才急忙要大家趕快去練習。
所以說,如果你是想要精進自己把網球練更好,請不要選這門課。但如果你是想打打球,跟同學切磋,又不想要很累很扎實,那你大概會上得很開心。
這是我修到目前為止最神奇的一堂課,原因是這門課的老師——廖老師,系上的傳說級教授。首先,有很多關於他的道聽塗說,像是他是遠雄集團的女婿、一天到晚跟政府高層開會討論關於金融科技的事情,大家半信半疑。但是廖老師卻經常能在課堂上邀請到大咖的講者來跟大家經驗分享,處處展示他的人脈跟魄力,讓人越發相信那些傳聞。廖老師是個超級有趣的人,擁有很多金句(ex. 「做中學、玩真的、頂著幹」),以及經常出現的各種迷樣肢體動作(ex. 突然敲黑板、突然大力跺腳、突然賞自己巴掌),在一言一行震驚四座的同時,繼續若無其事的唸自己的課文,好像什麼都沒發生一樣。我一個在他的實驗室工作的朋友跟我說,廖老師看起來傻傻的,都是裝出來的,好在別人不經意的時候扮豬吃老虎。我聽了不是很意外,因為廖老師總給人一種神秘的感覺,一種別人笑我太瘋癲、我笑他人看不穿的深藏不露。
說了那麼多奇妙的事,還是要來說一下關於這堂課。廖老師會用自己製作的投影片教學,優點是教的東西很多很廣,缺點是卻乏連貫性而且有點雜亂,所以非常容易讓人失去專注。作業有的是實作,有的是 paper review,但都和上課絕大部分的內容沒有關係,所以如果不是特別對金融科技有興趣的同學,可能會因為不去複習投影片,導致一學期下來,幾乎沒有學到東西。作業實作的部分,印象深刻的是要我們做智能合約,還有舉行量化交易競賽。量化交易競賽算是這門課的一個重點,分組進行比賽,每組每個人各自寫自己的量化交易策略,然後 submit 到 crypto arsenal 交易平臺進行模擬競賽。競賽有兩次,期中一次期末一次,時間好像都是兩週,競賽結果由投資報酬率作為排名依據,然後大家上台發表自己的策略。這時候就可以看到一堆猛人,先是上台說「我的策略很一般 ⋯」,然後連續噴十幾個術語以及指標。有趣的是,我們這些策略都是用 sample code 調參數、黃金交叉用到底的大二,竟然還能打到前幾名,上台報告我們都在憋笑,看著那些策略超狂的人臉傻住的樣子,實在很爆笑。
總之,這門課非常的涼。如果完全不上課,直接做作業、考試的話,應該也能拿到好成績。另外,這門課非常的甜,A+ 有 76%⋯。所以,如果你是想要沒有負擔的爽拿選修學分,那這門課絕對適合你。但如果你是想要好好的學習金融科技,強烈建議去修其他老師的課。
老師上課的方法很有意思:老師利用 ipad 投放到投影幕,老師跟同學同步先一起抄一段筆記,然後老師在講解。對沒錯,就是老師在大家面前從零開始把一份他自己指本講義的內容抄下來給大家看,大家一起抄筆記的概念。我們都很疑惑為什麼不事先抄好,現在還是不知道答案。上課其實有點無聊,又要一直付出勞力抄大量篇幅的筆記,常常搞得很想睡覺,但又告訴自己要硬著頭皮繼續抄筆記、繼續聽課。儘管如此,可以感覺到老師很仔細的在教,對於同學的問題也都很有耐心的回答。這也是這門課我覺得最好的地方:老師人很可愛,聲音也算好聽,還會在上課時畫可愛的插圖說故事給大家聽,很討喜的老師。
作業的內容貼著課本,所以不會有那種很刁鑽的思考題,寫完跟同學對一下大概能拿滿(要小心,前幾次我都沒對答案,結果粗心錯一堆心態有點小崩)。考試的題型跟作業類似,但難度提升了一個等級,而且三次大考難度是遞增的,有同學前兩次考很高結果第三次大意就往下掉一個等第了 ⋯。這門課算扎實,但是我覺得能學到東西,推薦這門數學課。
這門課每一堂課會由不同的教授上課,上的內容是自己的研究內容,像陳縕儂老師教深度學習、鄭龍磻老師講他之前做虛擬實境以及人機互動的經驗、林忠緯老師跟大家介紹智慧型汽車的相關內容。可以說是一門有趣的課,不一定可以學到很多東西,但是可以了解每個教授在做的研究內容,便可以當作之後選實驗室的依據,這是我覺得這門課最大的收穫。
作業的部分,有些老師是 Paper Review,其他則是做關於上課內容的 Project。像是吳家麟老師出的 Project(應該沒有記錯),要同學用手機在校園移動並錄下沿途景觀,然後經過一連串校正程序後,利用程式處理該影像,即可建出 3D 點雲模型。但因為決大部分的作業都可以在不聽課的情況下完成,也就是可以在網路上找到答案,所以在期中考後上課人數逐漸下滑 ⋯。因為這學期作業實在很多活動又多,這門課的作業淪為優先度最後的選擇 ⋯,像是在十系舞會表演後台趕三小時後要交的報告,刺激到不行。最後學期成績 89.3,我就厚著臉皮瘋狂寄信拜託幫我調上去 A+,結果掛名負責這門課的老師就是不肯回 ⋯。最後只好含淚拿 A。結論,如果你是想要了解認識系上的老師跟他們的研究領域,又如果你想要爽拿甜涼學分,那這門課滿值得上的。