Computer Science

計算機科學

計算機的學問,以及計算的學問。

台灣有人把計算機改譯為電腦,於是也有人稱做「電腦科學」。台灣大專院校把計算機科學系改名為資訊工程系,於是也有人稱作「資訊科學」。台灣人喜歡虛華的稱呼。

計算機科學領域地圖

科學Science、技術Technology、產業Industry

先前介紹的各種學科,終將用於現實世界。可以這麼說:現實世界有什麼樣的需求,就有什麼樣的科學、技術、產業。

這裡簡單描述一下這三個詞彙的差別:

科學:知識。經過嚴謹的觀察論證,所知道的事情。

技術:做法。達成特定任務的媒介。無形想法或者實體道具。

產業:行動。大規模生產販售,融入日常生活。

計算機科學CS、資訊技術IT、資通訊產業ICT Industry

比方說,Bubble Sort屬於計算機科學,C語言屬於資訊技術,APP商店屬於資通訊產業。

為了自動計算、高速計算,學者創造了計算機科學。將獨創見解投稿於學術期刊。將專案成果公布於自家網站。

再結合各種科學,從理論到應用,工程師創造了資訊技術。製作成工具,讓大眾使用。申請為專利,供企業運用。

再結合各種技術,製造產品、提供服務,企業家創造了資通訊產業。建造工廠、設立商店、普及大眾。

Academic Institution

學術機構

學術機構是由各國政府自行辦理,目的是讓民眾獲得研究能力。優良的學術機構甚至會湧入國外民眾求職與求學。例如美國頂尖名校,學者與學生來自世界各地。

學術機構具備不同特長。例如北卡大學是計算機繪圖發源地,柏克萊大學是原子彈氫彈發源地,加州理工學院鑽研高深理論,麻省理工學院重視科技發明。

台灣是鄉下地方,百廢待舉,學術機構沒有特長,於是大家轉而重視排名。理工四大四中:台清交成央山興正。

計算機科學系

學術機構區分許多系所,負責不同領域。負責計算機科學的系所,英文稱呼是Department of Computer Science,中文翻譯是「計算機科學系」。

然而到了台灣,英文稱呼被改成Department of Computer Science and Information Engineering,中文翻譯被改成「資訊工程系」。有人故意在計算機科學的後方添上了資訊工程,而且只取資訊工程的部分當成了系名。資訊工程是罕用詞彙,字面意義是處理資訊的工程──架設電腦設備以處理資訊。

台灣為何系名造假,我不清楚背後原因。或許是當時某些老人家想要譁眾取寵、追逐潮流,因此更改系名,欺騙學生就讀,保全自己地位。請參考台灣交通大學資訊工程系的改名歷程、台灣大學資訊工程系的創系系名

學者與學生

研究機構有研究員和工程師,學術機構有學者和學生。

學術機構網站一定會列出學者清單。例如台大資工系系所成員,列出了教授姓名、專長、信箱、個人網站網址。學生透過這些資訊,找到指導老師;企業透過這些資訊,找到研究員、顧問、獨立董事。

學者的個人網站提供了課程講義、著作發表、演講行程、研究成果、軟體程式、………。學生可以從中找到許多教育資源。我自己也是透過學者的個人網站,系統地學習新知。

學術機構網站一定不會列出學生清單。應該是因為個人隱私吧!

計算機科學系學生,多半習慣製作個人網站,仿效學者陳列作品。應該是因為自身專業吧!

實驗室

實驗室由學者設立,專研特定主題,名稱千奇百怪。實驗室擺放了一堆實驗器材,而計算機科學比較特別,實驗器材就是一堆電腦,每間實驗室的實驗器材基本上沒有差異。實驗室變成了辦公室,整齊排列的辦公桌與座椅,學生平時待在裡面上班、使用電腦。

學術機構網站一定會列出實驗室清單。例如台大資工系研究實驗室,列出了實驗室名稱、教授姓名。學生透過這些資訊,找到指導老師;企業透過這些資訊,找到研究員、工程師。

實驗室的官方網站提供了研究成果、軟體程式。學生可以從中找到許多教育資源。我自己也是。

學位證書

學術機構的主要用途:學生跟隨學者,學習如何研究;產出學術成果,取得學位證書。

學位證書的取得方式有許多種:學位論文、專案、專利、修課、……。請參考《國立交通大學資訊科學與工程研究所博士班修業要點、評審辦法》。一言以蔽之:學者說了算。

企業和研究機構根據學位證書錄用求職者。但是如果求職者能以實績證明自身研究能力,就可以直接進入企業和研究機構,而不必事先進入學術機構。

也有人投機取巧,想輕鬆得到學位證書。就有人創辦山寨學術機構,校名佯裝成名校,隨意頒發學位證書。這種學術機構稱作野雞大學。古代經典範例是孫文就讀的西醫書院。

台灣是鄉下地方,百廢待舉,學生鮮有實績,於是大家轉而重視學歷。天大地大台科大,台清交成在腳下全球大學皆學店,唯有大葉好就業

學位論文

碩士論文thesis、博士論文disseration。雖然中文譯作論文,但是學位論文與期刊論文完全不同。學位論文分成兩種:

monograph:專書論述。鉅細靡遺介紹一個特定主題。

thesis by publication:論文選輯。蒐集網羅他人論文,形塑一個特定主題。

學位論文必須有獨特創見,並且邀請幾位該領域的學者們舉行論文口試。學者嘗試攻擊論文缺陷,學生盡力為其辯護。學者認可學位論文,學生方可申請學位證書。

臺灣博碩士論文系統可以找到大家的學位論文。各大學圖書館都會保存學位論文的紙本書籍與電子檔案。請參考《學位論文資料哪裏找呢?》

學術研究

學術機構的另一個用途:學者做研究。等同於研究機構。

企業追求獲利,容易改變營運方針,研究可能被迫中斷;學術機構則沒有上司催促研究進度。雖然待在企業比較容易實現研究成果,但是也有人喜歡待在學術機構為教育付出。

台灣是鄉下地方,百廢待舉,學者缺乏研究與教學能力,只好向政府申請研究計畫、使喚學生做為廉價勞工,時機歹歹、加減賺。

學術經費

學者向科技部(前身是國科會)提報研究計畫,科技部審核通過之後,撥經費給參與人員。簡單來說,學者邀請學生合作,申請經費,雇用學生,進行研究,發表成果。

不幸的是,台灣學者上有政策下有對策。經費由教授或資深學長集中管理,訂立價位、重新分配、按月支付給實驗室的所有研究生。以病態為常態。

台灣學者甚至濫用經費。例如大專院校教授涉挪用國科會補助款弊案,約1500人涉案,規組害了了。台灣監獄也滿到關不下這麼多人。最後檢察官根據民意被迫放棄起訴,不了了之。

學術計畫

學術計畫有各式各樣的類型和用途。科學理論的計畫,使用者是學者和工程師。科技產品的計畫,使用者是一般民眾。

科技部學術補助獎勵查詢或者政府研究資訊系統網站可以找到各位學者的計畫名稱、經費多寡、成果報告。至於學者的個人網站則不一定會列出計畫清單。以下介紹兩位台大教授的計畫。

莊永裕團隊的學術計畫:

計畫名稱:用於中小學科技與美術創作教學之三維列印軟體開發與教學研究(3/3)
執行起迄:2016/11/01~2018/01/31
總核定金額:7,926,000元 

計畫成果可以在官方網站看到,提供了四支程式:搜尋、環景照片、建立、編輯。

林智仁團隊過去的幾件學術計畫:

計畫名稱:支撐向量法解多種類資料之分類(1/2)
執行起迄:2001/08/01~2002/07/31
總核定金額:477,300元 

計畫名稱:支撐向量法解多種類資料之分類(2/2)
執行起迄:2002/08/01~2003/07/31
總核定金額:597,300元 

計畫成果是一篇學術論文《A Comparison of Methods for Multi-class Support Vector Machines》,引用次數非常非常高!

一年不到60萬,月薪不到5萬,可以說是物美價廉!

計畫名稱:如何使Support Vector Machine成為主要的classification方法之一(1/3)
執行起迄:2003/08/01~2004/07/31
總核定金額:755,000元 

計畫名稱:如何使Support Vector Machine成為主要的classification方法之一(2/3)
執行起迄:2004/08/01~2005/07/31
總核定金額:723,800元 

計畫名稱:如何使Support Vector Machine成為主要的classification方法之一(3/3)
執行起迄:2005/08/01~2006/07/31
總核定金額:946,000元 

計畫成果是libsvm函式庫。建置官方網站,內容包含了使用介紹、程式下載、程式展示、使用手冊、論文名稱、……。

計畫名稱:SVM 在結構資料上的應用
執行起迄:2006/08/01~2009/12/31
總核定金額:3,598,000元

一年120萬,一月10萬,三人歷經三年,將原本的問題與演算法,再進行推廣,研發一個新功能:多屬性資料之間的分界線

大家常常認為學術經費太少。事實上科技部正在逐年增加預算:《5年50億 AI創新研究中心2018年1月1日啟動》。科技部提供五年五十億做研究,按照這個案例來計算,那麼台灣每年可以產出多少品質相同的論文呢?答案:也許還是一篇。

說到原因,除了怪政府怪老闆怪環境,大家應該自我反省一下自己平常都在幹嘛。如果整個台灣都沒人擅長做研究,政府撒再多錢也沒用。既知如此,那麼為什麼還要撒錢呢?輪到你想想看。

學術成果

學者將自己的學術計畫與學術成果,公布於個人網站。同時編寫成論文、投稿至期刊,請國際學者們檢驗認證。另外也要寫報告給金主,也就是科技部。

台灣學者的學術成果,通常只有一串論文清單,簡直慘不忍睹。方才介紹的莊永裕團隊、林智仁團隊,能夠釋出軟體,難能可貴。

國外學者的學術成果,除了論文以外,有時候也會一併附上實作程式碼,提供大家驗證與比較。例如Papers with Code網站彙整了機器學習領域的熱門論文清單。另外也有團隊特地為新論文製作介紹影片,例如Two Minute Papers

有些領域甚至有實際成品,像是機器人學。台灣沒有獨立的機器人研究機構,不過學校裡面有機器人實驗室。以台大為例:

林沛群團隊。擅長運動零組件設計和自動控制,提供了各種成品的影片。雖然實驗室名稱是仿生機器人,但是實際上卻跟仿生無關。

羅仁權團隊。擅長機械組裝和電機控制,才剛起步。八卦是競選中正大學校長,遭人影射找劉兆玄關說,告人毀謗結果敗訴。

傅立成團隊。沒有提供任何機器人的程式和影片,真的是有夠奇葩,都不知道怎麼說了。八卦是郭台銘找他建立機器人大軍。

王傑智團隊。製作出機器人視覺軟體和雙足行走軟體,甚至帶隊參加比賽,不過他最後跑去美國工作了。八卦是他們團隊進行機器人行進實驗,隔壁教授經常嫌機器太吵。

學術論文

學者發表過的期刊論文,一定會在個人網站公布清單,似乎是為了徵信。也有網站特地彙整清單,例如DBLP、Google Scholar、Microsoft Academic。大眾可以從中瞭解學者們的研究概況。

例如台大資工系專攻演算法的教授:

呂學一團隊。亮眼的投稿對象是SIAM計算期刊、SIAM離散數學期刊。發表時間斷斷續續。論文題目都是圖論領域,但是相當分散。因此可以推斷:該團隊自我要求甚高,卻沒有發展出特定專長。(CoRR是分享論文草稿的網站ArXiv,不是期刊。)

趙坤茂團隊。亮眼的投稿對象是生物資訊期刊,偶爾成功發表。論文題目幾乎都是字串比對演算法,可以應用到DNA序列比對。因此可以推斷:該團隊專精特定任務。

劉邦鋒團隊。投稿對象每隔一陣子就改變,非常奇葩。因此可以推斷:該團隊隨意所至信步而行,目標是順利畢業。

陳健輝團隊。沒有亮眼的投稿對象。早期曾經大量投稿至IEEE平行與分散式系統期刊,期刊品質逐年水漲船高,後來就沒有投稿了。近期投稿至IEEE系統期刊,情況類似。因此可以推斷:該團隊專挑新興刊物與冷門刊物,目標是順利畢業。

另外再看一下先前提到的林智仁團隊。亮眼的投稿對象是機器學習期刊、IEEE神經網路期刊,幾乎年年發表。論文題目幾乎都是支援向量機。因此可以推斷:該團隊專精特定任務,而且備受關注。

學術倫理

編寫論文、投稿期刊,儘管各種期刊各有規矩,但是基本規矩大體一致。請參考IEEE學會的學術發表倫理科技部對研究人員學術倫理規範臺灣學術倫理教育資源中心

比方說論文作者的順序。研究機構的論文,約定俗成的規矩是:貢獻程度由大到小排列作者姓名,機構主管排最後一位。學術機構的論文,約定俗成的規矩是:學生姓名在前,指導教授姓名在後。另外還要從中選出一位通訊作者。當主編與讀者想要瞭解論文細節,則洽詢通訊作者。

不過有些學者和學生,為了應付評鑑指標、通過畢業門檻,於是更動作者順序、插入作者名單。例如劉邦鋒團隊,劉邦鋒與吳真貞有時候會擔任第一作者,非常奇葩。

學術品質

期刊、論文、學者不知凡幾。哪些期刊比較專業呢?哪些論文比較熱門呢?哪些學者比較有為呢?

有人發明指標:impact factorcitation rateH-index

impact factor:期刊重要指數。
citation rate:論文引用次數。
H-index:學者品質指數。

有人收集資訊:CiteseerAMiner

Citeseer:計算機科學論文的引用情形統計。
AMiner:計算機科學學者的論文發表統計。

有人彙整名單:SCISSCI。兩者是Clarivate Analytics公司出版的黃頁。他們提供了查詢介面

SCI:科學類期刊名錄。
SSCI:社會類期刊名錄。

有人提供排名:JCRCORESCImagoCWTS

JCR:期刊排名。付費查詢。
CORE:會議排名、期刊排名。免費查詢。
SCImago:期刊排名。免費查詢。
CTWS:期刊排名。免費查詢。

JCR是美國Thomson Reuters公司每年出版的期刊調查報告,調查範圍是SCI和SSCI,統計各項指標,建立資料庫,需要付費查詢。所幸大學圖書館有購買,一般民眾都可以透過圖書館電腦來查詢。請參考《如何查詢與分析期刊被引用狀況?─以JCR為例》

學術評鑑

政府根據這些客觀指標,粗略區分會議期刊等級。每個國家都有自己的一套標準。例如澳洲研究協會ERA期刊列表中國科學院JCR期刊分区。台灣則是直接參考JCR。

學校依據這些客觀指標,招聘學者、升遷學者。請參考《國立臺灣大學電機資訊學院辦理教師升等審查細則》《國立臺灣大學電機資訊學院教師評鑑辦法》

台灣大專院校密度全世界最高,台灣本土學者密度應該也是全世界最高──用跤頭趺想嘛知,應該有許多不適任學者,成天只會應付指標。於是又有人嚷嚷指標不準啦。例如這篇文章:《大學評鑑:到底是「學術」?還是「神棍」?》

甚至有學者應付不了指標,鋌而走險:

例如陳震遠論文審稿造假案,陳震遠創造130個假教授身分;主編安排的審閱者,都是這些假教授,讓陳震遠自己審閱自己的論文,數量多達60篇。就連前教育部長蔣偉寧也掛名論文共同作者,大家一起分享榮耀。

例如台大醫學論文造假案,郭明良、張正琪團隊偽造實驗數據、誆稱研究成果。就連前台大校長楊絆池也掛名論文共同作者,大家一起分享榮耀。

學術生涯

想當學生,請參考《台灣人的普林斯頓生活手冊》一亩三分地飞跃计划

想當學者,我不知道應該參考什麼。關鍵字也許是Research Methodology

Academic Organization

學會

關於計算機科學,有三個主要學會:電機電子工程師學會IEEE、計算機協會ACM、工業與應用數學學會SIAM

還有許多小型學會,專精特定主題:人工智慧促進協會AAAI、計算語言學協會ACL、高等計算系統協會USENIX、……。

學者和工程師建立學會,工人建立工會。學者和工程師有免費雜誌軟體、學術研究獎金、論文資料庫使用折扣;工人有勞動節白米沙拉油、子女獎助學金、特約商店折價券之類的。就是這麼一回事囉。

學會的主要工作:舉行會議、發行期刊、出版書籍、制定標準、頒發獎項。後面章節將一一介紹。

會士

另外值得一提的是,學會每年都會薦舉一些會員成為會士,條件是創造了獨特的科學項目或技術項目。獲選會士可以想成是獲得甲級專業證照,是學會認證的㊕學者、㊕工程師。

台灣是鄉下地方,一旦成為會士,媒體就會放鞭炮。例如這則新聞:《資訊之光!台大教授郭大維、林智仁榮膺ACM Fellow》

郭大維團隊專攻嵌入式系統、記憶體存儲控制,可以更有效率地操控電子零件。

林智仁團隊專攻機器學習領域的演算法,例如支援向量機、矩陣分解,用於分析數據,找出隱含資訊。他們團隊善於改進演算法細節,並且公開實作程式,效率奇佳,目前應該還是世界最佳紀錄。

報導中其他人物:劉炯朗最近回去中國。姚期智一直都在中國。李德財專攻多邊形的演算法,例如多邊形交集、多邊形核心、中垂線圖形,到了現代卻成了冷知識,沒有實際用途。林一平之前跑去從政。陳銘憲最近競選台大校長失利。

台灣過去實施極權統治,凡事為所欲為,造就不少會士傳奇。例如李家同獲選原因是電腦工程教育,跟科學技術都無關;他最初被沈君山欽點為教授。又例如李嗣涔獲選原因是半導體異質結;他最後被陳履安指示研究超能力。

獎項

獎項非常非常多。比方說IEEE協會設立的獎章獎勵,ACM協會設立的獎勵。這些獎都是紀念性質、感謝性質,不是用來塑造偉人。發獎金是為了把錢交給能幹的人使用,創造更多價值。

IEEE John von Neumann Medal諾伊曼獎:IEEE學會設立這個獎項,頒給計算機科學或技術有傑出貢獻的人。諾伊曼是電腦架構的發明人之一。輸入、輸出、記憶體、計算、控制,這些基本概念就是他建構出來的。因而此獎以他為名。

這個獎項每年頒發給一位人士,由IBM公司贊助。簡介一下最近幾屆的得獎者。2017: Vapnik發明支援向量機:機器學習的重要演算法,找出兩類數據的中央分界線。2016: Papadimitriou結合了演算法和賽局理論,討論賽局的時間複雜度。2015: Gosling發明Java程式語言,地球上到處都在用。2014: Moler發明MATLAB程式語言,非常方便的數學工具,工學院的學生寫作業一定都用過。

ACM A.M. Turing Award圖靈獎:ACM學會設立這個獎項,頒給計算機領域有傑出貢獻的人。圖靈是第一位明確勾勒出「計算」這個概念的人,將之定義為「讀取磁帶、移動磁頭」,推演出一套數學理論。因而此獎以他為名。

這個獎項每年頒發給幾位人士,近年由Google公司贊助,獎金豐厚。簡介一下最近幾屆的得獎者。2016: Berners-Lee建立網際網路WWW。大家現在能上網找資訊,起源就是他。2015: Diffie和 Hellman發明建立共同秘密演算法:連線認證的第一步驟,保障資訊安全。2014: Stonebraker發明資料庫,地球上到處都在用。2013: Lamport發明分散式系統與同步系統。例如線上遊戲設立大量伺服器,同時處理大量玩家的操作。

台灣的學會

台灣也有學會,隨便什麼主題都可以創個學會。基本上這些學會都是台灣人自己玩開心的,在國際間並沒有影響力。

地方學會的主要功效,一方面是讓地方學者們有個名義可以辦理研討會,方便邀請外國人開講、方便請款做帳、方便紀錄歷史。一方面是讓大家能在自己家裡練練手,以後出去國外才不會軟腳。

不過也有一些阿沙不魯的學會,搞個證照考試啦、搞個產學合作核銷費用啦。例如臺灣國際計算機器程式競賽暨檢定學會,專門辦理證照考試。

在台灣,學會歸內政部管轄,基本上人人都可以創立學會。想要創立學會,請參考內政部相關法規。想要查詢登記立案的學會,請參考內政部合作及人民團體司籌備處網站。

Conference

計算機科學的領域有哪些

計算機科學可以劃分許多領域。例如ACM協會設立了各種領域的興趣小組。以下翻譯名單開頭幾項:

SIGACCESS - Special Interest Group on Accessibility and Computing
輔具和計算。利用電腦,替行為不便人士設計便利的輔助器材。
      例如盲人導航系統、電子義肢、助聽器、螢幕朗讀工具、……。

SIGACT - Special Interest Group on Algorithms & Computation Theory
演算法和計算理論。以嚴謹的數學公理系統,探討「計算」這件事情。
         發掘「計算」擁有哪些數學性質、可以解決哪些數學問題。

SIGAI - Special Interest Group on Artificial Intelligence
人工智慧。讓電腦也做得到人類所做得到的事情。例如聽說讀寫。
     因為電腦的本質是計算,所以人工智慧的核心是數學演算法。

SIGAPP - Special Interest Group on Applied Computing
應用計算。討論資料庫系統、分散式系統、機器人系統、網路系統、……。
     組裝電腦周邊設備、設計軟體,達成特定任務。

SIGARCH - Special Interest Group on Computer Architecture
電腦架構。中央處理器、記憶體、硬碟、網路、電源、……。
     研究如何連結電腦元件,提升電腦效能、增加電腦功能。

計算機科學的領域遠遠不只這些。更精確來說,學者想創造什麼領域,就創造什麼領域。學者們提出觀點、匯集知識、凝聚共識、統一用語,漸漸形塑成一個領域。關注越多,發展越快,劃分越細。

會議有哪些

請參考COMS的計算機科學會議列表、維基百科的計算機科學會議列表

計算機科學可以劃分許多領域,每個領域都有許多會議。學會舉辦、學者自辦、企業舉辦,總數多達上百個。

例如ACM協會、SIAM協會合辦的會議:離散數學演算法會議SODA。該年度同時安排了三個小型主題討論會:演算法工程與實驗討論會ALENEX、解析演算法與組合數學討論會ANALCO、簡潔演算法會議SOSA 。因為大家難得聚在一起,所以有些學者熱心籌畫小型主題討論會,確認現有的研究方向、開發新的研究領域。

同類的會議有哪些

演算法相關的頂級會議:計算理論會議STOC、計算機科學原理會議FOCS、離散數學演算法會議SODA

其餘會議就必須詢問圈子內的人了,例如演算法亮點會議HALG、簡潔演算法會議SOSA、計算幾何國際會議SoCG、計算機科學的圖論概念國際會議WG、計算機科學的數學原理國際會議MFCS、……。

當然也不是說頂級會議就絕對好,而是青菜蘿蔔各有所好、近朱者赤近墨者黑。大小會議都能存續,自有它的道理。

熱門的會議有哪些

離散數學演算法,太過理論抽象,無法投入實用,各位可能不喜歡。計算機科學有許多領域,離散數學演算法確實比較冷門。以下介紹幾個熱門會議:

學者們舉辦的神經資訊處理系統會議NeurIPS,因人工智慧深度學習而走紅。橫跨計算機科學、統計學、神經科學、認知科學、……,年年有數千篇投稿、數百人審稿。舉行會議的城市,旅館房間通通爆滿。當然也有一些八卦:學閥弟子容易獲選論文、獲選論文宛如隨機抽樣。總之來看一下上台報告是什麼樣子吧。

ACM協會舉辦的計算機繪圖會議SIGGRAPH,除了論文以外,還有動畫慶典、技術展覽、教學課程、廠商演講、頒獎活動,相當受業界人士歡迎。當然也有一些八卦:程式碼鮮少開源。總之來看一下動畫慶典的精彩剪輯吧。

會議的品質

會議的參與者,決定了會議的品質。同一個領域擁有許多類似會議,經過時間演變,大家各自心有所屬。像是SODA就自然形成了頂級會議,參與者要求論文品質,審查嚴格。

如何分辨會議好壞呢?這就要進入相關的圈子裡才能知道了。一般來說,由學會發起的、有企業贊助的、人數多的、論文引用次數高的,通常是比較好的會議。

也有網站提供排名:Conference RanksGuide2Research

會議的流程

一、學者們選定會議負責人、會議地點、論文審閱團隊。

二、會議負責人安排會議場所、彙整食宿資訊、培訓服務人員、尋找贊助廠商、訂立門票價格。最後號召大家投稿論文。

三、學者們互相審閱論文。如果論文有瑕疵有疑雲,就來回討論、反覆修正,直到適合刊登、或者拒絕刊登。

四、持續更新獲選論文名單。再從獲選論文當中,挑出幾篇重要論文,排入會議議程,屆時請作者親自上台講解oral、或者擺攤立牌講解poster。

五、學者向學校申請旅費補助,或者選擇自費。學者帶領學生前往會議現場,聽取作者報告。休息時刻,大家互相交誼;學者聊局勢,學生找門路。

六、有些會議還設計了特別獎項,甚至邀請廠商提供獎金和獎品,以激勵士氣、犒賞人才。例如最佳論文獎、最佳學生論文獎。

七、會議結束後,獲選論文交由學術出版社,出版紙本書籍、出版電子文件,大家必須付錢購買。台灣的大學圖書館,會向出版社購買知名會議論文集;一般民眾皆可免費查閱和下載,不必自掏腰包。

會議的論文

以下以SODA為例,簡介幾篇台灣留學生的獲選論文:

《Detecting Weakly Simple Polygons》。創造了新概念「弱的簡單多邊形」,並且給出演算法。隨後他們實驗室成員又降低了時間複雜度,刷新紀錄。超連結是論文作者網站。

《Fully Dynamic Connectivity in O(log n (log log n)²) Amortized Expected Time》。圖論的無向圖,可以隨時添加邊、刪除邊,立即判斷圖是否連通。給出了新的演算法,時間複雜度更低,刷新紀錄。超連結是指導教授網站。

Journal

期刊

期刊的外觀如同雜誌,早餐店桌上擺放的那種雜誌。稱做期刊是因為定期發售。

期刊的刊號單位是卷volume、期issue,概念類似於年、月。創刊號是第1卷第1期,每月(週)增加1期,每年(季)增加1卷並且重新計期。

期刊的價格

期刊分為訂閱subscription、公開open access。訂閱是大家必須付費購買。公開是大家可以免費閱讀,但是出版社把費用轉嫁給作者,作者必須支付高額費用。

期刊的價格由出版社定價,相當昂貴。紙本書籍一年份從3萬元到15萬元不等,電子檔案單獨一篇文章約300元到1500元不等。所幸大學圖書館會向各個出版社購買知名期刊。一般民眾皆可前往圖書館免費閱讀紙本書籍、下載電子檔案,不必自掏腰包。但是請大家注意到:錢來自政府的經費、來自大家的稅金。圖書館都會呼籲大家不要惡意大量下載,以免浪費社會資源。

有人認為期刊太過昂貴、知識應該共享,於是透過各種管道獲得電子檔案,再免費公開給大眾。各位可以閱讀這篇報導:《推倒貪婪期刊付費高牆!學術界揭竿而起》

期刊的用途

期刊的用途是刊登學者們發現的新知。過程大概是:

一、學者閱讀期刊,知道地球人的科學發展的最新進度。

二、學者自行判斷地球人仍然欠缺的知識,帶領學生進行研究。

三、學者將研究成果寫成一篇篇論文,花錢請期刊刊登。

四、上述行為不斷循環,豐富人類知識。

期刊的類型

期刊的類型有許多種,期刊名稱冠上不同詞彙:

journal:新知論述。內容涵蓋前情提要、本回內容、理論推導、數據分析、……。
transaction:等同journal。這個詞彙用於已成體系的領域。
letter:新知快報。簡單扼要介紹新發現。
magazine:科普雜誌。主編向學者邀稿,彙整近期新發現,寫成教學文件。
lecture note:教學筆記。針對特定術語,條理分明的學習講義。
conference proceeding:會議論文集。會議結束後將論文出版成冊。

期刊有哪些

請參考維基百科的計算機科學期刊列表

計算機科學可以劃分許多領域,每個領域都有許多期刊。期刊由學者發起,再由學會發行、學術出版社發行、學校發行、研究機構發行,總數多達幾百個。如同會議一般,學者想創造什麼期刊,就創造什麼期刊。

IEEE學會發行的期刊超過100種。ACM學會發行的期刊將近100種。Elsevier出版社發行的期刊約3000種。Springer出版社發行的期刊約1500種。臺灣大學出版中心發行的期刊約30種。

以下翻譯ACM期刊名單開頭幾項:

ACM Computing Surveys (CSUR)
ACM計算概觀。使用協會之名的期刊。
計算機科學總論。

Proceedings of the ACM on
Interactive, Mobile, Wearable and Ubiquitous (IMWUT) 
互動、行動、穿戴、普適會議論文集。
討論隨身攜帶裝置的會議,會議論文集結成期刊。

Journal of the ACM (JACM)
ACM期刊。使用協會之名的期刊。
計算機科學理論。

Journal of Data and Information Quality (JDIQ)
資料與資訊品質期刊。
討論收集資料、統計分析、創造資訊。

Journal of Experimental Algorithmics (JEA)
實驗演算法學期刊。
討論演算法實作和效能。

除了計算機科學領域的期刊,也有綜觀科學領域的期刊。科學領域三大期刊:自然Nature、科學Science、細胞Cell。這些期刊的檔次更高,偶爾才刊登計算機科學的論文。

另外還有一些特殊的期刊:美國國家科學院會議論文集PNAS,專門刊載院士的論文。線上影像處理期刊IPOL,收集影像處理演算法暨程式碼,程式可以在網頁裡面執行,立即觀看結果。

同類的期刊有哪些

演算法相關的頂級期刊:SIAM計算期刊SICOMP、SIAM離散數學期刊SIDMA

其餘期刊就必須詢問圈子內的人了,例如算法集Algorithmica、ACM演算法期刊TALG

期刊的品質

期刊的投稿者與審稿者,決定了期刊的品質。同一個領域擁有許多類似期刊,經過時間演變,大家各自心有所屬。像是SICOMP就自然形成了頂級期刊,審稿者要求論文品質,投稿者增進論文品質。

如何分辨期刊好壞呢?這就要進入相關的圈子裡才能知道了。一般來說,由學會發起的通常是比較好的期刊。

也有網站提供排名:Guide2Research

期刊的論文審閱流程

一、期刊創辦人找上學會或學術出版社,創辦新期刊。

二、期刊創辦人邀請學者們,共同組織一個編輯委員會editorial board。

三、作者投稿論文。主編收到論文。主編初步判斷論文主旨,指派適任委員做為審閱者。

四、審閱者審閱論文。若論文有瑕疵、有疑雲,則審閱者與作者來回討論、反覆修正,直到適合刊登、或者拒絕刊登。

審閱過程相當漫長,短則一季、長則數年。漫長的原因:

一、編輯委員都是兼職協助審閱,甚至無償協助審閱,做功德、做身體健康的。大家平時都有自己的工作要做,忙裡偷閒才有機會審閱論文。

二、論文內容是新知識,放眼地球只有作者一個人懂。審閱者必須花費大量心力學習相關知識,直至瞭若指掌,方能審閱論文。

三、作者往往只是單點突破──瞎子摸象、不識大體、一知半解、歪打正著。審閱者必須釐清作者思路,指導作者如何修改論文、補充論文,讓論文內容更具大局觀、更具公信力。

四、審閱者和作者是新手,自己也在摸索。作者經常重新做實驗、重新找方向。

五、論文主題比較冷門,大家漠不關心。審閱者優先處理其他更重要的論文。

期刊的論文審閱機制

期刊分為匿名審查、具名審查、公開審查。匿名審查:避免先入為主、避免廠商施壓;然而有經驗的審閱者,光從論文主旨和行文風格,就能知道是哪位學者的論文。具名審查:大家和樂融融、不玩心機,凡事簡簡單單就好。公開審查:當投稿高達上千篇的時候,只好透過公開平台請大家認養審閱工作,並且公開審閱意見以避免弊端。

期刊分為同行審查、大眾審查、自費出版。前面有品質保障,後面沒品質保障。

學術出版社持續統計分析各種做法的成效。大家可以在網路上搜尋到許多文章,這裡就不提了。

期刊的論文

以下以Nature為例,簡介幾篇知名論文:

《Mastering the game of Go with deep neural networks and tree search》。結合兩種演算法:深度神經網路、樹狀搜尋,讓電腦懂得下圍棋。這是歷史上首次擊敗人類圍棋冠軍的圍棋演算法,也被Science期刊選為年度十大科技突破。超連結是期刊網站。

《Robots that can adapt like animals》。讓蜘蛛造型的機器人練習快速走直線,自動找到最好的關節移動方式,就算機器人受傷也沒問題。超連結是作者網站。

Paper

期刊的論文、會議的論文

期刊的論文、會議的論文,兩者差不多。但由於期刊沒有投稿期限,作者可以慢慢釀慢慢熬,因而內容通常更加成熟完整。

一般來說,學者重視期刊甚於會議,但是計算機科學卻完全相反。計算機科學才剛萌芽,歷史不到一百年,新陳代謝速度快。新知如雨後春筍般出現,舊聞如過眼雲煙般消滅,導致計算機科學家重視新知。會議發布新知快、期刊發布新知慢,導致計算機科學家重視會議甚於期刊。

甚至有人認為兩者都太慢,用arXiv網站分享論文草稿。

如何發表論文

各個會議、各個期刊規定都不同,請參考IEEE作者中心

最快的方式是詢問學者。學術單位的碩士學程、博士學程,學者會教導學生寫作論文、發表論文。考研究所、付學費,就能學到了。

如何取得論文

學者與學生的個人網站,多半會提供論文PDF電子檔案。然而有些期刊向作者取得論文版權,並且禁止作者公開論文電子檔。於是作者轉而提供論文草稿,通常只有排版略為不同。

學術出版社網站的期刊頁面,也有論文PDF電子檔案,但是必須付費下載。可以透過大學圖書館的公用電腦。例如Algorithmica的主畫面就是期刊該期論文列表。

學術出版社建置論文資料庫,網羅知名期刊。大學圖書館直接向該學術出版社購買資料庫使用權,民眾不必親自找上各大學會、各大學術出版社。各位可以參考台大圖書館已購買的資料庫清單

學會和政府單位建置論文索引資料庫,大眾可以免費查詢論文相關訊息。例如IEEE Xplore Digital LibraryACM Digital LibraryNCBI PubMed

如果已經知道論文名稱,那麼Google一下即可。另外在Google ScholarGoogle Book運氣好可找到論文全文。

論文的內容

論文內容包含這些項目:摘要、前人工作彙整、自己創新之處、理論推導、數據分析、未來發展、參考文獻。內容、格式、排版都有嚴格規定,會議與期刊的官方網站可以查到。

例如方才提到的《Detecting Weakly Simple Polygons》

一、論文題目、作者、作者所屬機構、日期。

論文題目必須一言中的,好比新聞報導的標題。論文題目有長有短,長的專注小細節,短的關注大方向。

頁尾下方的星號與小字,是這篇論文所屬的研究計畫來源:美國科學基金會NSF的研究計畫CCF-0915519。也就是說,美國政府提供研究經費。

二、摘要Abstract:講重點。

經驗老到的學者只看這一段。好比我們看報紙只看頭版。

三、介紹Introduction:關於論文題目的來龍去脈。

說明論文內容的重要概念fork和spurs。先講前人的工作與結果,再講自己的工作與結果。最後介紹各個章節主旨。

四、背景Background:介紹背景知識、先備知識。

仿照數學課本,依序定義各個專有名詞。第一節定義了path路徑、closed curve封閉曲線、polygon多邊形、polygonal chain多邊形鏈。第二節定義了Fréchet distance兩條封閉曲線之間的距離。第三節定義了planar graph平面圖。第四節、第五節定義了弱屬性weak,呼應論文題目,內容包含了弱封閉曲線、弱多邊形。

論文不是課本,論文篇幅有限。作者只講重點,作者不會舉例說明。如果你沒有學過計算幾何、圖論,那麼這裡就會看不懂;如果你學過,那麼這裡只是前情提要,輕輕鬆鬆就能讀完。

六、進入正題。介紹弱多邊形的判定演算法,分成三種情況討論:沒有spurs與forks、只有fork、有spurs。

七、討論快速的實作方式,分析時間複雜度。

八、參考文獻Reference:有使用到的其他論文。

論文內容之中,凡是別人率先發明的,都必須找到原始論文,條列成清單,並且在句子後方標記編號。目的是讓讀者追溯來龍去脈。

九、附錄Appendix:補充說明。

論文篇幅有限。作者擔心論文太過簡略,讀者無法理解,於是仔細釐清細節、推導數學公式。

如何閱讀論文

論文內容是新知,往往缺乏實際範例,難以類比到其他事物。只能隨著人生經驗增長,逐漸瞭解全貌。對於學生而言,一篇論文通常需要花上數月數年才能通盤理解。

新知由論文作者提出,只有作者本人知曉來龍去脈前因後果。如果作者沒有特地說明,那麼讀者只能靠感覺去猜了。大多數時候,我們閱讀論文,只不過是強記硬背,並不清楚其中思路。

很不幸的,論文不會描述思路,期刊編輯也不允許作者描述思路──畢竟思路不是兩三句話能夠講完,其篇幅可達原文數倍。畢竟思路不是放諸四海皆準,往往只是瞎子摸象般的個人偏見。

比方說AlphaGo為何將盤面變成分數呢?為何需要使用神經網路呢?其實背後都經過沙盤推演,但是論文裡面沒有提到。

棋手評估勝算,有一種做法是將盤面切割成好幾個區塊,衡量局部優劣,對各個區域進行取捨,然後決定攻擊何處。看穿各處輕重厚薄、詰棋陷阱,整合局部優劣成為全局優劣,勝者往往只是比對手算得更多更準。程式員所需要做的,就是模擬這個觀念!乍看之下,這個觀念是當時的搜尋樹剪枝演算法所不能及的,八九不離十足以增強電腦棋力。具備此特性的數學計算模型,在當時就只有動態規劃、神經網路,值得一試。而以上只不過是使用神經網路的理由之一。

言歸正傳。既然無法得知作者思路,那麼只好自創思路。大量學習相關知識,建立自己的知識架構、知識目錄。閱讀論文時,以自己的知識架構為主,重新詮釋論文,擴充自己的知識架構。不需要相信接受作者的章節編排、段落偏好。

如此一來,看論文如同看報紙,只看自己缺少的、自己想要的。甚至能夠預先猜到作者到底想講什麼──當大家都在大量學習相關知識,大家都抵達了學術前沿,大家的知識架構都差不多,這種時候,自己想要的與作者想講的往往一致。

人腦無法同時思考太多項目。人腦的快取記憶體有限,無法載入整個知識架構,更不用說擴充知識架構了。一種解決方式是筆記,諸如心智圖、5W1H分析法、部落格教學文章,將知識架構謄寫到紙上,幫助自己釐清知識架構。另一種解決方式是實作,例如GitHub,藉由程式語言的邏輯、程序、模組,幫助自己釐清知識架構。

Book

書籍

會議論文、期刊論文,內容零散不全,學習效率低下。熱心學者為了節省大家的時間,於是廣讀論文、彙整新知、出版成冊。

書籍的類型

書籍的類型有許多種。大家平常接觸到的是教科書、教學手冊。

paper collection:文選。熱心學者挑選數篇性質類似的論文,集結成冊,形塑新主題。例如《Algorithms and Applications》

這類書籍通常很薄。主要功能:方便學者探索新知。

essay collection:合輯。邀請大量學者,每人貢獻一篇文章,集結成冊。例如《Unsupervised Learning Algorithms》

這類書籍通常很亂。主要功能:方便學者理解新知。

reference work:大全。針對特定的大型領域,邀請資深學者草擬目錄,邀請各路學者分派章節。書籍內容是理論概述、文獻清單。例如《Algorithms and Theory of Computation Handbook》《Encyclopedia of Algorithms》

這類書籍比磚頭還厚。主要功能:一、靈感忽然來了,想要勘查尚不熟悉的主題。二、新手學者用來綜覽領域概況。

monograph:專著。針對特定領域,學有所成的學者集大成,內容連貫,思路清晰,自成一格。例如《The Art of Computer Programming》《Algorithms: Design Techniques and Analysis》

這類書籍的主要功能:一、從其他人的視角重新瞭解一件事,革除舊思想,激發新思想。二、新手學者用來綜覽領域基礎。

textbook:教科書。所有知識由淺到深排列,所有理論由簡到繁排列,劃分章節、拿捏進度。大家可以按照順序閱讀,不必自己串聯知識。大家可以維持閱讀步調,不用自己衡量難易。教科書多了圖解、範例、習題,甚至教學投影片。大學教授經常以教科書當作課程教材。例如《Algorithms》《Introduction to Algorithms》

這類書籍的主要功能:一、讓學生快速瞭解特定領域。二、建立完善周全的知識架構,讓學者之間有了討論基準、難易標準。

順帶一提,台灣的資料結構課程偏好《Fundamentals of Data Structures in C》。為什麼採用這種冷門書籍呢?我聽過一種未經證實的說法:李家同團隊有人跟作者本人熟識,而李家同的學生遍布全台大學:台大陳健輝與趙坤茂、台科大王有禮、清大唐傳義與王炳豐、交大曾憲雄與譚建民、中央江振瑞、中正吳邦一、成大謝孫源與戴顯權、中山楊昌彪。因而此書沿用至今。大家自己保重。

tutorial:教學手冊。專門寫給外行人的書籍。書名常見贅字。例如《Grokking Algorithms》《Algorithms in a Nutshell》

這類書籍的主要功能:一、讓工程師快速瞭解特定領域,將所學所得立即用於工作上面。二、引起一般民眾的興趣,進而成為學者或工程師。

manual:索引手冊。彙整專業術語,方便查閱,宛如字典。例如《The Algorithm Design Manual》

這類書籍的主要功能:工程師做為工具書,輔助工作。

storybook:故事書。專門寫給外行人的書籍,不涉及專業知識,宛如新聞評論。例如《Algorithms Unlocked》

這類書籍的主要功能:讓大眾快速瞭解時事變化。

光是文字描述,各位可能還是不明白各種類型書籍之間的實際差異。有空去書店或圖書館翻翻這些書吧。

書籍的通路

各類書籍都有專門出版社。文選合輯大全專著:SpringerRoutledge CRC Press。教科書:PearsonMcGraw-Hill Education。教學手冊:O'Reilly,由於太出名甚至有封面產生器搞笑圖片

專門販售書籍的網站,例如Amazon。專門收集書評的網站,例如豆瓣读书

專門提供免費教科書的網站,例如Open Textbook Library。專門提供免費中學課本的網站,例如OpenStax。專門推廣教科書寫作的協會,例如教科書與學術寫作協會TAA

台灣有計算機科學書店,例如天瓏書局。台灣有代理進口科學教育書籍的公司,例如文景書局。台灣有翻譯科學教育書籍的出版社,例如高立圖書

台灣有大學圖書館館藏查詢的網站,例如全國圖書書目資訊網

Course

課程

書籍內容包羅萬象,學習效率低下。熱心學者為了節省大家的時間,於是提取重點、設計教材、開設課程。學生可以透過視覺聽覺、表情動作、交談對答,作業考試,增加學習效率。

計算機科學有個十分迷人的特色:很多學者在個人網站上面公開課程資料。課程大綱、課程投影片、課程參考資料、課程作業、課程教學程式、課程影片、課程部落格,不一而足。大家可以透過網路自主學習,在家也能上大學。

課程的類型

課程的類型有許多種。大部分課程都是lecture,大家來到課堂聽講抄筆記。

lecture:授課。學者以各種方式傳送知識給學生。
seminar:講座。演講與討論。
talk:演講。學者以上台口述方式傳送知識給學生。
discuss:討論。大家互相傳送知識。
laboratory:實驗。學生從做中學。

課程有哪些

Teach Yourself Computer Science網站初步介紹了計算機科學的基礎科目。

計算機的學問,分成計算機工程(Computer Engineering)與計算機科學(Computer Science)兩大系列。

計算機工程:製造電腦、操控電腦的學問。

製造電腦,屬於電機工程系的專業;操控電腦,屬於計算機科學系的專業。在國外,有些學校乾脆把電機工程系和計算機科學系合在一起,讓整件事情完美圓滿。此處僅僅介紹了計算機科學系的課程,大家可以再自行尋找電機工程系的課程。

電子學:討論電流與電子元件的行為。
數位邏輯:操控電流與電子元件的行為,並且賦予意義。
微處理機:討論中央處理器。等登等登。
計算機組織與結構:討論電腦如何組成、如何運作,討論電腦的零件。
組合語言:操控電腦的指令。
程式設計:程式語言也是操控電腦的指令,設計成稍微貼近人類思惟。通常學C或C++。
編譯器:如何把程式碼變成操控電腦的指令。
系統程式:發揮電腦零件功能的程式,讓電腦執行特定作業。
作業系統:人與電腦的介面,讓使用者便於執行系統程式。
資料庫:電腦結合儲存設備,用來記錄。
計算機網路:電腦結合網路設備,用來通訊。
分散式系統:電腦結合網路設備、儲存設備,用來分工合作。
嵌入式系統:電腦結合其他機械,有著各種功能。
程式語言:如何設計程式語言,方便人類撰寫、方便電腦作業。
軟體工程:程式員很多、程式碼很長的情況,要如何應對。
資訊安全:人類如何利用電腦作惡,以及如何防範。
人機互動:人類如何操控電腦。

計算機科學:運用電腦實施計算、達成任務的學問。

計算機只會算數學,因此這些課程皆是數學。另一方面,計算機工程也需要計算機科學的知識作為輔助。

資料結構:電腦實施計算時、儲存資料的方法。
演算法:電腦計算的方法。
平行處理:許多台電腦一起計算的方法。
自動機理論:討論電腦的計算模式,用數學表達。
計算理論:討論電腦的計算能力,用數學表達。
數值方法:用電腦計算數學方程式。
計算幾何:用電腦計算數學幾何。
字串學:用電腦處理文字串列。著重比對。
數位訊號處理:用電腦處理數字串列。著重轉化。
資訊理論:數據的數學知識。
編碼理論:壓縮數據的數學知識。用到資訊理論。
密碼學:掩飾數據的數學知識。
模式識別:比對數據的數學知識。
機器學習:分析數據的數學知識。用到模式識別。
人工智慧:搜尋數據的數學知識。用到機器學習。

應用:計算機科學與計算機工程的實際應用。

通常在大學四年級、研究所開課。通常只介紹皮毛。若要有所小成,就必須加入相對應的實驗室,認真做研究。

資料探勘:用數學解析、轉化數值資料。
自然語言處理:用數學解析、轉化文字資料。
語音處理:用數學解析、轉化聲音資料。
影像處理:用數學解析、轉化圖片資料、影片資料。
計算機圖學:用數學製造圖片、影片。
計算機視覺:用數學辨識圖片、影片。
幾何處理:用數學解析、轉化物體資料。
機器人學:上述所有東西加上機械設備。計算機工程與計算機科學集大成。
計算物理:用電腦解決物理問題。
計算化學:用電腦解決化學問題。
生物資訊:用電腦解決生物學、醫學問題。

數學:計算機科學經常使用數學。

通常在大學一年級、二年級開課。雖然是數學課程,但是計算機科學系與數學系的學習方向有著極大差異,內容不盡相同。計算機科學系是實務導向,不太需要推導定理,只要懂得原理、懂得運用就可以了,內容反而比數學系有趣。

計算機科學系的數學課程:線性代數、機率論、離散數學。
理工科系的共同數學課程:微積分、工程數學。
其他數學課程:統計學、隨機過程、賽局理論、圖論、組合最佳化、數論、……。

國外的計算機科學系課程

請大家看看UIUCCornell這兩間大學的課程總表。這兩間大學樂於分享教材,絕大多數課程都公開了課程講義。將課名代號、課名全名,放到Google搜尋,就能找到課程講義。有時候則是要搜尋開課教授的姓名,從教授的個人網頁找到課程網站連結。

也有網友熱心整理清單。

https://github.com/ossu/computer-science

https://github.com/prakhar1989/awesome-courses

除了學校的正規課程,也有網路的影音課程。諸如CourseraUdacityedX,都有計算機科學的課程。

如果還不過癮,那麼還可以找計算機科學機構排名QS世界大學排名,找前100大計算機科學系,再用Google搜尋課程。

世界上還有許多比台清交更優秀的學校。打開心胸放眼全世界,不要自我設限,相信大家會有更多的收穫。

台灣的資訊工程系課程

請大家看看台灣大學台灣交通大學的課程地圖。

也有網友熱心整理清單。

https://shaform.com/csdream/

https://hackmd.io/s/ByOm-sFueM

台灣也有網路的影音課程。例如中華開放教育平台

國內外課程架構差異

例如台灣大學NTU的資訊工程系大學部課程 。基本上就是一幅迷宮圖,先修完前面的課程,才能前往後面的關卡。

例如台灣交通大學NCTU的資訊工程系學士班課程。課程劃分許多類別:校定必修、基礎科學、必修、專業選修、學程選修、自由選修。

下面是必修課程。即是基礎課程,資工系學生應有的基本素養。包含了程式設計、數學(線代離散機率)、工程(數電計組OS)、科學(資結演算法)、實驗(專題)、聽演講(研討)。

線性代數          Linear Algebra
計算機概論與程式設計    Intro. to Computers and Programming
資料結構與物件導向程式設計 Data Structures and Object-oriented Programming
離散數學          Discrete Mathematics
數位電路設計        Digital Circuit Design
機率            Probability
演算法概論         Intro. to Algorithms
基礎程式設計        Basic Programming
計算機組織         Computer Organization
作業系統概論        Intro. to Operating Systems
資訊工程研討        Computer Science Seminars
資訊工程專題(一)(二)    Computer Science and Engineering Projects (I)(II)

下面是專業選修學程。總共七套學程,至少參與其中一套學程。種類相當豐富,脈絡相當清楚。

一、人工智慧與數據科學   AI and Data Science
 資料庫系統概論      Intro. to Database Systems
 數值方法         Numerical Methods
 機器學習概論       Intro. to Machine Learning
 人工智慧概論與實作    Artificial Intelligence: Introduction and Implementation

二、資訊安全        Computer Security
 計算機網路概論      Intro. to Computer Networks
 密碼學概論        Intro. to Cryptography
 網路程式設計概論     Intro. to Network Programming
 電腦安全概論與實作    Computer Security: Introduction and Practice

三、多媒體工程       Multimedia Engineering
 數值方法         Numerical Methods
 計算機圖學概論      Intro. to Computer Graphics
 影像處理概論       Intro. to Image Processing
 互動多媒體系統概論與實作 Interactive Multimedia Systems: Introduction and Practice

四、網路工程        Network Engineering
 計算機網路概論      Intro. to Computer Networks
 通訊原理與無線網路    Principles of Communications and Wireless Networks
 網路程式設計概論     Intro. to Network Programming
 計算機網路實驗      Computer Networking Lab

五、系統軟體        System Software
 編譯器設計概論      Intro. to Compiler Design
 計算機系統管理      Computer System Administration
 高等UNIX程式設計     Advanced Programming in the UNIX Environment
 作業系統設計與實作    Operating System Design and Implementation

六、軟硬體整合       Software and Hardware Integration
 數位電路實驗       Digital Circuit Lab.
 編譯器設計概論      Intro. to Compiler Design
 微處理機系統原理與實作  Microprocessor Systems: Principles and Implementation
 嵌入式系統設計概論與實作 Intro. to Embedded Systems Design and Implementation

七、計算理論        Theory of Computation
 正規語言概論       Intro. to Formal Languages
 競技程式設計(一)     Competitive Programming (I)
 圖形理論         Graph Theory
 或 基礎圖論       / Fundamental Graph Theory
 難解計算問題專論     Selected Topics in Intractable Problems
 或 隨機演算法      / Randomized Algorithms

例如麻省理工學院MIT的計算機科學與工程學士學位,課程劃分許多階段:介紹、基礎、前沿、進階、交流。每個階段的課程幾乎是固定的,只有少數課程可以二選一。值得一提的是,進階階段有巨量課程可供選擇。

例如卡內基美隆大學CMU的計算機科學學士學位,課程劃分許多領域:計算機科學(必修)、交流課程、演算法與複雜度、邏輯與語言、軟體系統、應用、計算機科學(選修)、數學與機率、科學與工程。每個領域都必須修習一定數量的課程。

下面是計算機科學必修課程。附註是台灣的對應課程。

15-128: Freshman Immigration Course
        前瞻資訊科技(台大才有開課)
15-122: Principles of Imperative Computation
        資料結構
15-150: Principles of Functional Programming
        函式程式設計(台灣沒有開課)
15-151: Mathematical Foundations for Computer Science
        離散數學
15-210: Parallel and Sequential Data Structures and Algorithms
        演算法(一)
15-213: Introduction to Computer Systems
        計算機系統概論
15-251: Great Ideas in Theoretical Computer Science
        理論計算機科學(台灣沒有開課)
15-451: Algorithm Design and Analysis
        演算法(二)

這些基礎必修課程,教材每年繼承,助教數十位,薪水達到業界工讀水平。課程大綱比台灣單純,課程名稱比台灣新穎。

台灣人人必修的程式設計、計算機概論,CMU沒有列為必修課程。原因我不清楚。也許這兩門課被認為是新生應有的基本素養,有經驗的新生不必浪費時間重學一遍。CMU另外開設15-110和15-112,協助無經驗的新生熟悉程式語言。

CMU開設的15-213和15-251是獨門配方,課程內容迥異於其他學校的同名課程。原因我不清楚。也許這兩門課被認為是畢業生應有的基本素養,然而他們畢業生戰力太弱,教授只好特地加強訓練,於是這兩門課就變成CMU的得意技了。

台灣的聽演講課程,國外並沒有。原因我不清楚。也許是極權國家喜歡讓學生聆聽精神喊話。

國外的研究生涯課程,台灣並沒有。原因我不清楚。也許是極權國家避免讓學生撼動學閥地位。

至於進階選修課程,就不討論了。台灣的進階選修課程,上不了國際檯面。光是公開課程講義,就是個問題了。

教學與研究的差異

教學和研究的本質不太一樣。教學廣而清晰,研究深而模糊。教學需要海納百川、一語中的,研究需要海底撈針、千頭萬緒。教學給出全域地圖,研究給出探索方向。兩者相互對立卻又相輔相成。

於是乎,擅長教學、擅長研究不見得同時成立。比方說先前提到的林智仁教授,研究相當突出,教學普普通通。例如他的數值方法課程,內容偏門且零散,缺乏直觀與洞見。各位可以對照一下各種數值方法教科書的目錄、各種數值方法課程的大綱。

台灣實施媒體管制。企業家為達商業目的,經常請媒體造神。比方說台灣機器人第一把手機器學習之神。建議大家不要迷信神話,多方閱讀教科書、多方瀏覽課程網站,才是正途。

Meeting

聚會Meeting

熱情學者經常舉辦聚會,邀請各路學者齊聚一堂討論議題、策畫活動。聚會好比是早起會、同好會。例如算法原理與資訊科技同好會IGAFIT在文章當中提及了離散數學演算法學者的聚會場所:

研討會Seminar

學者與學生經常舉辦研討會,邀請熟人齊聚一堂討論和解決科學問題。有人製作了研討會消息布告欄網站researchseminars.org

工作坊Workshop

熱心學者定期舉辦工作坊,邀請各路學者齊聚一堂,解說自己的研究主題。學者們彙整近年科學新知,融入獨到見解,濃縮成精華,讓其他學者迅速獲得新知識、新觀點。例如加州大學洛杉磯分校UCLA的純粹暨應用數學所IPAM舉辦了許多工作坊

台灣也有熱心學者舉辦工作坊。例如台灣理論日、擴增智慧與互動工作坊AII

課程Course

熱心學者舉辦短期課程,邀請學者上台授課、邀請學生出席聽課,講解近期的、新穎的科學主題。有些收費,有些免費。主辦學者習慣將課程投影片公布在官方網站,讓大家自由下載、自主學習。例如幾何處理會議的暑期學校SGP Summer School、丹麥技術大學與哥本哈根大學的暑期學校

知名會議也經常附帶課程活動,授課學者習慣將課程投影片公布在個人網站。例如計算機繪圖會議SIGGRAPH的課程活動

台灣也有熱心學者舉辦課程活動。例如國家理論科學研究中心NTCS科學計畫

Project

專案(計畫)

太多太多了。隨便介紹幾個專案好了。

Keenan Crane團隊。他們團隊擅長介紹專案,相當厲害。該團隊的專長是微分幾何──抽象晦澀的數學,於是想方設法將之視覺化,以便介紹研究成果。每個專案配合一張研究成果圖片,圖片下面是論文PDF檔案超連結、專案頁面超連結。在《The Heat Method for Distance Computation》的專案頁面當中,首先是論文標題、論文簡介、一張醒目的圖片。研究成果繪製成圖片、錄製成影片,撰寫圖文說明。提供多種語言的實作程式碼,方便學者重新實驗。附上論文引用BibTeX,方便學者製作參考文獻清單。

OpenCat。個人發起的專案,製作機械貓。提供了影片、照片、零組件清單。引起了IEEE Spectrum雜誌報導。

密西根大學機器人系。專案非常多:行車控制、人機互動、生產製造、復健輔具、合作分工、自動駕駛。以圖片影片介紹研究方向,列上學者清單。

卡內基美隆大學的機器人研究機構。分類非常細:應用場域、模擬工具、人機互動、行為控制、機械結構、基礎理論、感知設備。提供研究人員清單、研究成果照片、新聞清單。

各位瞭解國外學術機構的研究專案之後,相信各位可以明白台灣學術機構的研究專案幾乎都是詐騙,就連台清交也不例外。台灣學生不明所以,前仆後繼參與其中,助長風氣。

專案贊助

從事專案的條件,通常是時間和金錢。時間人人與生俱來,金錢則仰賴投胎運氣。政府與基金會無償提供經費,鼓勵大眾發起專案。

例如Simons基金會的科學研究補助

專案展示

從事專案的目的,通常是服務社會大眾、欲為人知。企業成立網路討論區,鼓勵大眾發表專案。

例如國家儀器公司的學生專案分享討論區

台灣也有舉辦展示活動,台灣每年舉辦學術成果發表會,通常依附在學會舉辦的學術會議,相關消息請見科技部的工程科技推廣平台

專案獎項

專案往往無法顯露價值,只好藉由頒獎彰顯價值,宛如打廣告。

學會、公司、政府、個人都會設立獎項,但是以學會設立的獎項較為可信。經過專家鑑價,價格較為可信。公司、政府、個人設立的獎項,則是贊助成分居多,順便宣傳自身單位。例如Google設立的研究獎項

台灣也有設立獎項,然而絕大部分都是十大傑出青年的翻版,用來體現黨的意志。例如針對學生的旺宏科學獎、針對學者的東元獎研究傑出獎年輕學者創新獎、針對民眾的傑出資訊人才獎、針對重要貢獻的唐獎。計算機科學則有資訊學會的李國鼎系列獎項、電腦學會的傑出系列獎項

Challenge

學術挑戰

學術單位、政府單位、大公司長期舉辦學術挑戰,鼓勵大家突破學術前沿、比較各種做法孰優孰劣、掌握地球人的科技進度。

例如Cornell大學的自然語言處理團隊,舉辦了自然語言之視覺推理NLVR。Sheffield大學的語音暨聽覺團隊,舉辦了語音分離與辨識挑戰CHiME。美國國家標準技術局NIST,舉辦了臉部辨識供應商測驗FRVT

這類競賽激發許多新理論新方法,促進學派發展。人工智慧深度學習的崛起,即是源自ImageNet大規模視覺辨識挑戰ILSVRC

台灣政府為了推動科技發展,近年也開始舉辦學術挑戰。例如科技部的科技大擂台、教育部的全國大專校院人工智慧競賽、經濟部商業司的商品影像AI辨識競賽、勞動部的百萬創客擂台競賽。成效目前還不清楚,但是總比直接發錢給學界大老來的好吧。

方法評比

state-of-the-art這個詞彙尚無正式中文翻譯。形容詞。意義是「針對特定問題,當世所有方法之中,最好的方法」。通常由科學家寫成學術論文,發表於期刊與會議。

benchmark這個詞彙尚無正式中文翻譯。名詞。意義是「針對特定問題,當世所有方法之中,選定一些主流方法,再選定一些特殊指標,評比優劣」,例如正確率、執行時間。通常由工程師寫成技術報告,發表於個人網站。

許多論文作者,為了證明自己的方法是state-of-the-art,也會做benchmark。論文作者進行各種實測,彙整數據,繪製圖表,放入論文,供大家參考。

例如Papers with Code網站彙整了圖片分類演算法排名,針對ImageNet圖片資料庫。例如通用語言理解評分GLUE彙整了各家公司的演算法排名。

台灣尚未發展至此。畢竟連中文翻譯都尚未確定。

Communication

通俗科學、科學傳播

popular science:將科學弄得淺顯易懂,讓沒有受過專業訓練的民眾也能夠欣賞科學。

中譯「科學普及」,簡稱「科普」,先後順序不對,意義也不對,不知道是不是故意的。

science communication:民眾組織團體、建立公司,傳播科學消息,讓民眾瞭解時事變化。

中譯「科技傳播」。台灣人經常將science譯做科技,將technology也譯做科技,不知道是不是故意的。

政府長期進行科學傳播。廣義來說,科學的發展決定了文明的興盛,文明的興盛決定了人類的未來。狹義來說,科學的發展決定了社會的繁榮,社會的繁榮決定了國家的興亡。無論是為了世界全體的進步、或者是為了國家之間的競爭,政府都希望民眾瞭解科學。

新聞

世界上有專門網羅科學新知和技術新知的新聞社和雜誌社。

台灣實施愚民政策。台灣媒體經常混淆科學、技術、產業這三個詞彙的意義。例如科技新報,雖然取名科技,但是不報導科學新聞和技術新聞,而是報導產業新聞。大家多保重。

雜誌

世界上有專門介紹科學新知的雜誌社。

台灣則是代理中文版。大學圖書館通常可以找到這些雜誌。

台灣實施愚民政策。例如科學人雜誌中文版的編輯團隊,充斥濃郁的黨國色彩。大家多保重。

影集

世界上有專門介紹科學新知的電視公司和電視頻道,例如探索傳播公司的探索頻道,國家地理公司的國家地理頻道。他們也出版雜誌。

世界上也有許多導演拍攝科學紀錄片,然後在電視頻道播出。英國BBC頻道播出的紀錄片最為知名。

台灣則是代理中文版。大學圖書館通常可以找到這些影集。

台灣實施愚民政策。台灣政府委請國家地理公司拍攝節目,以宣揚國威。Youtube公開影片,數量最多的是陸戰隊和飛官,其次是國家建設,而不是風土民情、生活文化、自然景觀。大家多保重。

講座

科學家公開演講,向大眾介紹科學。

臺灣大學科學教育發展中心每年挑選特定主題,邀請相關科學家,舉辦系列講座。

台灣實施愚民政策。例如TEDxTaipei的創辦人後來當選立法委員,促進人工智慧和區塊鏈發展。大家多保重。

視頻

說書人錄製影片,談論科學。

這是網路找到的推薦清單推薦清單

台灣實施愚民政策。例如臺灣吧是合勤基金會的合作對象,合勤科技曾是中央投資公司的投資對象。大家多保重。

八卦

鄉民撰文投稿,談論科學。

台灣的科學傳播活動

教育部、科技部成立相關組織。熱心學者舉辦活動、創辦雜誌。

外交部、科技部與前述知名電視公司合作,拍攝台灣專輯。

導演與工作室,拍攝科普影集。