中研院資訊所實習心得 & FLOLAC

起點 升大三的暑假沒有什麼特別的安排,再加上我大三上(預計)的課表看起來不是很有空間能做專題,有鑒於我對學術研究有一定的好奇,而大四才開始接觸專題太過晚了,於是決定投個學術相關的暑期實習。 除此之外,在導生宴上因緣際會認識的學長(也是讓我開始讀數學系的東西的那個學長)推薦了一本書給我,讓我開始對將程式與數學物件連結產生興趣,稍微在網路上找了一下以後發現,這個領域不要說在台灣,在全世界都沒有很多學者在研究(相比其他領域),而中研院剛好有人在研究這個,所以就開始研究起了中研院的暑期實習。 可以選擇的主題相當多,我考量的點有: 希望能接觸全台灣幾乎只有中研院有人在研究而且我也有興趣的領域,例如複雜度理論或程式語言學 希望進行的方式是自己找有興趣的題目並和教授討論,模擬實際的研究過程 兩年一度的 FLOLAC(中研院的幾個程式語言學的研究員在台大開設的暑期研習)今年剛好輪到了我比較有興趣的那一個主題,因為這個研習的進行時間和實習時間重疊,所以那幾個研究員的實習進行方式都是要求實習生先參與那個暑期研習 由於陳亮廷的安排完全符合以上三點,主題是「程式語言與數學的基礎」,所以我的第一志願就是他,申請時需要上傳的自傳也完全是針對他的主題來寫(不知道其他志願的研究員看到我的自傳會不會覺得滿頭問號)。我沒有和其他同學一樣放上一堆自己做過的專案(因為我覺得跟實習主題沒關係的東西上傳了應該也沒意義),只有在自傳中照他說的列出了「數學成熟度,以及對計算理論或邏輯有基本認識」相關的解釋、我從哪裡接觸到程式語言學、對 proof assistants 的想法以及附上我有興趣想了解的論文,最後如願被錄取了。 研究主題介紹 實習是從7/1~8/31,前兩週參加 FLOLAC,研習結束以後才會需要到中研院。 FLOLAC 雖然是中研院和資管系主辦,不過這門三學分的暑修課程還是能當作我們系的選修,甚至我也好奇為什麼是被歸類在資管,不過這讓我有了第一次到管院上課的經歷。 第一週的課程內容有三個主題,函數程設、邏輯與 Lambda Calculus,分別由穆信成、柯向上和陳亮廷上課。 函數程設的上課方式主要是在白板上手寫程式碼和證明,寫證明的過程中會點同學回答問題,可能因為他的教課風格比較即興一點,所以原本準備的三個主題只講完了兩個。有點可惜的是因為今年特別講題的講者需要用monadic programming,所以特別安排讓穆信成老師先把monad講完,導致漏掉的那一個主題剛好是他的研究專業。 邏輯和 Lambda Calculus 的上課方式類似,都是用投影片上課,而且投影片中有安排非常多練習題,只要一到有練習題的地方就會給十分鐘讓全班自己做做看,時間給的應該算是非常充裕,而那段時間也有很多助教會到處走來走去讓學生問問題。 內容的部分,函數程設的第一部分告訴我們為什麼函數式程式語言本身可以拿來寫證明,讓我們可以證明兩條看起來不一樣的程式碼其實做到的事情是一樣的,並且實際拿常用的資料型別來舉例;而第二部分則是為我們介紹什麼是程式的「副作用」,以及如何用 “monad” 來在函數式程式語言中處理他們,例如用monad來模擬一個可以修改的變數或是 throw exception。詳細內容可以參考穆信成的老師的書。 邏輯則是先教我們怎麼用自然演繹法來做邏輯推演,再介紹不同的邏輯系統,讓我們知道有「不不成立 不一定代表 成立」的邏輯系統以及他為了什麼而存在,最後再告訴我們為什麼寫程式和邏輯推演的過程是一樣的,為介紹 proof assistants 的原理鋪路。 Lambda Calculus 則是在介紹一個比圖靈機還要更早出現的計算模型,學會如何用它來寫程式以後再從 Simply Typed Lambda Calculus 開始,介紹一系列加入了不同型別系統的 Lambda Calculus,以讓他更具備成為函數式程式語言的模型的能力,到最後再以型別系統不只能拿來做型別檢查作結,給出一個將型別視為數學物件以後能夠證明某些函數無法被定義的例子。

台大資工大二下修課心得

前言 抱著遺憾來到了大二下,突然發覺自己還是沒有什麼實際的能力。 由於我的國文寫作爛到流湯,所以前面幾篇修課心得充斥著「因為」、「所以」、「不過」等等重複到吐的連接詞,這次我有嘗試當自己的校稿人。 這學期的選課沒什麼核心思想,基本上就是想到什麼課就選選看,上學期和林惠雯聊過了以後決定不繼續修分導二,而是來把作業系統修一修,現在(學期結束)來看感覺蠻正確的,明年分導教授評價貌似很不賴。 修課清單: 資工系 作業系統 Operating Systems 服務學習甲 Service Learning (a) 數學系 線性代數二 Linear Algebra(2) 機率導論 Introduction to Probability Theory 數理統計 Mathematical Statistics 密碼學導論 Introduction to Cryptography 電機系 生成式人工智慧導論 Introduction to Generative Artificial Intelligence 後量子密碼學 Post-quantum Cryptography 泛函分析與逼近理論 Functional Analysis and Approximation Theory 聽系上學長說自己沒有在資工系機率學到機率,是修數學系的機率導論(以下簡稱機率導,省一個字而已但是還是簡稱)以後才學好的,不過和線性代數的狀況有點不一樣,因為本系機率和數學系機率導的時間有衝堂,所以沒辦法同時修,因此我這學期就把本系機率退掉了。好像如果不雙主修的話就一定要補修本系機率才能畢業,反正不是什麼麻煩的事,等以後再處理就好。

台大資工大二上修課心得

前言 暑假的時候申請上了數學系的輔系,所以這學期課表大致就以系上的必修+輔系的必修為主體了。 修課清單: 系訂必修 線性代數 Linear Algebra 演算法設計與分析 Algorithm Design and Analysis 自動機與形式語言 Formal Languages and Automata Theory 輔系必修 線性代數一 Linear Algebra(1) 分析導論一 Introduction to Mathematical Analysis(1) 這次我的選課策略沒有把課表塞的滿滿滿,一方面是我覺得這學期修的課和以往的風格差蠻多的,而且也沒有那種能靠抱大腿就一切安好的課,所以只要能把有修的課都顧好、甚至於有閒暇的話還能自己更深入的看課本以外的東西的話我就很滿足了。 除此之外我的選課還有幾個值得說明的地方。 我做了一個如果沒說,會讓人以為這人要從資工系跑路了的決定,那就是把二上必修的系統程式設計退掉,原因在於他和分導的時間衝堂了,因為我對分導的內容比較有興趣而且又想說好像sp明年再修完也不會怎麼樣,所以做了這個隨便的決定(現在想來我真的覺得我好勇)。 另外我的課表裡面有兩門線性代數,這是因為由於學校的規定(細節省略),如果要帶輔系畢業的話一定要兩邊的線代都修,雙主修才能只修數學系的。雖然畢業了以後輔系應該是沒什麼用,不過我預期多修一個系上的線代應該是不會增加多少負擔,說不定還能洗一點GPA學到一些「資工特化」的線代應用,所以就乾脆同時修兩邊了。 最後還有先跑去修大三必修的自動機與形式語言,我考慮的是這門課不太需要什麼基礎,而且如果先修了,那明年如果我想修數學系的常微分方程導論的話就不會撞課了。另外我也對這門課的內容很感興趣,完全沒有理由不提早修這門課,所以就簽了。 每一門課我都會列出四點數據: 甜度:學期成績好不好拿高分(非常主觀) 負擔:要花多少時間在這門課上(以該學分而言)以及會不會和其他課一起來壓你 收穫:修這門課學到多少東西或是有什麼比較難自己取得的機會 課後學習時數(每週) 另外還有如果讓我再選一次的話,我還會不會選擇這學期修這門課(or 別的學期也不會修) 系訂必修 線性代數 授課教授:呂學一 學分:3 等第:A+ 一句話帶過:我只是來水學分的 甜度:🌟🌟🌟🌟🌟🌟🌟⚫⚫⚫ 負擔:🌟🌟🌟⚫⚫⚫⚫⚫⚫⚫ 收穫:🌟🌟⚫⚫⚫⚫⚫⚫⚫⚫(這是以我同時修數學系線代的觀點打的分,不代表別人來修也會沒收穫) 課後學習時數:2.

台大資工大一下修課心得

前言 這學期做了一點自我挑戰,也比較沒有再「先考慮GPA後再選課了」,然後我發現上一篇修課心得的螢光筆好醜。 修課清單: 系訂必修 微積分3 Calculus(3) 微積分4 Calculus(4) 普通物理學甲下 General Physics (a)(2) 資料結構與演算法 Data Structures and Algorithms 系訂選修 網路管理與系統管理(實驗) Network Administration and System Administration(Laboratory) 基礎數學寫作 Basic mathematical writing 校訂必修 壘球初級 Beginning Softball 英文(附一小時英聽)二 Freshman English (with 1-hour Aural Training)(Ⅱ) 全校性通識 中國近世思想史 Early Modern Chinese Intellectual History 共計原本要是22學分的,不過網路管理與系統管理雖然是三學分課,但是我選了一學分+一次服學的方案,所以系統上是20學分。

台大資工大一上修課心得

前言 會打這篇文主要是因為在入學前看了學長們寫的心得(例如這篇),給我這個沒有直屬的可悲新生不小幫助,另外寒假比我想像中的閒太多了所以希望能利用時間熟悉HackMD這個工具和LaTeX的語法,順便還能紀錄一下一生中第一次在大學中修課時在想什麼,可能過個幾年我就會思考為什麼大一的我那麼看重GPA,紀錄心態的轉變我覺得也蠻好玩的,而且看到了同學也整理了自己的心得提醒了我有這個用HackMD的理由,最重要的是,前面寫心得的人明顯太強了,我覺得需要一點正常學生寫的心得比較有參考價值。 首先當然先排出修課清單: 系訂必修 計算機程式設計 Introduction to Computer Programming 微積分1 Calculus(1) 微積分2 Calculus(2) 普通物理學甲上 General Phisics(a)(1) 系訂選修 計算機概論 Introduction to Computer 數學之美 Beauty of Math 校定必修 健康體適能 Health Related Physical Fitness 英文(附一小時英聽)一 Freshman English (with 1-hour Aural Training)(Ⅰ) 全校性通識 普通心理學 General Psychology 顯微鏡下的生命世界 The Microbial World 共計24學分,好像相較而言算多的,不過其實我只是把大一必修填一填然後通識課看抽到幾個就上幾個,初選過完就沒管了。