《CS PhD Journey》Chapter 2 Spring 2018

《CS PhD Journey》Chapter 2 – Spring 2018

前言

第一個學期過了一個Theory和IIS,第二個學期打算過Software和 Systems。於是我選了數據庫和計算機網絡。這樣可以把所有四個類別的qualifier課程都過掉。


CSE532 Theory of Database Systems

教數據庫的是Himanshu Gupta,他講課給人一種充才華橫溢的感覺,比較algorithmic,喜歡搞一點theory和proof。Himanshu在PhD期間是研究數據庫的,不過當教授之後改到無線網絡了。

這門課用的教材是 Database Systems The Complete Book,斯坦福數據庫實驗室的大牛寫的書,這本教材的一個作者Jeffrey Ullman是Himanshu的導師。很多作業的題目,來自這本教材的課後習題,然後這本教材的課後習題網上找不到答案。講課的重點內容是relational algebra,datalog,存儲,索引,query execution,concurrency control。這些講課重點也是作業中的主要題目。

我覺得Himanshu的講課風格,非常符合科班生的胃口,特別是喜歡一點理論的科班生的胃口。然後他喜歡上課提問題,學生舉手回答問題,回答問題正確有加分。我一開始不敢舉手,後來發現加分的名單越來越長,我也開始逼自己舉手,有幾次我認爲我的答案是正確的,但是舉手他沒有點我,最後我沒有進入加分名單中,這可是直接在總成績上加一分或兩分。他喜歡用Google doc,經常上課講着講着,就打開Google doc來現場寫題目的答案或證明等。我去了office hour兩次,問作業的題目,Himanshu解答題目很耐心。

總共有6次作業,其中最後一次作業是選做,所以相當於是5次作業。兩個人組隊提交一份作業,第一個學期的經歷讓我看到了隊友的重要性,於是我主動找了WHT組隊,他看上去比較厲害。找WHT當隊友是一個非常重要的決定,後來和他一起搬到校外一起租房子,成爲了房友。我做作業在overleaf.com上寫。每次我和WHT都獨立把作業完整做完,然後一一對答案,整理出一份完整的作業。

五次作業分別爲93/100, 71/100, 98/100, 88/90, 55/55。除了第二次71分低於均分之外,其餘四次都高於均分。後兩次作業是批改部分題目,所以總分不是100。期中考試是49/80分,期末考試是123/150。期中考試沒有考好,均分是52.8,中位數是54。期末考試考得不錯,均分是103.7,中位數是102.5分,我比均分高了一大截。最後Himanshu弄了一個給成績的標準: Finals/5 + Midterm/4 + (h1 + h2 + h3 + h4 x 160/90 + h5 x 100/55) x 50/560 + Extra-credit。按照這個公式,我的得分是83.1分。然後Himanshu給出了ABC的標準。A的門檻在85分左右,我低了一點點,遺憾拿了A-。我主要是期中和第二次作業低了一點,然後沒有課堂舉手的加分項目。WHT也是83點幾,A-。

Grades, Approximate CUT-OFF, # of students:
A, mid-80s, 27
A-, around 80, 37
B+, around 75, 34
B, around 70, 37
B-, mid-60s, 9
C+, 60+, 5


CSE534 Fundamentals of Computer Networks

計算機網絡聽說是Systems類別裏面稍微輕鬆一點的,於是我選了。授課老師是Aruna,她學術上很積極,活躍於各大會議。計算機網絡也是很重要的一門課,於是就選了。Aruna是一個女教授,搞移動網絡系統的,玩玩手機,最近也開始做一些measurement,然後關注video在網絡裏面的傳輸性能,她和老公也合作一下,搞搞NLP在手機上的應用。她講課不深入,不過範圍比較廣。

這門課的工作量也是很大的,不過還好是用Python來做作業(比其他的System課用C語言的好多了)。有三次作業(3 X 10分),五次論文總結(5分),一個大project(20分),還有兩次考試(45分)。

第一次作業是關於DNS的,域名解析。最終是自己寫了一個域名解析程序 DNS resolver,模仿Linux的自帶工具dig,寫一個叫做mydig的程序,然後做性能分析。然後還有寫一個安全版本的mydig,這裏是依據 DNSSEC來寫的。這個DNSSEC不是很容易弄的,很費不少功夫。

第二次作業是關於HTTP,TCP和Wireshark。就是編程分析pcap文件,分析各種flow,sequence,window,throughput,RTT,loss rate等等細節。還有分析congestion control,duplicate ackownledge。分析比較HTTP/1.0,HTTP/1.1,HTTP/2.0,看HTTP協議如何進化的。最後還分析了一下TCP的fairness。這一次作業整體難度不高,但是東西很多,比較花時間。

第三次作業是網絡層的路徑尋找,這個作業在三次中最難。本次作業需要在Mininet中設計和實現網絡。初次弄Mininet,一頭霧水,虛擬機,各種配置,在黑暗中摸索。然後是創建一個有6個節點的靜態網絡。測試A節點能否ping B節點,然後假設網絡某個鏈接如果斷了,Routing information protocol 多久再次收斂等等。最後是在Mininet裏面寫一個自己的Bellman-Ford algorithm,自己寫了一個分佈式的尋找最短路徑協議的程序,每個節點都在運行這個程序,用socket監聽端口,聽到了鄰居節點傳來的distance vector的更新信息,就在本地運行Bellman-Ford算法,然後把自己更新的distance vector傳給鄰居,記錄日誌。這個真是不好弄,最後我求助大牛LX,他幫我找bug,挺感謝的,最終我在最後一刻完成作業,比較驚險。

五次論文總結。就是給五篇影響力比較高的頂會論文,每篇寫一頁總結。最後選擇得分最高的三篇總結,取個平均。由於我前三次總結都是滿分,所以我只寫了三篇總結。這三篇總結分別是:一篇IMC 2011的分析網頁的複雜性如何影響page load time;一篇NSDI 2014 的分析SPDY協議;一篇SIGCOMM 2010年發明DCTCP算法。

大project。三人組隊,我和LX和某醬油。一開始是選題目,我們每個人都想出一個題目。我提出做一個fan qiang工具,LX提出探索一下區塊鏈,醬油好提出做一個入侵檢測系統。Aruna聽了聽我們三個人的idea,最喜歡我的,於是我們隊的題目就確定爲做一個fan qiang工具了。我們的思路是仿照ss的原理,基於socks5協議寫一個代理工具。在這個project中,我深入瞭解了fan qiang的知識。在推進這個項目的過程中,發現LX真的是大牛呀,核心代碼他全包了。原來,他以前在國內就自己搭建ss服務器,fan qiang經驗豐富。相比之下,我以前是花錢買服務,沒有自己搭建。然後LX寫代碼也是很厲害的,這次我是抱上了大腿了。LX把核心代碼都寫了,於是我就負責做測試了。。。首先我寫了腳本做自動化測試,然後找了國內的高中和大學同學,幫忙做測試,看看能否訪問谷歌和油管,成功了。然後我和LX一起寫了報告,醬油寫了幾段話吧,然後我負責最後做presentation。最後給Aruna展示presentation,讓Aruna印象深刻。PS,現在最新的fan qiang技術是基於x2y(x=V, y=Ray)了。

兩門考試,第一次我考的可以,第二次一般般。第一次考試是在spring break之後,因爲spring break之前的數據庫的考試,我意識到考得不好,所以spring break 期間花了很多時間準備計算機網絡的考試,最終付出有所回報。第二次考試就有一般般了。

最後這門課我獲得了A!三次作業,分別是95,91,92(滿分100)。這三次的均分分別爲79.2,79.3,79.4。中位數分別爲87.5,85,86。論文報告我的了5分滿分,然後大project我門隊得了106分,滿分是100。我們的翻牆的project被評爲4個最佳project之一。兩次考試我分別的了54.5和47.5(滿分是75分),均分分別爲45.2和45.5,中位數分別爲45.5和46.1。最終我的加權總分是84.6分。以下是Aruna給出的評分標準,我應該是正好卡在了A的邊緣上。LX的考試成績比我低一點,他好像是82點幾,拿了A-。我這次比較幸運~

Here is the rubric
85 A
76.5 A-
66 B+
60 B
50 B-
50 C+


CSE634 Data Mining Concepts and Techniques

這門課是Anita講課,水課,但是可以算作qualifier。於是我輕鬆的拿了一個qualifier的A。Anita是一個仁慈的老太太,是個好人。不過她真是比較“古董”了,講的東西有點跟不上潮流。作業,和project都沒啥難度,還好幾個人組隊,每個人分到的任務也不多。最後考試我就突擊了兩天,我得了120(95+25)分。滿分是100加上25的附加分。這些題目很多就是PPT上的題目改編一下。我應該是最高分。因爲我認識TA,我翻了翻所有人的考卷,我沒有看到滿分100+25的。我記得考試中的題目有一道關聯分析,附加題有一道遺傳算法。其實這整門課,基本上我本科就學過了。這門課輕鬆拿A


Teaching Assistant

這個學期當本科的Analysis of Algorithms的TA,總共有三個TA,授課老師是Rob Patro。他是做計算機生物學的,2019年跳槽到馬里蘭大學,回到了他讀博的地方。有一次作業是三個TA一起出題。我出了一道關於kruskal算法(最小生成樹)的題目,還出了一道關於DAG圖裏面找最長路徑的題目。有一次臨近期末的時候,Rob不在學校,要求TA找一間教室,給學生講作業的題目,複習一下期末,然後我們幾個TA搞砸了,具體細節不記得了,反正做的不好。


Advisor

整個寒假都在玩,沒有和Anshul 聯繫,開學之後,開始聯繫Anshul希望跟進一下,乾點活。Anshul給了我一篇paper,好像是用馬爾可夫鏈去做雲計算的資源分配的預測之類的,要我讀一讀,然後寫總結。然後和Anshul沒有實質性進展。期間第一學期教我算法的Sekar給上了他的算法課的人羣發email,說對他研究感興趣的,歡迎聯繫。我隨後去他的辦公室找他聊了聊,我發現他做的東西非常底層,搞system安全,然後比較有錢。

二月初的時候Anshul發email說,要好好考慮一下theory vs system,看看哪個更適合自己,然後建議和更多的教授聯繫一下。在3月11日春假,我聯繫了Aruna,Himanshu,Michalis三個教授。其中Aruna和Michalis說不收新學生,Himanshu說等一個月。4月9日晚上,Anshul發email說他收了一個學生,無法再收另外一個學生了。然後4月11日中午,我發email給Himanshu,問了問他的情況,他回覆說下週來辦公室聊聊。4月17日去找Himanshu聊了,聊了聊基本情況。Himanshu說比較看重smart和responsibility,聰敏而且負責。最後他收了我

Himanshu讀博期間是研究數據庫的,畢業後去工業界工作了兩年,然後回到學術界。來到了石溪大學。在二十一世紀初,無線網絡,sensor network這些領域是很火的。Himanshu之前搞關係型數據庫,他可能感覺這領域的發展前途有限,於是轉到了無線網絡和sensor network。這幾年,wireless和sensor有些不溫不火。不過最近藉着IoT和edge這兩個概念,再蹭一蹭深度學習的熱度,又開始有些意思了。在2018年的時候,我也沒有考慮那麼多,感覺有導師收我就行了。而我也覺得搞搞計算機網絡,搞搞無線網絡,既有system也有theory,也行。2018年的時候,最火的當然是計算機視覺,不過做最火的研究方向也是有好有壞。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章