黎士瑋 教授

Q1: 請您簡單介紹一下您主要的研究方向。

  專注在作業系統和電腦安全的研究。做比較多一般認知在核心(kernel),會去改作業系統(以linux為主,會看 ubuntu 上面的 linux 、andriod 上的也有)、虛擬機器 hypervisor,實驗、實作出一個安全的作業系統、或是針對系統上一些(ex:安全)的機制做效能的評估和優化。

  有時候會需要去看 x86, arm 的文件,需要碰到一些底層的東西,register、page table format,也可能會碰到組語之類的東西。

Q2: 您有希望專題生具備的基本能力,或是先修過什麼課程、具有什麼經驗嗎?

  修課經驗最需要的會是:SP,OS,除此之外,如果修過計算機組織/架構、電腦安全的話,都會滿有幫助的。

Q2-1 會需要有資安的相關經驗嗎?打 CTF 的話會有幫助嗎?

  我們研究方面除了有做攻擊,大部分還是防守,打 CTF 的話不一定直接相關,但它會讓同學在攻擊的方面有相關的概念。而CTF可能不會接觸到核心系統軟體的部分,但專題可能會需要從零開始 build 一個 Linux 的系統,改 kernel做開發。

  除此之外,其他經驗的話,對 C、UNIX 的使用環境要滿熟的,有在 C 之外對 Script (Python/ shell script) 的了解的話,會滿好的。 Q3: 專題的主題一般都是怎麼決定的?如果學生真的沒有方向的話,教授會有一些參考題目嗎?

  有滿多種的:

  1. 參與現在同學研究的計畫,開學會有介紹,加入的專題生就可以去聽聽看,有興趣的話就可以選擇加入。

  2. 老師看到有趣的主題可能也會給專題生,這樣就會變成專題生自己去 handle 一個新題目,去做更多的嘗試。

  主要是資訊安全領域相關的東西會很快的出來,那這部分就是 depends on 有沒有什麼有趣的新東西,有看到就可以去接觸這樣。

Q4: 您期望專題生能一週能花多少時間在專題上?

  最基本是 2 學分這樣課程的規劃,這是最低標。如果目標是要做出很好的成果的話,可能會需要更多時間,例如說,如果目標是要發 paper 的話,尤其我們研究領域是滿需要 engineering effort,會需要花時間開發,有時候寫的東西不是很難的演算法,但很莫名其妙地,你寫的東西就是不會動,那很需要花一些時間 debug,因為你可能要去看很多的知識,這個「具備的知識量」很多時候需要花時間去跨越那個門檻,因此可能會需要一些時間。

Q4-1:那老師知道目前專題生平均會花多少時間嗎?

  我知道的平均大約 1-2 天。

Q5: 一般來說,專題研究會是怎麼進行的呢?多久會需要 meeting 一次之類的?

  1. 1v1 Meeting

    通常一週、兩週會 meeting 一次,但基本上會看學生的安排,會先跟學生溝通好(有些是實作的問題,那這種可能就不用很 常討論,可能拉很長到一個月之類的。)

  2. group meeing

    主要是以 seminar 的形式進行(報 paper),每週進行,專題生通常一個學期報一篇。

  專題可能會分配到實際的硬體環境做使用。舉例來說,過去我們有專題生會使用Google的Pixel手機去上面改Kernel做測試開發。

Q5-1 想跟老師做專題的話要怎麼開始呢?

  直接 email 就好了!可以附一下簡單的經驗、為什麼對專題有興趣、預計對哪個方向鑽研⋯⋯

Q6: 老師您認為如果今天一個學生在一些必修科目(像是演算法、作業系統)表現得不是很理想,那對他去做專題會有一定程度的影響嗎?

  不一定。

  只能說修課可以給你們一些背景知識,這些背景知識很重要,但就我了解,修課成績跟專題成績不是成正相關的。

Q7: 教授可以給目前仍沒有方向的學生一些建議嗎?

  系上很多學生在四年間會參與很多不同專題,這也許是一個方法,可以去了解不同領域,可以實際做做看這樣子。在這之前也可以去修一下「前瞻資訊科技」,有很多系上的老師都有去上課,包括我也有去,可以透過這樣來了解各個實驗室在做什麼。

  如果選擇做很多專題來了解自己的方向的話,可能也要思考一下:是不是做的夠久,有時間讓你足夠瞭解這個領域。

Q7-1: 因為您有說到學生可能會參與很多專題,那想請問您接受學生一個學期就換專題或是同時做很多不同專題?

  我覺得如果學生自己可以負擔那個工作量,那我其實沒有太多的意見。

  但就我的經驗,如果學生要參與專題,想做出不錯的成果的話,可能會需要大概兩個學期。每個科別的研究應該都類似,一開始會需要先接觸一個領域,因為專題跟大學必修教的東西不太一樣,專題會對某個領域鑽的特別深,舉例來講,作業系統在大家上課的時候不會教太深,但專題的時候可能需要真的下去看 code,另外看 paper 也會需要很大的 effort ,這些都會需要很多時間。再加上現在學期變短,大家可能變忙碌什麼的,一個學期可能太短了。

Q8: 因為系上做資訊安全相關的老師還有蕭旭君老師,想知道您跟蕭老師實驗室的區別是在於「網路」和「系統」嗎?

  我跟蕭老師有些合作在做系統的研究(像 Andriod),但他們比較像是在 Andriod 的 framwork (不是核心 kernel)上做研究,但我們實驗室做的比較是直接去把 kernel 換掉,或是可能需要延伸 Kernel 去加新功能。

  我們雖然偏底層,但其實也會碰到上層的東西,舉例來講,我們開發完底層後,也會需要去跑應用程式做測試,這部分我們也會碰到。那變成說,你可能會需要去了解應用程式如何用到底層的服務,了解這裡的修改是如何去影響他執行的行為、效能的差異,所以我們其實是比較全面性的研究。

  懶人包:蕭旭君老師會比較偏上層,黎士瑋老師偏底層(全面性)

Bonus Q: (如果老師有測過的話)可以請問老師的 MBTI 嗎?或是可以請老師簡單說明一下您傾向的做事方式嗎?

不負責宣言:MBTI 這個欄位僅供參考,主要是可能可以透過 MBTI 了解到老師的做事習慣、方式(可以自行上網搜尋),和自己的習慣做比較。

  INTP ~ INFP,不太一定,通常在這兩者之間。

  但會不會其實資工系大家都差不多啊,或是教授們就大概都是研究者類型?

(編者註:我有問到的結果似乎真的差不多,但就是樣本數滿少的,不能保證一定正確)

補充:研究方向

  我們除了純系統相關的研究外,也有做一些稍微理論的部分,可能像正規、驗證的部分,例如:嘗試用數學 model 推導出程式執行的行為,去論述說你的程式是安全、沒有 bug 的。這部分可能就會跟大家大學學過的正規語言或者是 Automata 之類的有相關性,這也是有部分我們的研究歡迎有興趣的同學來挑戰,這部分有跟中研院的團隊合作。