深藏若虛

國立中央大學軟體工程研究所推甄心得

Recommendation Experience of Master of Software Engineering

本文採用CC授權 姓名標示─非商業性─禁止改作 3.0 台灣

2016-11-30 補充:
  1. 中央大學從我那屆進去時早就沒有軟體工程研究所了,應該正名為國立中央大學資訊工程學系軟體工程碩士班。在這邊補充,就不另外修改標題了。
  2. 目前軟工碩士班推甄的複試已經改成仿業界的闖關面試,不再是上機考了,所以本篇心得的參考價值已經失效了。請另外搜尋 2015 年(含)後的推甄心得。

緒論

國立中央大學軟體工程研究所(簡稱軟工所)今年第一次嘗試以上機考為主的推甄方式,且不看重課業成績,這不但意味這造福原本是資工系會 Programming 但課業成績不佳的同學,更為大學讀非本科系卻對資訊有濃厚興趣的學生開拓的一條路,敝人就是此次考試的受惠者,因為要感謝的人太多,所以只好藉由發心得文給未來想參加此考試的同學參考,作為回報。

關於本次考試說明可以參考:

強者的心得文參考:

以上強者有敘述過的部分我就儘量不重複了,他們心得寫的很好,已經不需重新闡述,所以我會著重在從實務經驗較多的同學的角度去做心得分享。

關於我

  • 國立中興大學歷史系,系排 85.5%,無輔系、雙主修,修過資工系幾堂課。
  • 國立文華高中 中區資訊能力競賽(無得名) / BBS 校站 NF 創站長 / 電研社社長 *
  • 國立中興大學 學生會資訊長 / 圖書館網頁工讀生
  • 2013全國⼤大專校院開放軟體創作競賽 佳作 / Indie Speed Run 2013 / g0v.tw hackath5n

  • 報考 40 名,取 11 名,正取10

關於推甄

誰適合報名?(Who is Object?)

正如 pioneerlike(後簡稱 p9e )所言:『「只寫過網站」的同學不太適合參加本次推甄』,但不必沮喪,這不代表這類人要放棄參加推甄,反而要利用這項經驗去發展。像是敝人就是偏向網站開發的類型,與P大比起來,敝人在程式競賽(ACM-like)的經驗是比較缺乏的,比較常觸碰的是專案開發與維護的部分,也算是比較偏向網站開發的同學,但仰賴高中維護過 BBS 站(Maple-Itoc,純 C 寫成)與簡單的資訊競賽的經驗,對於 C 語言有所了解,但和競賽比起來,走的是不太一樣的方向。

也就是說,你不一定需要透過 ACM、CPE 等資訊競賽的路線,只要是對專案開發有興趣的同學,可以嘗試用 C、C++、Java 等,開發一項專案,去了解軟體程式設計和網頁程式設計的不同,以及其中的思考邏輯,會對你幫助很大。比起一般人,你們擁有網頁開發的基礎,要跳入這塊應該是比較容易的。

第一階段:備審資料

正如 p9e 和 0w0 所說,成績在這個階段不是重點。他們系排都在 50% 左右,而敝人甚至是非相關科系的,備審資料要求填寫的科目分數,一概沒有修過,但這階段的分數仍然有 8X,可以做在校成績所占比重不高的最大驗證。

和 p9e 不同的,我想強調這階段的重點是代表作。

雖然敝人在高中曾在校內資訊競賽拿到第一名,但到了中區後仍然慘當炮灰。在大學時也未曾參加過 CPE,所以我認為 CPE 應該不是唯一重點。而我走的正是另一條路,我寫過許多小作品,雖然不是很強大,但至少都是一個可以獨立運作的(網頁)程式,且都附在備審資料中。

而為了這次推甄,我把以前的思考已久的想法用網頁程式實作出來,當作代表作與備審資料共同交出去。而在第二階段考試開始前,考試老師也說他們有請研究生幫忙把每個報考生的作品試跑過,看能不能正常運作。所以我想只要寫個能正常運作的作品,附上安裝或使用說明,這階段的分數都能有80上下。

複習並總結一下,因為本次推甄的重點是上機考,所以這階段是不會刷掉任何人,只有分數的差異(大概 10 ~ 15 分),如果你有上傳能正常運作的代表作,分數應該都會有不錯的表現。

第二階段:上機考

今年上機考考了七題,題型說明,p9e 和 0w0 都說得差不多了,我一樣儘量不重複他們所說過的部分。想要了解詳細的同學,可參考 p9e 的心得,他寫的很清楚。

而我把它分為四題簡單題(1, 2, 3, 5)與三題複雜題。但這是根據敝人的實力所做的判斷啦XD。搞不好有人覺得全部都很簡單之類的。但我會這麼做憑據的是,四題簡單題只要了解 key point 時,不用十五分鐘就可以解決(甚至不用三分鐘),敝人在四題簡單題所花的時間大概占整個考試時間的 1/3 左右。

建議習慣開發專案的同學,在上機考前,至少在兩個禮拜之前,能到比較著名的 Online Judge 系統去做練習。或許有同學會問,前面不有大大說是偏向考資訊科學、業界實作而不是 ACM 嗎?Indeed~ 但在這邊的練習是去熟悉 online judge 的模式,還有怎麼在限定時間內去解出最多的題數,這會在你上機考時讓你較為從容,比較知道怎麼掌握節奏。

而練習這類題目有一個好處,就是每題通常會有一個需要你去解決的key answer,透過解題能讓你快速熟悉許多技巧。當解題完成後,可以在思考有什麼更好的寫法。如果經濟允許,可以去買些競賽相關的書籍,去理解有哪些技巧是常被題目所用到的。敝人考前就買了一本對岸出版的《 ACM 程序設計》,對我這次考試幫助很大。

最後,在程式語言的部分,會希望你能至少掌握 C 與 C++ 的基本技巧,尤其是 C++ 物件導向和 STL 的部分,敝人原本是只會C語言而已,但認為這種競賽會重視物件導項相關概念,所以在考試前兩個禮拜之前開始研讀 C++,結果很幸運的,幾乎所有題目都可以用 C++ 去解,這也是讓敝人得以正取的關鍵之一。當然,你也可以靠Java打遍所有題目,但仍然建議你,至少要能讀懂 C++ 的語法,這樣若題目規定你必須要用 C++ 編寫時,才不會愣在那裡。至於在使用 Java 參加上機考的相關問題與經驗,可以私下詢問 p9e,我想他會很樂意分享的。

Ending

很幸運的能在今年考研究所的時候,中央大學軟工所開放了這樣考試方式。讓敝人得以從歷史系的身份,成功考取資訊相關的研究所,在以前相關系所只要看到文學院,90% 都會直接刷掉的。當然這不代表說資工系廉價,連歷史系都能考上相關研究所的意思。敝人在大學四年中,也花了許多時間在資訊上的研讀,包括程式語言的練習、接案子,參加有興趣的Conference,把握機會參加競賽與社群,這都是讓一個非本科系的學生能夠累積基礎的管道。

我想要說的是,如果身在非資訊相關科系卻對資訊有著濃厚興趣的夥伴(很多原因會產生這種結果,不多贅述),不要放棄你對資訊的渴望,好好在課餘時間去多結交資訊背景的朋友,大家一起討論、分享相關訊息、參加活動,接個案子、多寫專案,慢慢累積實力,到了大四,就來嘗試中央軟工所吧!我想這是對我們這類人,敞開的另一扇大門與歸途。

最後,資訊科學的基本學科,還是要在入學前儘量掌握。敝人已經打算在下學期只有九學分的生活,好好研讀作業系統、資料結構、演算法等,展開另一趟有趣的學習之路。

我的分享大概就是這樣。也在漢敝校系主任討論過後,
之後可能會再寫一篇鼓勵學弟妹多多實作的心得延伸,到時候會再分享出來。
有什麼問題,也歡迎寫信給我:fntsrlike+ptt [at] gmail.com

祝所有對資訊領域有興趣的夥伴,皆能在這類考試中得到肯定。
Just do it, hack for fun.


General