科學領域
作為一個學科,計算機科學涵蓋了從算法的理論研究和計算的極限,到如何通過硬件和軟件實現計算系統(tǒng)。CSAB(以前被叫做Computing Sciences Accreditation Board),由Association for Computing Machinery(ACM)和IEEE Computer Society(IEEE-CS)的代表組成,確立了計算機科學學科的4個主要領域:計算理論,算法與數據結構,編程方法與編程語言,以及計算機元素與架構。CSAB還確立了其它一些重要領域,如軟件工程,人工智能,計算機網絡與通信,數據庫系統(tǒng),并行計算,分布式計算,人機交互,機器翻譯,計算機圖形學,操作系統(tǒng),以及數值和符號計算。
簡介
計算機科學(英語:computer?science,有時縮寫為CS)是系統(tǒng)性研究信息與計算的理論基礎以及它們在計算機系統(tǒng)中如何實現與應用的實用技術的學科。它通常被形容為對那些創(chuàng)造、描述以及轉換信息的算法處理的系統(tǒng)研究。計算機科學包含很多分支領域;有些強調特定結果的計算,比如計算機圖形學;而有些是探討計算問題的性質,比如計算復雜性理論;還有一些領域專注于怎樣實現計算,比如編程語言理論是研究描述計算的方法,而程序設計是應用特定的編程語言解決特定的計算問題,人機交互則是專注于怎樣使計算機和計算變得有用、好用,以及隨時隨地為人所用。
理論計算機主條目:理論計算機科學
廣義的理論計算機科學包括經典的計算理論和其它專注于更抽象、邏輯與數學方面的計算。
計算理論主條目:計算理論
按照Peter J. Denning的說法,計算機科學的最根本問題是“什么能夠被有效地自動化?”計算理論的研究就是專注于回答這個根本問題,關于什么能夠被計算,去實施這些計算又需要用到多少資源。為了試圖回答第一個問題,遞歸論檢驗在多種理論計算模型中哪個計算問題是可解的。而計算復雜性理論則被用于回答第二個問題,研究解決一個不同目的的計算問題的時間與空間消耗。
著名的“P=NP?”問題,千禧年大獎難題之一,是計算理論的一個開放問題。
信息編碼論主條目:信息論和編碼理論
信息論與信息量化相關,由Claude E. Shannon創(chuàng)建,用于尋找信號處理操作的根本極限,比如壓縮數據和可靠的數據存儲與通訊。編碼理論是對編碼以及它們適用的特定應用性質的研究。編碼(code)被用于數據壓縮,密碼學,前向糾錯,也被用于網絡編碼。研究編碼的目的在于設計更高效、可靠的數據傳輸方法。
算法算法指定義良好的計算過程,它取一個或一組值作為輸入,經過一系列定義好的計算過程,得到一個或一組輸出。算法是計算機科學研究的一個重要領域,也是許多其他計算機科學技術的基礎。算法主要包括數據結構、計算幾何、圖論等。除此之外,算法還包括許多雜項,如模式匹配、部分數論等。
程序設計理論主條目:程序設計語言理論
程序設計語言理論是計算機科學的一個分支,主要處理程序設計語言的設計、實現、分析、描述和分類,以及它們的個體特性。它屬于計算機科學學科,既受影響于也影響著數學、軟件工程和語言學。它是公認的計算機科學分支,同時也是活躍的研究領域,研究成果被發(fā)表在眾多學術期刊,計算機科學以及工程出版物。
形式化方法主條目:形式化方法
形式化方法是一種特別的基于數學的技術,用于軟件和硬件系統(tǒng)的形式規(guī)范、開發(fā)以及形式驗證。在軟件和硬件設計方面,形式化方法的使用動機,如同其它工程學科,是通過適當的數學分析便有助于設計的可靠性和健壯性的期望。但是,使用形式化方法會帶來很高的成本,意味著它們通常只用于高可靠性系統(tǒng),這種系統(tǒng)中安全或保安(security)是最重要的。對于形式化方法的最佳形容是各種理論計算機科學基礎種類的應用,特別是計算機邏輯演算,形式語言,自動機理論和形式語義學,此外還有類型系統(tǒng)、代數數據類型,以及軟件和硬件規(guī)范和驗證中的一些問題。
系統(tǒng)主條目:并行性和分布式計算
并行性(concurrency)是系統(tǒng)的一種性質,這類系統(tǒng)可以同時執(zhí)行多個可能互相交互的計算。一些數學模型,如Petri網、進程演算和PRAM模型,被創(chuàng)建以用于通用并發(fā)計算。分布式系統(tǒng)將并行性的思想擴展到了多臺由網絡連接的計算機。同一分布式系統(tǒng)中的計算機擁有自己的私有內存,它們之間經常交換信息以達到一個共同的目的。
數據庫和信息檢索主條目:數據庫和數據庫管理系統(tǒng)
數據庫是為了更容易地組織、存儲和檢索大量數據。數據庫由數據庫管理系統(tǒng)管理,通過數據庫模型和查詢語言來存儲、創(chuàng)建、維護和搜索數據。
應用計算機科學盡管計算機科學(computer science)的名字里包含計算機這幾個字,但實際上計算機科學相當數量的領域都不涉及計算機本身的研究。因此,一些新的名字被提議出來。某些重點大學的院系傾向于術語計算科學(computing science),以精確強調兩者之間的不同。丹麥科學家Peter Naur建議使用術語"datalogy",以反映這一事實,即科學學科是圍繞著數據和數據處理,而不一定要涉及計算機。第一個使用這個術語的科學機構是哥本哈根大學Datalogy學院,該學院成立于1969年,Peter Naur便是第一任教授。這個術語主要被用于北歐國家。同時,在計算技術發(fā)展初期,《ACM通訊》建議了一些針對計算領域從業(yè)人員的術語:turingineer,turologist,flow-charts-man,applied meta-mathematician及applied epistemologist。三個月后在同樣的期刊上,comptologist被提出,第二年又變成了hypologist。術語computics也曾經被提議過。在歐洲大陸,起源于信息(information)和數學或者自動(automatic)的名字比起源于計算機或者計算(computation)更常見,如informatique(法語),Informatik(德語),informatika(斯拉夫語族)。
著名計算機科學家Edsger Dijkstra曾經指出:“計算機科學并不只是關于計算機,就像天文學并不只是關于望遠鏡一樣。”("Computer science is no more about computers than astronomy is about telescopes.")設計、部署計算機和計算機系統(tǒng)通常被認為是非計算機科學學科的領域。例如,研究計算機硬件被看作是計算機工程的一部分,而對于商業(yè)計算機系統(tǒng)的研究和部署被稱為信息技術或者信息系統(tǒng)。然而,現如今也越來越多地融合了各類計算機相關學科的思想。計算機科學研究也經常與其它學科交叉,比如心理學,認知科學,語言學,數學,物理學,統(tǒng)計學和經濟學。
計算機科學被認為比其它科學學科與數學的聯系更加密切,一些觀察者說計算就是一門數學科學。早期計算機科學受數學研究成果的影響很大,如Kurt G?del和Alan Turing,這兩個領域在某些學科,例如數理邏輯、范疇論、域理論和代數,也不斷有有益的思想交流。
計算機科學和軟件工程的關系是一個有爭議的話題,隨后關于什么是“軟件工程”,計算機科學又該如何定義的爭論使得情況更加混亂。David Parnas從其它工程和科學學科之間的關系得到啟示,宣稱計算機科學的主要重點總的來說是研究計算的性質,而軟件工程的主要重點是具體的計算設計,以達到實用的目的,這樣便構成了兩個獨立但又互補的學科。
人工智能主條目:人工智能
這個計算機科學分支旨在創(chuàng)造可以解決計算問題,以及像動物和人類一樣思考與交流的人造系統(tǒng)。無論是在理論還是應用上,都要求研究者在多個學科領域具備細致的、綜合的專長,比如應用數學,邏輯,符號學,電機工程學,精神哲學,神經生理學和社會智力,用于推動智能研究領域,或者被應用到其它需要計算理解與建模的學科領域,如金融或是物理科學。人工智能領域開始變得正式源于Alan Turing這位人工智能先驅提出了圖靈試驗,以回答這樣一個終極問題:“計算機能夠思考嗎?”
機器翻譯主條目:機器翻譯
1947年,美國數學家、工程師沃倫·韋弗與英國物理學家、工程師安德魯·布思提出了以計算機進行翻譯(簡稱“機譯”)的設想,機器翻譯從此步入歷史舞臺,并走過了一條曲折而漫長的發(fā)展道路。機譯被列為21世紀世界十大科技難題。與此同時,機譯技術也擁有巨大的應用需求。
機譯消除了不同文字和語言間的隔閡,堪稱高科技造福人類之舉。但機譯的譯文質量長期以來一直是個問題,離理想目標仍相差甚遠。中國數學家、語言學家周海中教授認為,在人類尚未明了大腦是如何進行語言的模糊識別和邏輯判斷的情況下,機譯要想達到“信、達、雅”的程度是不可能的。這一觀點恐怕道出了制約譯文質量的瓶頸所在。
體系結構與工程主條目:計算機體系結構和計算機工程
計算機系統(tǒng)結構,或者數字計算機組織,是一個計算機系統(tǒng)的概念設計和根本運作結構。它主要側重于CPU的內部執(zhí)行和內存訪問地址。這個領域經常涉及計算機工程和電子工程學科,選擇和互連硬件組件以創(chuàng)造滿足功能、性能和成本目標的計算機。
圖形與視覺主條目:計算機圖形學
計算機圖形學是對于數字視覺內容的研究,涉及圖像數據的合成和操作。它跟計算機科學的許多其它領域密切相關,包括計算機視覺、圖像處理和計算幾何,同時也被大量運用在特效和電子游戲。
安全和密碼學主條目:計算機安全和密碼學
計算機安全是計算機技術的一個分支,其目標包括保護信息免受未經授權的訪問、中斷和修改,同時為系統(tǒng)的預期用戶保持系統(tǒng)的可訪問性和可用性。密碼學是對于隱藏(加密)和破譯(解密)信息的實踐與研究?,F代密碼學主要跟計算機科學相關,很多加密和解密算法都是基于它們的計算復雜性。
計算科學計算科學(或者科學計算)是關注構建數學模型和量化分析技術的研究領域,同時通過計算機分析和解決科學問題。在實際使用中,它通常是計算機模擬和計算等形式在各個科學學科問題中的應用。
信息科學主條目:信息科學
軟件工程主條目:軟件工程
軟件工程是對于設計、實現和修改軟件的研究,以確保軟件的高質量、適中的價格、可維護性,以及能夠快速構建。它是一個系統(tǒng)的軟件設計方法,涉及工程實踐到軟件的應用。
獎項
計算機科學領域的最高榮譽是ACM設立的圖靈獎,被譽為是計算機科學的諾貝爾獎。它的獲得者都是本領域最為出色的科學家和先驅。華人中首獲圖靈獎的是姚期智先生。他于2000年以其對計算理論做出的諸多“根本性的、意義重大的”貢獻而獲得這一崇高榮譽。
專業(yè)院校
美國開設計算機科學專業(yè)的院校
普渡大學西拉法葉分校,弗吉尼亞大學,密西根大學安娜堡分校,喬治城大學,維克森林大學,耶魯大學,哥倫比亞大學,華盛頓大學,卡內基梅隆大學,佐治亞理工學院,加州理工學院,麻省理工學院,斯坦福大學,加州大學伯克利分校,伊利諾伊大學香檳分校,威斯康星大學麥迪遜分校,倫斯勒理工學院,哈佛大學,俄勒岡大學。
著名高校
在計算機科學領域排名世界前五的大學:
1. Carnegie Mellon University卡內基梅隆大學
2. Massachusetts Institute of Technology麻省理工學院
3. Stanford University斯坦福大學
4. University of California -Berkeley加州大學伯克利分校
5. Cornell University康奈爾大學
5. University of Illinois-Urbana Champaign伊利諾伊大學香檳分校
專業(yè)介紹
培養(yǎng)目標本專業(yè)培養(yǎng)德、智、體全面發(fā)展,具有計算機應用技術的基礎理論知識,具備計算機及相關設備的維護與維修、行業(yè)應用軟件、平面圖像處理、廣告設計制作、動畫制作、計算機網絡及網站建設與管理、數據庫管理與維護等應用能力和操作能力的高等技術應用性人才。
主要課程計算機應用基礎、計算機組裝與維護、計算機局域網絡的建設與管理、網絡工程、操作系統(tǒng)、服務器、數據庫的開發(fā)與應用、網站建設與網頁設計、C/C++語言、VisualBasic語言、平面設計、3D圖形設計、多媒體設計、專業(yè)英語。
就業(yè)方向畢業(yè)生主要面向交通系統(tǒng)各單位、交通信息化與電子政務建設與應用部門、各類計算機專業(yè)化公司、廣告設計制作公司、汽車營銷技術服務等從事IT行業(yè)工作。
研究課題
①、計算機程序能做什么和不能做什么(可計算性);
②、如何使程序更高效的執(zhí)行特定任務(算法和復雜性理論);
③、程序如何存取不同類型的數據(數據結構和數據庫);
④、程序如何顯得更具有智能(人工智能);
⑤、人類如何與程序溝通(人機互動和人機界面)。?
系統(tǒng)分類
計算機系統(tǒng)可劃分為軟件系統(tǒng)與硬件系統(tǒng)兩大類。
硬件
結構控制和指令系統(tǒng)
算法和邏輯結構
存儲器結構
馮·諾伊曼結構
哈佛結構
輸入/輸出和數據通信
數字邏輯
邏輯設計
集成電路
計算機系統(tǒng)組織
計算機系統(tǒng)結構
計算機網絡
分布式計算
網絡安全
計算機系統(tǒng)實現
軟件
系統(tǒng)軟件
操作系統(tǒng)
編譯器
應用軟件
計算機游戲
辦公自動化
網絡軟件
CAD軟件
計算機程序
程序設計和程序設計實踐
面向對象技術
程序設計語言
軟件工程
軟件復用
驅動程序
計算機模擬
程序設計方法學
數據和信息系統(tǒng)
數據結構
數據存儲表示
數據加密
數據壓縮
編碼與信息論
文件
信息系統(tǒng)
管理信息系統(tǒng)
決策支持系統(tǒng)- 專家系統(tǒng)
數據庫
信息存儲和數據存取
信息交互與表達
主要的研究領域
形式化基礎
邏輯學
謂詞邏輯
模態(tài)邏輯
時序邏輯
描述邏輯
數學
泛代數
遞歸論
模型論
概率論和數理統(tǒng)計
邏輯代數
布爾代數
離散數學
組合數學
圖論
網論
信息論
理論計算機科學
形式語言
自動機
可計算性
算法
計算復雜性
描述復雜性
編譯器
程序設計理論
信息論
類型理論
指稱語義
微程序
遺傳算法
并行計算
計算方法學
人工智能
機器翻譯
計算機圖形學
圖像處理與計算機視覺
模式識別
語音識別
文字識別
簽名識別
人臉識別
指紋識別
仿真與建模
數字信號處理
文檔與文本處理
計算機應用
數值計算
數值分析
定理機器證明
計算機代數
工程計算
計算機化學
計算機物理
生物信息論
計算生物學
非數值計算
工廠自動化
辦公室自動化
人工智能
信息存儲與檢索
符號語言處理
計算機輔助科學
計算機輔助設計
計算機輔助教學
計算機輔助管理
計算機輔助軟件工程
機器人學
多媒體技術
人機交互
電子商務
特定技術
測試基準
機器視覺
數據壓縮
軟件設計模式
數字信號處理
文件格式
信息安全
國際互聯網絡
超大規(guī)模集成電路設計
網絡傳輸協(xié)議
網絡處理器技術
整數運算器
浮點運算器
矩陣運算處理器
網格
計算科學史
計算機歷史
軟件業(yè)歷史
編程思想??
學科
計算機科學與另外的一些學科緊密相關。這些學科之間有明顯的交叉領域,但也有明顯的差異。
信息科學 - 軟件工程 - 信息系統(tǒng) - 計算機工程 - 信息安全 -密碼學- 數學 -工程學- 語言學 - 邏輯學
發(fā)展歷史
計算機科學中的理論部分在第一臺數字計算機出現以前就已存在。計算機科學根植于電子工程、數學和語言學,是科學、工程和藝術的結晶。它在20世紀最后的三十年間興起成為一門獨立的學科,并發(fā)展出自己的方法與術語。?
30年代
英國數學家A.M.圖靈和美國數學家E.L.波斯特幾乎同時提出了理想計算機的概念(圖靈提出的那種理想機在后來的文獻中稱為圖靈機)。?
40年代
數字計算機產生后,計算技術(即計算機設計技術與程序設計技術)和有關計算機的理論研究開始得到發(fā)展。這方面構成了所說的理論計算機科學。至于圖靈機理論,則可以看作是這一學科形成前的階段。至于“計算機科學”一詞則到60年代初才出現,此后各國始在大學中設置計算機科學系。學科內容 計算機科學是一門年輕的科學,它究竟包括哪些內容,還沒有一致公認的看法。一般認為,計算機科學主要包括理論計算機科學、計算機系統(tǒng)結構、軟件工程的一部分和人工智能。理論計算機科學 理論計算機科學是在20世紀30年代發(fā)展起來的。40年代機電的與電子的計算機出現后,關于現實計算機及其程序的數學模型性質的研究以及計算復雜性(早期稱作計算難度)的研究迅速發(fā)展起來,形成自動機論、形式語言理論、程序設計理論、算法設計與分析和計算復雜性理論幾個領域。計算機系統(tǒng)結構?
50年代
50年代以來,計算機的性能在計算速度和編址空間方面已提高了幾個數量級。但大部分是通過元件更新而獲得的。在系統(tǒng)結構方面基本上仍是屬于40年代后期形成的存儲程序型,即所謂諾伊曼型機器。這種結構的主要特點是它屬于控制流型。在這種結構中,一項計算先做什么后做什么是事先確定了的,程序中指令的順序是事先確定了的。為了在計算機的性能方面取得大的進展,需要突破這種舊的形式。計算機系統(tǒng)結構方面的重要課題之一,是探索非諾伊曼型機器的設計思想。在非諾伊曼型機器中,有一種是70年代初提出的數據流機器(又名數據驅動機器)。美國、蘇聯和英國都已制成這種機器。這種機器的特點是,在一項計算中先做什么后做什么不是事先確定,所執(zhí)行的指令是動態(tài)排序的。排序的原則是操作數已準備就緒的先做,因而稱作數據驅動機器。這種類型的機器更便于實現并行計算。軟件工程 程序設計在相當長的時間內是一種類似“手藝”而不是類似現代工程的技術。?
60年代
60年代以來出現了大程序。這些大程序的可靠性很難保證。到60年代后期,西方國家出現了“軟件危機”。這是指有些程序過于龐大(包含幾十萬條以至幾百萬條指令),成本過高而可靠性則比較差。于是提出了軟件工程的概念,目的在于使軟件開發(fā)遵守嚴格的規(guī)范,使用一套可靠的方法,從而保證質量。現代軟件工程的方向是形式化和自動化,而形式化的目的在于自動化。這里所說的自動化就是將程序設計中可以由機器來完成的工作,盡量交給機器去做。中心課題之一是程序工具和環(huán)境的研究。程序工具是指輔助人編程序的程序,如編譯程序、編輯程序、排錯程序等;程序環(huán)境則是指一套結合起來使用的用來輔助人編程序的程序工具。人工智能 用計算機模擬人的智能,特別是模擬思維活動的技術及其有關理論。由于人的思維活動離不開語言,而且人對于某一類問題進行思索和探索解法時,總是需要以關于這一類問題的基本知識(專業(yè)知識或常識)作為出發(fā)點。于是,知識表示和機器對自然語言的理解就構成人工智能的兩個重要領域。所謂知識表示,是指將原來用自然語言表示的知識轉換成用符號語言表示的,從而可以儲存在機器內供機器使用的知識。人工智能的研究角度有探索法的角度和算法的角度。通常所說的解題算法是指機械的和總是有結果的方法,而這里所說的算法卻是廣義的,包括那些機械的而在使用時不一定有結果的算法。這種方法時常稱作半可判定的方法。?
人在解決問題時,時常采用探索法。這種方法具有“試錯法”的性質,也就是說,試驗若干條途徑,一條路走不通時再試另一條,直到問題得到解決時為止。機器可以模擬人用探索法解題的思維活動。但由于可能途徑的數目非常之大,不可能進行窮舉式的探索。人一般是只選出一些最有希望得到結果的途徑去進行探索。人的這種能力,就是進行創(chuàng)造性思維的能力。這是機器極難模擬的事情。采用算法角度,使用特定的解題算法或半可判定的方法時,會遇到另一方面的困難。那就是當問題的復雜程度較高時(比如說是指數的),即使問題是有結果的,機器也無法在實際可行的時間內得到結果。在計算機出現的初期,人們曾寄希望于機器的高速度,以為在模擬人的思維時,機器可能用它的高速度來換取它所不具有的創(chuàng)造性思維。但通過“組合性爆炸”問題(“組合性爆炸”是指一些組合數學中的問題,在參數增大時,計算時間的增長率時常是指數的,甚至高于指數),人們認識到,單純靠速度不能繞過組合性爆炸所產生的障礙。有無辦法來克服這種困難,尚有待于進一步研究。與其他學科的關系 計算機是由物理元件構成的,迄今主要是由電子元件構成的。因此,物理學的一些分支和電子工程便構成計算機科學的基礎。同時,計算機科學在一定意義上是算法的科學,而算法是一個數學概念。因此,數學的某些分支如算法理論(即可算性理論,又名遞歸函數論)也構成計算機科學的基礎。但計算機科學已發(fā)展成為一門獨立的技術科學,既不是電子學的一個分支,也不是數學的一個分支。這是就這個學科的整體而言。至于理論計算機科學,由于它可以看作是計算機科學的數學基礎,在一定意義上,可以看作是數學的一個分支。另一個與計算機科學有密切關系的學科是控制論??刂普撟鳛閼脭祵W方法來研究機械系統(tǒng)和生命系統(tǒng)中的控制和通信現象的學科,同計算機科學有內容上的交叉,但后者不是它的一部分。自從40年代制成數字計算機以來,計算機的性能有了很大的提高。但在系統(tǒng)結構方面變化不大。一些計算技術發(fā)達國家正在研制新一代的計算機。這種計算機的系統(tǒng)結構將與過去40年的機器很不相同,所用的程序設計語言也將是新型的。計算機科學將研究由此出現的新問題,如有關并行計算的問題。?
對計算的數學性質的研究大都還是關于串行計算的,對并行計算性質的研究自70年代才發(fā)展起來,預計將成為計算機科學的中心課題之一。另一個問題是程序設計的自動化問題。在程序設計方面,明顯的趨勢是將機器能做的盡量交給機器去做。程序環(huán)境的研究構成了軟件工程的一個中心課題。形式化方法越來越受到重視,因為它是提高自動化程度所必需的。?
早期,雖然英國的劍橋大學和其他大學已經開始教授計算機科學課程,但它只被視為數學或工程學的一個分支,并非獨立的學科。劍橋大學聲稱有世界上第一個傳授計算的資格。世界上第一個計算機科學系是由美國的普渡大學在1962年設立,第一個計算機學院于1980年由美國的東北大學設立。多數大學都把計算機科學系列為獨立的部門,一部分將它與工程系、應用數學系或其他學科聯合。