演算法筆記 - Computer Science

Computer Science

計算機科學

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

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

計算機科學領域地圖

Research Institute

研究機構

國家成立、私人成立、公司附屬、公司與學術單位合作。以下列出一些國際知名的、涵蓋了計算機科學的研究機構。

各國各地風情不同,我無法一一介紹。例如日本工業才是主菜、計算機科學只是佐料;德國大型研究機構不只一間。多數研究機構都有台灣人在求學和工作;如果各位想要深入瞭解這些研究機構,最好的方式是努力找到他們。

研究機構的網站裡面,都會詳細列出人員、計畫、論文、近期活動,甚至提供展示影片、程式、部落格文章、教材。網站上面提供的資訊,就是科技前沿!第一手資料!涵蓋範圍遠比學校課程、媒體報導多很多,不妨都看看,擴展視野。

下面是IBM的其中一個研究專案,位於輔具(Accessibility)的分類下面。順帶一提台灣也有公司在做類似的事情,叫做太和光

上面這些都是知名研究機構。地球上還有許多形形色色的小型研究機構,不容易發現,通常是進入了相關領域的圈子裡面才會聽到。比方說下面是德國人工智慧研究機構正在研發的火星探勘機器人。

所謂的研究機構,簡單來說,就是政府和公司錢太多,浪費錢去養一些能人異士,放任他們做一些天馬行空研究。不是每一項研究都符合現實,大多數的研究都是粗制濫造的玩具、束之高閣的理論;然而現實生活的科技,總是來自於這些研究。研發這種事情喔,一方面是社會責任,一方面是永續經營,做功德兼做大事業。

所謂的研究機構,亦是進階的學習場所。四則運算6-12歲,方程式13-18歲,微積分19-23歲,本站內容20-25歲,研究機構的研究主題則是30歲以上。當然啦,一般人只需要12歲以下的數學知識,就足夠應付日常生活了。並不是所有人都得學這麼深,不過也有人努力學得很深,應付社會國家、應付地球宇宙。

台灣的研究機構

在台灣,涵蓋了計算機科學的研究機構只有幾間。台灣小小的,本來就沒有必要很多間。

也許是因為沒有產出,網站裡面沒有研究成果介紹。

研究生涯規劃

如果你是有志之士,那麼前往國外實驗室做研究,比較容易找到志同道合的人。

開發AlphaGo的黃士傑就是一個知名例子。他的理想是開發最強圍棋程式,但是缺錢缺人。即使做圍棋軟體生意,全台灣圍棋棋士每人花1000元預購他的圍棋軟體,也籌不到足夠生活費,更不可能雇用行政助手、採購運算設備。即使想到了神經網路背棋、搜尋樹走棋,也找不到人商討細節、反覆實驗。顯然要另尋出路。

為開發圍棋程式,鑽研各個知名的圍棋AI原始碼。為尋找商討對象,參加學術比賽得到冠軍。為尋找夥伴,找到當時最強圍棋AI的發明者,拜其門下,果然遇到了跟自身做法一樣的同學。為隨時觀察學術前沿,進入一間專門研究人工智慧的新創公司。為持續開發圍棋程式,在面試時跟老闆溝通,利用上班閒暇時間研究圍棋程式。

為提升公司名氣,讓老闆掛名論文。為獲得大眾關注,仿照深藍宣傳模式。為鞏固人流金流,擬定下個計畫是星海爭霸。為獲得運算設備,提供計劃吸引Google併購。為迅速完成AlphaGo,邀請同事共襄盛舉,分享榮耀。最後選擇急流勇退,畢竟圍棋程式做不了大生意,不是長久之計,當然要繼續做其他的事情。

這些規劃都事先經過沙盤推演。凡事都有前因後果。比方說自己「缺乏商討對象」,那麼其他人一定也有類似困擾,那麼某些精神抖擻的人就會從事「找到商討對象」的行為,那麼就有人分享圍棋AI原始碼、舉行學術比賽、找記者發新聞稿以吸引後進參與、……。

發現了這一點之後,想要「找到商討對象」,就要參加學術比賽。嘗試去推理每個人會怎麼想、怎麼做,然後做規劃。觀念清晰,理解透徹,導致成功。

Academic Institution

學術機構

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

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

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

資訊工程系

學術機構區分許多系所,負責不同領域。負責計算機科學的系所,稱作「計算機科學系」,但是到了台灣卻稱做「資訊工程系」。

在台灣,資訊工程系的英文系名是Department of Computer Science and Information Engineering,直接翻譯是「計算機科學與資訊工程系」,故意在計算機科學的後方添上了資訊工程,而且只取資訊工程的部分當成了中文系名。

我不清楚這種亂象是如何產生的,或許是當時某些老人家想要譁眾取寵、追逐潮流,因此更改系名,欺騙學生就讀、保全自己地位。各位可以參考台灣交通大學資訊工程系的改名歷程

至於「資訊工程」是一個罕見的詞彙。從字面上來看,意思是處理資料的工程──架設一些電腦設備,以便處理資料。

學者與學生

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

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

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

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

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

實驗室

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

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

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

學位證書

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

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

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

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

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

學位論文

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

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

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

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

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

學術研究

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

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

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

學術經費

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

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

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

先前提到台灣的研究機構沒有產出。說到原因的話,除了怪政府怪老闆怪環境,大家應該自我反省一下自己平常都在幹嘛。如果整個台灣都沒人擅長做研究,科技部撒再多錢也沒用:《5年50億 AI創新研究中心2018年1月1日啟動》

既知如此,那麼為什麼還要撒錢呢?輪到你想想看。

學術計畫

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

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

莊永裕團隊的學術計畫:

計畫名稱:用於中小學科技與美術創作教學之三維列印軟體開發與教學研究(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萬,三人歷經三年,研發一個新功能:多屬性資料之間的分界線。將原本的問題與演算法,再進行推廣。

學術成果

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

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

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

有些領域甚至有實際成品。先前介紹了德國研究機構的機器人,那麼台灣呢?台灣沒有獨立的機器人研究機構,不過學校裡面有機器人實驗室。以台大為例:

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

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

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

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

學術論文

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

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

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

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

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

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

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

學術倫理

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

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

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

學術品質

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

有人發明指標:impact factor、citation rate、H-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篇。就連前教育部長蔣偉寧也掛名論文共同作者,大家一起分享榮耀。

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

學術生涯

想當學生,請參考《台灣人的普林斯頓生活手冊》

想當學者,呃,我不知道應該參考什麼。

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
電腦架構。中央處理器、記憶體、硬碟、網路、電源、……。
     研究如何連結電腦元件,提升電腦效能、增加電腦功能。

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

會議有哪些

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

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

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

同類的會議有哪些

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

其餘會議就必須詢問圈子內的人了,例如國際計算幾何會議SoCG、組合最佳化與應用會議COCOA 、……。

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

熱門的會議有哪些

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

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

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

非學術性質的會議

也有針對業界人士的會議。參加者主要是工程師、設計師、經理人,而不是學者。

業界人士舉辦的遊戲開發者大會GDC,討論遊戲開發的一切,包括程式、美術、管理、市場、教育等等。下面影片是會議的其中一場演講:讓遊戲角色的跳躍動作更漂亮。

台灣資料科學協會舉辦的台灣資料科學愛好者年會DSC,討論台灣官方最近正在炒作的大數據、人工智慧。下面影片是會議的其中一場演講:發展大數據會遭遇什麼問題。

會議的品質

會議的參與者,決定了會議的品質。同一個領域擁有許多類似會議,經過時間演變,大家各自心有所屬。像是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、離散演算法期刊JDA、組合最佳化期刊JCO

期刊的品質

期刊的投稿者與審稿者,決定了期刊的品質。同一個領域擁有許多類似期刊,經過時間演變,大家各自心有所屬。像是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:大全。針對特定的大型領域,由資深學者草擬書籍目錄,然後邀請大量學者,按照個人專長分派章節。書籍內容是理論概述、文獻清單。例如《Handbook of Data Structures and Applications》《Encyclopedia of Algorithms》

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

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

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

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》

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

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

台灣有計算機科學書店,例如天瓏書局。台灣有代理進口科學教育書籍的公司,例如文景書局

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

Course

課程

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

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

課程的類型

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

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

課程有哪些

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

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

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

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

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

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

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

計算機科學的實際應用。

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

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

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

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

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

國外的計算機科學系課程

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

https://cs.illinois.edu/academics/courses#tab3

http://www.cs.cornell.edu/courseinfo/listofcscourses

除了學校的正規課程,也有網路的影音課程。諸如Coursera、Udacity、edX,都有計算機科學的課程。課程種類正在持續增加當中,大家可以一睹國外教授的風采。

https://www.coursera.org/browse/computer-science

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

https://www.topuniversities.com/university-rankings/university-subject-rankings/2017/computer-science-information-systems

網路上也有人熱心整理清單。

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

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

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

台灣的資訊工程系課程

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

https://www.csie.ntu.edu.tw/stu/super_pages.php?ID=stucourse

https://www.cs.nctu.edu.tw/cswebsite/education/undergraduate/course

網路上也有人熱心整理清單。

https://shaform.com/csdream/

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

教學與研究

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

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

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

Project

專案(計畫)

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

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

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

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

卡內基美隆大學的機器人研究機構。專案非常多,分成六類:場勘、設施、製造、醫療、輔具、運輸。每個細目底下,提供了研究成果照片、研究人員清單、新聞清單。

各位瞭解國外學術機構的研究專案之後,相信各位可以明白台灣學術機構的研究專案幾乎都是詐騙,就連台清交也不例外。

Standard

標準

標準實在是太多太多了。以下只介紹三個,你一定遇過。

IEEE 754:二進位浮點數算術。C程式語言的float和double,INF和NaN,就是依循這個標準。中央處理器廠商Intel和AMD,顯示卡廠商NVIDIA,大家都是按照這個標準,來設計CPU和顯示卡的內部電路。

ISO/IEC 9899:C程式語言。國際標準化組織ISO制定的標準。雖然大家必須付費取得規格書,但是ISO也好心地免費公開最終送審版本,內容跟正式版本相去不遠。

HTML 5.2 W3C Recommendation:超文件標記語言。全球資訊網協會W3C制定的標準。免費閱讀。

標準的建立

熱心人士、廠商、政府,建立標準協會,邀請學者和工程師開會討論,彙整各方意見,形成標準。

有時候為了商業利益,強而有力的大公司會主導制定方向,甚至回家自創一套標準。例如影像壓縮標準就有兩種:MPEG團隊的HEVC/H.265、Google的VP9。

閱讀標準,有時要付費。使用標準,有時要付授權金。制定標準,有時要靠鄉民,例如《一段關於W3C的故事》

標準的教學書籍

規格書繁文縟節,面向學者和工程師,不適合學生和程式員。一些熱心人士,讀通規格書,發掘各種應用場景,編排章節,寫出簡單易懂的教學書籍,請出版社出版。大家可以在書店找到很多面向普通人的教學書籍。台灣有專門從事這類工作的人,例如林信良

Patent

專利

我不熟悉,只能簡單介紹。

公司的獨家技術,一旦被他人利用,往往導致公司無法獲利而倒閉。各國政府為了保護國內公司,發明了專利這一概念。

專利的申請流程

一、公司發明獨家技術。

二、向某國政府的專利部門申請專利。

台灣是經濟部智慧財產局

三、專利部門委託專業機構進行鑑定,確認是獨家技術。

台灣是中華工商研究院

四、公司每年須付錢給專利部門,以保留專利。

五、專利有時限,讓大家得以汰舊換新。

台灣和美國的時限都是20年。

六、當公司發現自身專利被他人盜用,可以向該國法院提告,請法院主持公道。盜用他人專利,必須付賠償金給持有專利的公司。

台灣是智慧財產法院

七、當公司發明新技術,必須當心是不是其他公司的專利。專利先申請先贏。

順帶一提,美國對世界大多數國家都有實質影響力。美國有各種手段可以仲裁他國,避免他國公司耍賴不付賠償金。因此很多人選擇申請美國專利。

專利導致大家難以改良技術,但是沒有專利則導致大家難以養家活口。兩害相權取其輕。

專利保護

以下介紹幾個知名範例:

arithmetic coding:資料壓縮演算法,而且是理論上壓縮效果最佳的演算法。然而此演算法是IBM公司持有的專利。導致演算法課本只好改為介紹效率稍差的Huffman coding,導致JPEG圖片、MPEG影片標準規格只好採用Huffman coding。儘管現在專利已經過期了,但是木已成舟,大家依然沿用效果較差的演算法。

MP3:聲音壓縮格式。凡是開發編碼器的人,都要支付授權金。導致Java程式語言可以讀取MP3檔案,卻不能儲存成MP3檔案。所幸相關專利在2017年已經全部過期。當初開發第一個編碼器的Fraunhofer-Gesellschaft研究機構,也宣布支持新格式AAC,不再糾結於MP3了。

watercolor:在電腦螢幕上面畫出水彩筆觸。此演算法是華盛頓大學持有的專利。因此紙本書籍、網際網路,都不會見到教學範例、實作程式,大家都很守法。專利看起來快要過期了。

開源軟體

政府設立的學術機構、研究機構,本質是為民服務,通常不會申請專利。公司附設的研究機構,則習慣申請專利。

一旦申請專利,他人就不能逕自使用,甚至是技術發明人本人(法律規定,在職期間,與職務相關的成果都歸公司所有)。使用專利必須先經過公司同意。

由於專利,大公司經常葬送有前景的科技。因而有人提倡開源軟體,又發明授權條款GPLCC,一方面促進科技發展,一方面提供法律保障。

計算機領域的大公司樂於支持開源──一堆免錢工人幫你開發軟體、提高技術、增加聲望、打擊對手,何樂而不為?計算機領域的學者樂於支持開源──不需走跳江湖,就可以習得科技前沿,何樂而不為?這是雙贏局面。

專利戰

有人故意申請一大堆天馬行空的專利,等到其他公司不小心使用了相同的技術,就提告求償。這種投機取巧的公司稱作專利蟑螂

經典案例:蘋果與宏達電的專利訴訟。法院認定侵權的功能是:在簡訊裡面,長按電話號碼,可以直接撥打電話。最終宏達電付費向蘋果購買專利。

另一個經典案例:訊連科技與台灣數位學習科技的專利訴訟。訊連認為台數科PowerCam軟體抄襲了使用者介面,訴訟中途一度創下台灣史上最高的專利判賠金額4698萬,不過最終訊連敗訴。

盜版

守法是為了讓人人安居樂業。凡事顧慮他人,必然願意守法。不過不見得人人都有同理心、人人都是利益共同體,尤其是台灣人。

台灣曾經是盜版王國。台灣廠商經常盜用他人專利,甚至向他國傾銷盜版商品。Made in Taiwan等同仿冒爛貨。台灣曾經列入特別301條款優先觀察名單。所幸最近十年已經改善很多。

早期案例:金寶電子拆解計算機構造、宏碁電腦抄襲蘋果電腦。台灣過去實施極權統治,凡事為所欲為,所以這些公司從侵權違法變成了傑出企業,打造了台灣電腦王國。

逆向工程

把別人的產品拆開來研究。法院進行專利判決、企業掌握對手技術,都需要逆向工程。

不過也有不肖業者利用逆向工程解讀他人技術,用以改良自家產品。這麼做的好處是不必花錢花時間、從無到有研發產品。當然這是侵權違法行為。

台灣早期完全沒有電子研究機構、沒有知名學者和研究員,卻能夠在短短幾年之間,建立大量電子工廠、創造各式電子產品,因此大家普遍認為台灣人使用逆向工程研發產品。

Science, Technology, Industry

科學、技術、產業

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

計算機科學、資訊技術、資通訊產業

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

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

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

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

國外計算機科學發展、資訊技術發展、資通訊產業發展

請參考維基百科以及谷歌搜尋結果

MIT Technology Review
雜誌社每年選出的技術趨勢、技術公司、技術人。

Stanford AI100中文翻譯
大學發表的科學技術產業報告。

IEEE Spectrum
學會介紹科學技術動態的新聞刊物。

Gartner Hype Cycle
顧問公司每年發表的技術趨勢走向圖。

CB Insights
市調公司發表的產業報告。

National Science FoundationYoutube頻道
政府基金會發表的科學技術產業報告。

Horizon 2020台灣對口單位
國家聯盟發表的科學技術產業政策。

台灣實施媒體管制

台灣位於美國西域疆界,總統候選人需要前往白宮覲見聖上。

台灣是鄉下地方,又實施媒體管制,導致民眾對科學技術產業一知半解。比方說,工業區叫做科學園區、工人與技師叫做科技新貴、有賈伯斯但沒有佩奇、有半導體巨人但沒有ASML。

又比方說,以知名度而言,哈佛勝過加州理工學院,是因為高幹子弟去哈佛念書。貝爾實驗室勝過美國國家實驗室,是因為黨國菁英去貝爾實驗室工作。至於歐亞大陸有哪些機構,台灣媒體鮮少報導。

台灣人總是聽信媒體報導,盲目選擇未來出路。媒體喊寫程式,大家就跑去寫程式;媒體喊資訊業就是服務業,大家就跑去創業寫APP;媒體現在正在喊的則是人工智慧、生技醫療。

此舉導致台灣人對於科學技術產業多半無感,更不用說要參與其中了。因此台灣人並未發展計算機科學、資訊技術、資通訊產業。

台灣實施愚民教育

中文課程,重新命名為國語、國文。課程不介紹中文經典古籍,諸如道德經、孫子兵法、周易,避免學生擁有太多思想;而是改為介紹雅量背影出師表,強調友情親情兄弟情,使人理盲濫情。

歷史課程,內容造假。俄國建立兩支叛軍,國共合作推翻中華民國──卻變成了國父於黃埔建軍,國民革命軍北伐統一北洋政府。

又比方說,日本驅逐俄國叛軍,接著又進犯美國,卻反被美國攻佔領土,其中包括台灣;俄國叛軍乘勢復出;美國收買其中一支叛軍駐紮台灣,打造軍事基地,以夷制夷,直到今日──卻變成了國民政府對日抗戰、光復台灣、退守台灣、建設台灣。

此舉導致台灣人忙於理解現況、窮於應付始作俑者與協力者。因此台灣人缺乏心力推動計算機科學教育。

台灣計算機科學發展

美國援助台灣政府,引進國外設備,建造電子工廠、電腦工廠。台灣政府指派黨政軍人士前往美國觀摩,回國後設立研究院和大學,擔任校長和教授,督促學生解讀技術原理、創業開工廠。因此台灣並未發展計算機科學。

以學術界而言,許多大學教授的水準,不如自學的中學生。比如引入計算機科學的先驅,只寫得出虛有其表的爛教材。資工系畢業生,一個班級只有兩三人學會寫程式。

以產業界而言,只要去補習班接受短期訓練,就能寫程式,完全不必經過資工系的專業訓練。程式員如同臨時工,花錢請就有,人力流動相當頻繁。大部份公司都沒有完善的專案管理機制,修改規格、程式出錯、加班工作是家常便飯。

在台灣,光是學會寫程式,就是個大問題,更遑論計算機科學。如果你對計算機科學有興趣,就必須自立自強,學校教育幫不了你。

台灣資通訊產業歷史

台灣的糧食自給率和能源自給率都不到100%。台灣人必須幫外國人工作,才能買足麵粉和石油。台灣人必須找事做。

不幸的是,台灣人沒有發展資訊技術,也難以發展資通訊產業。

幸運的是,美國人早替台灣人安排了出路:電子零組件製造。

美國安排國外公司在台灣建立電子零組件加工廠,知名公司諸如1964通用器材、1967日立、1969飛利浦、1970德州儀器、1970三菱/大生、1971 RCA,以及海歸學者創立的工廠1969環宇、1971華泰。

然後台灣政府使用美援基金,透過買辦向上述公司洽談技術轉移,請其建立電子零組件製造工廠,知名工廠諸如1980 RCA聯電、1987飛利浦台積電、1988 IMR台灣光罩,以及台灣政府自行建立的工廠1994世界先進。台灣實施媒體管制,因此高汙染工廠變成高科技公司,參與者變成奉獻台灣的偉人。

台積電服務外國公司,營收占台灣國民所得4.1%,肩負台灣的經濟命脈。資源來自美國、領導來自中國、基層來自台灣──這就是大戰略!十萬青年十萬肝,GG輪班救台灣。

台灣的電腦製造工廠、面板製造工廠,故技重施,盜版抄襲、技術轉移,看準市場風頭賺取暴利,再被持續深耕的國外廠商全面擊垮。台灣實施媒體管制,因此新聞報導和諧安詳、一團和氣。

台灣資通訊產業政策

台灣政府制定了資訊技術的政策,不過政策內容只有市場分析、精神喊話。請參考國家科學技術發展計畫政府研究資訊系統

台灣政府制定了資通訊產業的政策,內容卻偏重電子零組件製造。請參考台灣科技樹我國主要出口貨品台灣官方報告上篇下篇美國官方報告

雖然台灣政府沒有真正發展資通訊產業,但是台灣政府卻成立了好幾個產業研究單位,而且相當關注資通訊產業:國研院科政中心工研院產經中心資策會產業情報研究所

最近台灣政府開始效仿中國產業政策,推動學生自造、青年創業、產業轉型,鼓吹機器人、物聯網、人工智慧。

網路上有一種說法:台灣不是大國,而小國就該有小國思維,培養小國特色。那麼台灣打算培養的特色總共有哪些呢?

根本就是多頭馬車。台灣人不如爽快一點,承認自己什麼都沒有,充其量只是優秀白老鼠,幫忙各國進行社會實驗。

如果你想研究計算機科學、研發資訊技術、發展資通訊產業,至少你要搞清楚最重要的一件事──台灣從來都不是主戰場。

政策制定流程

一、企業家、政治家創辦智庫,招募研究員。

二、研究員觀察各種社會現象,梳理現在局勢,推估未來趨勢。

三、研究員向企業家、政治家報告,指出方向,請之定奪。

四、企業家、政治家參訪各單位,實地瞭解、或者商談合作。

五、指示員工、公務員擬訂計畫。

六、藉由聚會,向金主宣揚計畫。藉由媒體,向民眾宣揚計畫。

七、民眾奮起直追、或者群起攻之。

知名智庫:

知名聚會:

知名媒體:

台灣沒有發展計算機科學、資訊技術。智庫只能提供不切實際的政策,哄騙企業家和政治家。

台灣沒有資訊專長的企業家和政治家。他們只能呼喊不切實際的口號,哄騙金主和民眾。

台灣的金主和民眾,一些人滿懷希望、信以為真,一些人心懷鬼胎、狼狽為奸。但是沒有人認真發展計算機科學,導致惡性循環。

台灣資通訊產業發展

既然如此,為何台灣人還能創立許多資訊公司呢?原因很簡單,只需調查一下董事長的家族長輩是否有黨政軍人士、從事黨政軍旗下事業。

即使創辦人不會做產品,還是能夠找到資金成立公司。即使創辦人不會做生意,還是能夠效仿國外公司營運模式。創辦人委託媒體撰寫勵志報導,激勵台灣人的信心,誘使台灣人主動學習新知、心懷敬意去就業,就能讓公司賺錢了。

不是專家卻創辦資訊公司,早期案例:趨勢科技張明正,岳父與岳父的爸爸是台灣省議員。PCHOME詹宏志,岳父是物資局台中辦事處主任。

近期案例:沛星互動科技游直翰,學生時代專長是無人車,卻成立公司做社群遊戲、跨螢技術、廣告投放。和沛科技翟本喬,知名成果是機房配電,卻成立公司做雲端儲存。

為了平衡報導,也提供專家創辦電子公司的案例:Garmin高明環,研究衛星導航,於是成立公司做衛星導航器。不過這不是台灣公司就是了。

可能是因為台灣過去實施極權統治、現在實施愚民教育,導致台灣人普遍不瞭解也不願意鑽研計算機科學、資訊技術,結局就是沒有資通訊產業。相反的,台灣人樂於協助上述這些非專家人士,參與他們的事業,甚至引以為榮。

台灣的統治者,看見台灣人這副德行,實在無可奈何。只好連哄帶騙軟硬兼施,令媒體報導台灣之光、起飛元年、草莓族、小確幸。只好病急亂投醫,砸大錢邀請國外企業、冒大險西進南向。

死馬當活馬醫,也許會出現奇蹟,讓台灣人醒過來。