國立中山大學應用數學系
計算機科學是本系的發展重點之一。在大學部,我們設有計算機科學學程,提供一系列的相關課程,讓有興趣的同學選修;在研究所的碩士班和博士班都設有計算機科學組,招收有志從事計算機科學研究的同學。有許多新生對計算機科學很感興趣,但是以往接觸計算機科學的機會比較少,不是很清楚計算機科學是什麼。本文的目的就是要讓有興趣的同學更瞭解計算機科學。
計算機科學是一門新興,而且發展快速的學門,但要說清楚計算機科學是什麼還真不容易。美國 Association for Computing Machinery (ACM) 在 1989 年,也就是 ACM 成立 42 週年的時候,提出一份報告,並將這份報告節錄成 "Computing as a discipline" 一文刊登於 1989 年 1 月份的 Communications of the ACM。 這份報告的主要目的是作為各校修訂 計算機科學課程內容的基準,對於想要瞭解計算機科學是什麼很有幫助,因此,我就以 前述報告的內容為主,向大家介紹計算機科學。
首先,在名稱方面,該報告用"Computing as a discipline"為題,並不用"Computer science"或"Computer engineering",我本人認為 computer 是機器,computing 才比較 像是一門學問。因此,"計算機科學"應該稱為"計算科學"比較恰當。顧名思義,它是研究 計算的各種問是,除了計算機之外,更重要的還有計算方法等等。
除了名稱之外,它的內涵到底是數學、自然科學、還是工程,大家一直爭論不休。以目前的發展趨勢來看,計算機科學應該包含下列三個典範 (paradigm):
其中理論部分乃根基於數學。一般而言,數學家反覆經下列四個步驟,以獲得正確的理論:
其次模型部分則跟基於實驗科學。與數學家不同的是,科學家反覆下列四個步驟,以獲得正確的模型:
最後,設計則跟基於工程。工程師反覆經下列四個步驟,以獲得解決問題的系統:
計算機科學是一門綜合性的科學,它包含理論、模型和設計。ACM 對計算機科學給了以下簡短的定義:
The discipline of computing is the systematic study of algorithmic processes that describe and transform information; their theory, analysis, design, efficiency, implementation, and application.
另外,有一句話也非常有意義:
The fundamental question underlying all of computing is, "What can be efficiently automated?"
在計算機科學之下,又可分為以下的 9 個次領域:
以上每個次領域,雖然比重不盡相同,都包含理論、模型和設計。另外,還有平行處理 (parallelism)、安全 (security)、可靠度 (reliability),以及效能分析 (performance evaluation) 等,因為每個次領域都需要談及,故並沒有單獨列出。
由以上的說明可以看出計算機科學包含廣泛,一個系的資源有限,不可能樣樣具全。以我們應用數學系而言,應該集中力量在理論方面,這樣一方面可以將有限的資源作較有效的利用,一方面也可使計算機科學和數學及統計作更好的配合,互相支援。如此一來,我們的學生將會受到更好的訓練。