計算機學科一個新知識框架(摘自ACM,轉貼,理順知識體系)

 

計算機學科一個新知識框架

1.       引言

美國計算機協會(ACM)已成立42 年了,但一場老問題的爭論仍在繼續。計算機科學是科學還是工程學科或者只是一門技術、一個計算商品的研製者和銷售者?學科的智力本質是什麼?它將持續興旺下去或者在我們的下一代衰落下去?計算機科學和工程目前的核心課程是否反映了這一領域?怎樣把理論和實驗室的工作集成在計算課程中?各核心課程培養計算方面的能力嗎?

    我們建議一種面向技術的學科描述,其基礎是數學和工程。例如,我們把算法當作最基本的研究對象,而程序設計和硬件設計則當作正要的研究活動。認爲"計算機科學等於程序設計"的觀點在我們的許多課程裏是很佔上風的。導引性的課程是程序設計,程序設計技術安排在各核心課程中,而科學則在選修課中。這外觀點阻止了重新組織各課程的進展,使心懷大志的最好的學生遠離我們而去。它拒絕了一條統一的途徑,以便把實驗的和理論的計算機科學集成爲課程的有機組成部分。

    今天,本領域已經足夠成熟,使我們能用新的水到渠成的方式來描述它的知識本質。這在計算機科學與工程博士單位評審部的領導者們1984 7 月在猶他州召開的會議上進行了討論。這一討論及其他類似的討論推動ACM IEEE 計算機學會組成攻關組去開創新途徑。1985 年春,ACM 總裁Adele Goldberg ACM 教育委員會主席 Robert Aiken IEEE計算機學會熱心合作之下,任命了這個計算機科學核心攻關組。同時,計算機學會在ACM 的熱心合作下,組成了計算機實驗工作攻關組。

    我們希望,本報告所反映的核心攻關組的工作能產生比預定更多的效益。有了對本學科的核心的共同的認識,就能理順利協調這兩個學會發展行各分支學科和課題的進程。本報告可以作爲進一步討論計算機科學與工程作爲一個專業的基礎,刺激中學計算課程的提高,導致更大範圍地承認計算科學是?個學科。

我們的目的是創造一個關於本領域的新的思想方法。希經把一般性的議論融入學科的性質,尋求一個框架,但不是一個清單、一個導引,而不是一道命令。我們希望你採納這一框架,並使之適合你自身的情況。我們高興地介紹本學科的新的知識框架和各課程的新基礎。

2.       攻關組的任務

攻關組接受了三項任務:

(1)      給出計算機科學的描述,該描述要強調基本問題及已有的重要成就。這個定義必須確認,本領域在不斷變化,現在說的不過是持續進步過程中搶拍的一個鏡頭。

(2)      提出計算機科學的教學規範。該規範要符合傳統的科學標準,強調本學科能力的培養,並且把理論、實驗相設計緊密地結合在一起。

(3)      基於課程模型和學科描述,詳盡地給出計算機科學導引性課程系列的一個例子。

 我們當即把我們的任務擴展到包括計算機科學與汁算機工程,因爲這兩個領域的核心材料沒有基本區別。區別僅表現在處理這些核心材料的方式不同:計算機科學注重分析和抽象;計算機工程注重抽象和設計。這裏,計算學科(discipline of computing)一詞用來包括計算機科學和工程。

 有兩件重要的事情沒有包括在攻關組的任務之內。第一,本報告的課程推薦只列出了導引性的課程序列,末涉及整個核心課程的設計這樣重大問題。而實際上如果對核心的其餘部分沒有新的設計,所建議的導引性課程也就沒多大意義了。第二,導引性課程的目的是用嚴格而富有挑戰性的方式把學生引到整個學科領域中去。我們所列的不過是這種途徑的?個例子,或者說是我們關於計算的定義的一個"存在性證明"。我們希望各系應用本框架去確定他們自己的導引性課程,以滿足自己的需要。

3.       學科形態(Paradigms)

籍以從事本領域工作的三種主要形態,或稱文化方式,提供了我們定義計算學科的條件。

    第一個形態是理論(theory),基於數學,按統一的合理的理論發展過程.包含以下四個步驟:

(1)      特徵化研究對象(定義)

(2)      假設它們之間可能的天系(定理)

(3)      確定這些關係是否正確(證明)

(4)      解釋結果。

    數學家們認爲,當發現錯誤和矛盾時,上述過程應該反覆進行。

    第二種形態是抽象(abstraction),或稱模型化,基於實驗科學方法。按客觀現象的研究過程,包含以下四步:

(1)      形成假設;

(2)      構造模型並做出預言;

(3)      設計實驗並收集數據;

(4)      分析結果。

    科學家們希望,當模型的預言與實驗結果不符時,這些步驟應該反覆進行。雖然這一形態也可以稱爲"模型化""實驗",但我們仍採用"抽象"一詞,因爲它在學科裏面比較通用。

    第三種形態是設計(design),基於工程,按爲解決某一個問題而構作系統或裝置的過程,包含以下四步:

(1)      敘述要求;

(2)      給定技術條件;

(3)      設計並實現該系統:

(4)      測試該系統。

工程師希望,當測試表明當的系統不滿足技術條件時,上述步驟須反覆進行。

     理論是數學科學的根本:應用數學家們都認爲,科學的進展都是基於純數學的。抽象(模型化)是自然科學的根本:科學家們相信,科學進展的過程基本上都是形成假設,然後用模型化過程去求證。類似地,設計是工程的根本:工程師們認爲,工程進展基本上都是提出問題,然後通過設計去構造系統,以解決問題。關於數學、科學、工程三者哪一個更加重要的許多爭論實質上都基於一個假定:三個過程(理論、抽象或設計)的某一個是最基本的。

    然而,仔細考察計算學科可以發現,關於計算的這三個過程是如此緊密的交織在一起,以致無法分清哪一個更加基本。有許多例子分別表明,抽象和設計階段出現了理論;理論和設計階段需要模型型化,而理論和抽象階段,始終離不開設計。

     雖然這三種形態是緊密相關的,但畢竟是三種不同的形態,因爲它們代表能力不同的領域。理論關心的是揭示和證明對象之間相互關係的能力。抽象關心的是應用這些關係去做出對現實世界的預言的能力。而設計則關心這些關係的某些特定的實現,並應用它們去完成有用的任務。應用數學家、計算科學家和設計工程師一般具有互不相同的專長。

    並且,計算領域的人們要研究計算工具,以支持人們需要的信息變換過程。例如,從設計方面說,複雜的VLSI 設計和模擬系統處我們能進行微型電路的有效和正確的設計,程序設計環境使我們能有效地進行軟件設計。從模型化來說.超級計算機能評估數學模型,並做出對現實世界的預言,網絡有助於傳播科學實驗的成果。從理論來說,計算機可以做定理證明,檢查技術條件的相容性,檢查反例,演示測試情況。

計算處於應用數學、科學和工程三者的主要過程的交叉路口。這三個過程在本學科是同等重要和基本的,它是理論、抽象和設計三者唯一的交匯點。維護它們的力量是把實驗和設計作爲信息變換器的共同興趣、在這些過程各階段的計算支持的共同興趣、和在有效性方面的共同興趣。

4.       程序設計的作用

計算領域的許多活功並不是程序設計??例如,硬件設計、體系結構、操作系統結構、數據庫的應用和模型驗證??因此,認爲"計算機科學等於程序設計"是錯誤的。那麼,程序設計在本學科中的作用是什麼?在課程中地位如何?

顯然,程序設計是本學科標準的實踐活動的一部分,每一個計算工作者都必須有程序設計的能力。但這並不意味着,本學科就建築在程序設計的基礎上,也不意味着導引性課程必須是程序設計方面的課程。同樣明顯的是,涉及任何領域的特色都要通過語言,而計算學科的特色則大都寓於程序設計符號中。程序設計語言是涉足本領域特色的工具。因此.我們建議,程序設計作爲核心課程的一部分,並把程序設計語言作爲涉足計算學科重要特色的有用媒介。

5.       計算的描述

計算科學作爲一個學科的描述包含四部分:(1)要求;(2)簡短定義;(3)劃分爲分支領域;(4)分支領域的內容。我們的描述分四遍掃描,每一遍都大大詳盡?步。

我們這裏所說的僅僅是一個變化着的動態領域的搶拍鏡頭。它是一個"活的定義",它可以隨時修改,以反映本領域的成熟性和變化。我們希望,各分支領域的內容可以經常修改,各分支領域的分法可以偶爾有修改,而簡短的定義則很少修改。

5.1 要求

形成一個定義有許多方式。我們提出五個要求:

(1)      定義應該能爲本領域以外的人所理解。

(2)      定義應該是本領域以內人們的着力點。

(3)      定義必須是明確的。

(4)      它必須闡明本學科的數學、邏輯和工程的歷史淵源。

(5)      它必須指明本學科的基本問題和已有的重要成果。

     在形成描述的過程中.我們考慮了原有的幾個定義,並且得出結論,滿足這些要求的描述必須按複雜程度分層次。這裏,簡單地綜述一下其他的定義。1967 年.NewellPerlis Simon[ 5] 主張,計算機科學是研究計算機及圍繞它的主要現象的科學,而且說,反對這個定義就無異於表明其他科學都不是科學。但不管怎麼爭辯,許多人認爲,這是一個循環定義,而且對外行人過於簡略。不過,它仍是一個好的出發點,因爲我們的定義可以看作是列出了圍繞汁算機的主要現象。

     計算科學資格審查部(Computing Sciences Accreditation BoardCSAB)精心修改了上述想法,用了一個如下定義:"計算機科學是關於計算機和計算的知識的總體。它有理論、實驗和設計三部分,並且包括(1)理解計算裝置、程序和系統的理論;(2)爲概念的發展和測試所進行的實驗;(3)設計方法論,算法和實現工具;以及(4)驗證這些實現滿足要求的分析方法。"

    第三個定義說,"計算機科學是研究知識表達及其實現的科學"。這個定義過於抽象,很少人能夠對知識表達有相同的理解。具有同樣一個問題的另一個定義是,"計算機科學是關於抽象和複雜性控制的研究"。是一個對物理、數學或哲學也適用的定義。

    Abelson Sussman 說過,"計算機革命是思維方法和思維表達方法的革命"。這種變化的本質是所謂過程性認識論的出現??它是從命令性的觀點來研究知識的結構,而不是象經典數學那樣用陳述性的觀點來研究。數學提出一個精確處理"是什麼"的問題的框架,而計算則提出精確處理"怎樣做"的問題的框架[ 1]

5.2 簡短的定義

    計算學科是對描述和變換信息的算法過程的系統研究,包括它的理論、分析、設計、有效性、實現和應用。全部計算科學的基本問題是"什麼能(有效地)自動進行?

5.3 劃分爲分支領域

    我們花了相當的力氣,把整個學科分爲若干分支領域。一開始,我們想盡量少分一些分支領域.例如模型化和實現,或者算法和機器。然而,我們提出的各種分支都太抽象,界限也很模糊,恐怕大部分人都無法順利地確認它們。

    然後,我們認識到,學科的基礎包含在三個基本過程中??理論、抽象和設計。各分支領域也是用這些基本過程來完成它們自身的目的的。因此,各分支領域及其與這三個基本過程的關係的描述將是有用的。必須滿足下列四個條件,才能算得上一個分支領域。

(1)      科目內容基礎的協調一致;

(2)      實質性的理論部分;

(3)      有意義的抽象;

(4)      重要的設計和實現。

    並且,每一個分文必須被一個研究羣體或幾個相關的研究該分支的羣體所確認。

    理論包括髮展本分支數學基礎的過程。這些過程又由其他領域的理論來支持。例如,算法和數據結構分支包括複雜性理論,它本身又需要圖論支持。抽象處理潛在實現的模型化。這些模型忽略?些技術細節,而保存本質特性,服從分析的需要,提供計算被模型化系統行爲的預言所需的工具。設計的過程是給定問題、把問題變換爲設計的技術條件,然後,反覆設想和考察各種各樣的解,直到一個可靠的、可維護的、有詳細資料的、經過驗證的、付出的代價大小也符合要求的設計做比來爲止。

    我們認爲本領域可以分爲幾個分支領域:

(1)      算法和數據結構

(2)      程序設計語言

(3)      體系結構

(4)      數值和符號計算

(5)      操作系統

(6)      軟件方法學和工程

(7)      數據庫和信息檢索系統

(8)      人工智能和機器人學

(9)      人機通信

5.4 分支領域的進一步研究

    爲了結出各分支領域的內容,我們發現,用圖1.1 所示的9 ×3 矩陣是有用的。每一行對應一個分支領域,各列分別定義它的理論、抽象和設計。每一格填入相應的句子,以描述有關事項及有意義的成就。理論抽象設計

1.1 計算學科的定義矩陣課程設置模式

已有大量科學文獻的某些帶共同性的羣體沒有作爲分支領域來看待,出爲它們在整個學科內部是基本的東西。例如,並行性滲透到所有分支領域(包括並行算法、並行語言、並行結構等),也遍及到理論、抽象和設計。類似的情況還有安全性、可靠性和性能評估。計算機科學家關心的是矩陣的前兩列,而計算機工程師關心的是後兩列。這給出的計算學科的全部描述見本文附錄。

 

6.       課程模型

6.1 學科能力的培養

    教育的目的是培養在某一領域的工作能力。工作能力,也就是有效的活動能力,是評價一個人在本領域進行獨立實踐活動的水平的標準。這個評價標準是基於本領域的歷史的。培養能力的教育過程有五個步驟:(1)引起學習某領域的動機;(2)表明該領域能做什麼;(3)揭示本領域的特色;(4)這些特色的歷史根源;(5)實踐這些特色[ 4] 。這?模型隱含了課程設置中一些有趣的問題。第一個問題是,計算領域的工作者應該具備什麼能力?有兩類能力:

    1.面向學科的思維能力:發現本領域新的特性的能力。這些特性導致新的活動方式和新的工具,以便使這些特性能被其他人所利用。

    2.使用工具的能力:使用本領域的工具有效地進行其他領域實踐活動的能力。

   我們建議,把面向學科的思維能力作爲計算專業課程設置的主要目的。同時,計算專業工作者必須充分熟悉工具,以便與其他學科的人們有效地合作,進行那些學科的設計活動。

    對能力的調查表明,某些領域目前設置的核心計算課程是不合適的。例如,計算領域的歷史內容常不被強調,以致許多畢業生忽視計算學科歷史,重複原來的錯誤。許多計算專業的學生畢業後進入商業數據處理,而他們學習的課程並沒有注重培養這方面的能力。這種能力究竟應該由計算系來培養,還是由商業系來培養是一個長期爭論的老問題。面向學科的思維能力必須基於堅實的數學基礎,而理論目前還沒有成爲大多數計算課程的有機組成部分。計算領域典型的實踐活動包括設置和進行實驗、爲大型協作課題作貢獻、以及和其他學科的交流,以便讓他們能有效地運用計算學科。但是,大多數課程忽視實驗室操作、集體項目和交叉學科研究。

    前面的討論還沒有完全說清楚,計算課程究竟應該取得什麼結果。我們在這裏,也不打算作徹底的分析。我們希望,這個問題在新的核心計算課程設計時優先加以考慮。

6.2 終身學習

    應該設計一個課程,使畢業生們感到他們需要畢生學習。許多課程都是按講授的形式,給出"答案",而不是強調尋求全部學習基礎的過程。我們建議下屬委員會考慮改變教學規範,使學生們能夠善於提出問題,查閱計算科學文獻,並準備學習一輩子。

 

7.       導引性課程系列

      在本課程設置模式中,引出本領域的學習目的和顯示本領域的內容必須在課程的講授和實踐之前。導引性課程系列的目的就在於此。要培養學生能力的那些主要的計算領域必須充分深入和嚴格的教給學生。使他們領會學科的力量,以從取得在這些學科獨立工作能力能夠帶來的利益。然後,課程再系統介紹該領域,揭露新概念和新性質,並讓學生們實踐。

    因此,我們建議導引性課程包含正規講授和密切相關的每週一次實驗。講授強調基本原理、實驗室技術知道怎麼做。

     這種方式和過去物理科學和工程所用的一樣。講授強調長久不變的原理和概念,而實驗室強調暫時性的材料和與當前技術有關的技能。例如,課堂上講授算法的設計與分析,或者功能層網絡協議的組織。而在相應的實驗課上,學生們將爲課堂上分析的算法寫程序,並測量其遠行時間,或者安裝和測試網絡接口,並測量他們的包吞吐量。

    根據這個意見,計算機科學的第一門課將不僅是介紹程序設計、算法和數據結構,還要介紹其他各分支學科的材料。數學和其他理論也要在合適的地方融合進去。我們希望導引性課程能夠包含對整個學科嚴格而富有挑戰性的綜述。Feynman 的物理講座是我們所希望的的導引性課程的範例。

   如果我們只強調按照本建議重新設計導引性性課程,而不重新設計全部的大學課程,那將是一個嚴重的錯誤。物理系的經驗就包含了許多值得計算系借鑑的教訓。

7.1 預備知識

     我們假定計算專業的學生在下列方面有一定基礎:某種語言的程序設計、某些基於

計算機的工具的使用經驗,如字處理、展開片(Spreadsheet)[ ] 和數據庫。由於計算機在高中和家庭的廣泛使用,似乎可以假定大多數進入大學的學生已有這種基礎.而只是對其他學生提供程序設計的一個補習性的課程就可以了。然而,我們發現,在高中對程序設計進行適當準備的假定是大有爭議的。事實上很少有適當的準備。因此,我們建議計算系在導引性課程之前,提供程序設計和計算機工具的初等教程作爲預備知識。並且建議系裏允許在高中已有適當準備的學生免修該課。

    數學方面的正式的預備知識和公用基礎知識就更難說清楚,而必須因地制宜。然而,計算科學資格審查部要求相當的數學知識,包括離散數學、微積分、概率論和統計。這些要求有些過分。在我們的初等計算課程的描述中,給出了這九個分支領域所需要的數學知識。我們還儘可能的給出了每一個課程模塊所需要的數學基礎。這樣,各系可以自己去平衡他們所開的課程及對數學知識的要求。有時,爲了某個特定的計算課題,而需要引入適當的數學基礎,這是合適的。一般來說,應該讓學生們儘早看到在他們學習計算的過程中

需要用到的有關的數學。

[ ] :譯文爲展開片,實際指的應該是電子表格

7.2 模塊的組織

導引性課程應能給出本領域統一的基礎,又能按靈活而自然的方式由上一個題目轉向下一個題目。因此,把這個課程分爲九部分,每一部分對應一個分支領域是不合適的。這種簡單的對應將使課程變成一個大衆燴,各部分之間很難連接。

滿足這一要求的題目順序是:

基本算法概念

計算機組織("?諾依曼")

數學的程序設計

數據結構和抽象

可計算件的限制

操作系統和安全性

分佈式計算和網絡

人工智能模型

文件和數據庫系統

並行計算

人機接口

     我們把題目分成11 個模塊,每一模塊包括該科目的有代表性和挑戰性的材料,而不是對每一部分材料膚淺的拼湊。每一模塊從定義矩陣的幾個方塊中抽取材料。因而,許多模塊將不與定義矩陣的各行一一對應。例如,我們給出的課程的第一個模塊題爲基本算法概念。它只限於研究時序算法,包括形式化和理論的作用、程序設計方法、程序設計概念、有效性和特定算法。它抽取定義矩陣的第一、第二、第四和第六行的信息。後面關於分佈式計算和網絡以及關於並行計算的模塊推廣第一模塊的材料,並從定義矩陣的第三和第五行中抽取新的材料。

    一般來說,每一模塊包括講授所需的理論和大部分抽象的課時。理論一般只在需要時才引入。每一模塊都緊密結合實驗課,實驗作業的種類包含在模塊規範中。我們草擬的規範是一個三個學期的課程系列,每學期講授42 次並進行35 次實驗。該規範本文未予列出,但已收入報告全文中。

    我們重申,本規範只是企圖提供從學科描述到導引性課程系列的對應關係的一個實例,並不是所有導引性課程的一個清單。其他方式可參考某些學院和大學現有的導引性課程。

8.       實驗室

我們描述了一個課程,它把原理和技術分開,但保持二者的統一。我們已經推薦,課堂上講授原理,實驗室培養技術,使二者得以緊密結合。

實驗室工作有三個目的:

    1.實驗室工件應該表明,課堂上講授的原理怎樣運用於實際軟件和硬件的設計、實現和測試。實驗室必須提供具體經驗,以幫助學生理解抽象概念。這些經驗對提煉學生關於實際計算的直覺知識、對強調建造正確有效的計算機程序和系統所需的腦力勞動都是極其必要的。

    2.實驗室要強調怎樣做才能導致一個好的計算的過程。必須強調程序設計,而不光是程序本身。必須強調實驗室技術、硬件能力的理解、軟件工具的正確使用;文檔的正確使用以及實驗和方案的適當文檔。主機上要求許多的軟件工具,以利於在附加的子系統

上構作、控制和監控實驗。實驗室應教會學生如何適當的使用這些工具。

    3. 實驗室應介紹試驗方法,包括試驗的使用和設計、軟件和硬件監控器、結果的統計分析以及研究結果的適當陳述。學生們必須學會把細心地試驗和粗心地觀察區別開來。爲了達到這些目的,必須仔細計劃和管理實驗室的工作。學生們必須按時到達實驗室。一般每週三小時。實驗主作業必須事先計劃好,並且給每一個學生書面的實驗目的與方法。這份幅面材料的深度要和學生過去的實驗經驗相適應。對最初的幾個實驗,這份材料需要更加詳細。實驗室作業應在實驗主教師的指導下進行,以保證每個學生運用正確的方法。導引性課程的實驗需要仔細輔導,而且需要詳細計劃試驗步驟。因此,平均每個學生所需的實驗室工作人員人數應該比高級實驗室多一些。

    驗課題應與課堂講授的材料相協調。個人實驗課題一般探討硬件與軟件的結合。某些實驗室作業強調簡化軟件開發過程的技術與工具;有些則強調分析和測量已有軟件或比較已知的算法;有的則強調基於課堂上所學原理的程序開發。

    實驗室作業必須是自包含的。也就是說,中等水平的學生應能在指定時間內完成。實驗室作業應該鼓勵學生自己發現和學習一些東西。應該要求學生有一個試驗記錄本,以記錄試驗、觀察和數據。同時,要求學生保存他們的軟件,並建立軟件庫,以備以後實驗課題之用。

    我們希望,實驗窒應該和課堂一樣,給學生留家庭作業,並要求使用實驗室管轄之外的計算機。換句話說,有組織的實驗課是補充,而不是代替通常的程序設計作業和書面作業。

    在相當數量的程序開發實驗室裏,作業是修改或完成由教師給出的一個已有的程序。這就強制學生去讀寫好了的程序,並提供軟件集成的經驗,產生更大、更使學生滿意的程序。

   計算技術是在不斷變化的。因此,對實驗室應該有的硬件系統、軟件系統、儀器和工具,很難給出詳細的技術要求。實驗室設備和人員的選擇應遵循下列原則:

    1.實驗室必須裝備有跟上時代的系統和語言。程序設計語言對學生形成對計算的看法有重要影響。實驗室應該使用那些能使學生養成良好習慣的系統。尤其重要的是,在覈心課程裏要避免使用過時的系統(硬件和軟件)

    2.硬件和軟件要加強維護。有故障的裝置將使學生受挫,干擾他們的學習。必須配備合適的工作人員來維護實驗室的硬件和軟件。這和其他學科的實驗室情況類似。

    3.功能齊全是重要的(這包括分時系統的適當的響應時間)。在學生剛開始接觸系統時,限制學生在語言或系統的一個小的子集中也許是有用的,但當學生有了進步,這些限制就應該取消。

    4.好的程序設計工具是需要的。編譯器受到很大重視,但其他程序設計工具也同樣經常用到。例如,在UNIX 系統中,學生們必須用像emacs 那樣的編輯器,並學會使用像shellgrep,awk make 等工具。存儲和處理的軟件工具必須充足,使實驗室裏隨時都可以用這些工具。

    5.必須提供硬件和儀器方面必要的支持。某些課題要求學生連接硬件單元的線路,進行信號測量,監視數據通路等。應該能充分提供小部件、連接器、電纜線、監視裝置和測試儀器等。

    IEEE 計算機學會的面向目的的實驗室開發攻關組對此作了深入的研究。他們的報告

討論了本課程各種水平的實驗室所需資源(即人力和設備)

9.       資格審查

以本課程爲倒的資格審查工作在計算科學資格審查部(CSAB)的標準指導下已經完成。

如何適應CSAB 標準的詳細情況超出了本委員會的範圍。

10.    結論

本報告企圖提出關於計算科學作爲一個學科的新思路,即在揭示內容時,強調基本概念、原理和特性。同時,也建議按照其他學科的教育模式重新設計本學科的核心課程。先講解有用特性的存在性,然後進行培養能力的實踐。這一方法用一個嚴謹的導引性課程爲例,說明如何在課堂卜講授概念和原理,在有關的公共實驗裏教授技術。

    系裏不能簡單地用新課取代現有的導引性課程,必須重新設計該課,使新的導引成爲統一整體的一部分。因此,我們建議ACM 成立一個委員會繼續工作,以完仝核心課程的重新設計。爲了使新課程成爲本領域的有機組成部分,許多實際問題有待研究。

例如:

1.基於新概念形式化,教師需要重新設計他們的課程。

2.現在還沒有基於本文框架的教材或教科書。

3.爲了本文建議的教育使命,目前大多數系的實驗室、設備和材料都小相適應。

4.助教和教師都不熟悉這一新觀點。

5.在高中階段對計算科學準備很好的不多。我們知道,我們的許多建議是有挑戰性的,距離實現還有很長的路要走。但是,我們相信,按照本建議改進計算科學教學的努力是有價值的,歡迎你和我們一起爲此而努力。

11.    附錄計算科學作爲一個學科的定義

計算機科學與工程是對描述和變換信息的算法過程其理論、分析、設計、效率、實現和應用??的系統的研究。全部計算科學的基本問題是,什麼能(有效地)自動進行[ 23] 。本學科和算法理論、數理邏輯和存儲程序式電子計算機的發明一起,形成於40 年代初。

計算的淵源可以深入擴展到數學和工程。數學把分析分到這一領域,而工程把設計分到這領域。本學科包括它自己的理論、實驗方法和工程。這與許多其他的自然科學不同。許多其它的自然科學和運用其成果的工程學科是分開的(例如化學和化學工程原理)、計算機科學與工程卻是不可分的,因爲本學科的科學與工程形態從根本上是相互滲透的。

計算作爲數學的主要對象已有幾千年了。自然現象的許多模型被用來導出方程,它的解就導致那些自然現象的預言。例如軌道的彈道計算、天氣預報和流體的流動等。解這些方程的許多方法已經給出。例如線性方程組的解法、微分方程的解法和求函數的積分。幾乎在這同時,機械系統設計中所需要的計算成爲工程主要關注的對象。例如計算靜態物體壓力的算法、計算運動物體慣量的算法和測量比我們直覺要大得多或小得多的距離的方法。

工程和數學長期合作的一個成果一直是用於計算的機械工具。某些測量員和航海家的儀器可追溯到幾千年前。Pascal LEIBNIZ 17 世紀中葉製造了算術計算器。在19 世紀30 年代,Babbage 設想了一個"分析機",可以用機械,無誤地計算對數、三角函數和其他般的算術函數。他的機器雖然沒有完成,卻給後來的工作以啓發。到20 世紀20 年代,Bush 製造了一臺電子模擬計算機,來解一般的微分方程組。同時,出現了能做加.減、乘、除和開平方的電動計算機。後來,電子觸發器成爲從這些機器到無運動部件的數字計算機的橋樑。

 邏輯是數學的一個分支,研究推斷合理性準則和推理的形式原理。自從歐幾里得時代以來,它一直是嚴格的數學和科學論證的工具。從十九世紀開始,人們開始尋找通用的邏輯系統,它應該在已知的演繹系統中看不到不完全性。在完全系統中,就可以機械地確定任何給定的陳述是真還是假。Godel 1931 年發表了他的"不完全性定理",指出這種系統是不存在的。到20 世紀30 年代後期,圖靈探索了通用計算機的想法,這種通用計算機能夠模仿任何其他計算機器上一步一步運箅的過程。他的發現與 GODEL 的想法類似,即某些良好定義的問題不能用任何機械的過程來解決。邏輯之所以重要,不僅因爲它深刻地看到了自動計算的限制,而且因爲注意到了符號串,或者已經編碼的數字。既可解釋成數據,又可解釋成程序。

這一看法成爲區別存儲程序式計算機和運算機械的關鍵的想法。算法步驟被編碼成機器表示,並存放在存儲器中,以後使用時譯碼,並由處理器執行。機器碼可以從高級符號形式(程序設計語言)機械地推導出來。

這就是關於古代計算和邏輯符號運算錯綜複雜的歷史淵源,以及近代關於電子學和信息的電子表示的線索。它們導致了計算學科的誕生。

 我們確認了計算科學的幾個分支領域:

1.        算法和數據結構

2.        程序設計語言

3.        體系結構

4.        數值和符號計算

5.        操作系統

6.        軟件方法學和工程

7.        數據庫和信息檢索

8.        人工智能和機器人學

9.        人機通信

     每一分支領域都有科目的公用基礎、本質的理論部分、有意義的抽象和重要的設計與實現問題。理論研究作爲該分支領域基礎的數學的發展。包括支撐理論,象圖論、組合論或形式語言。抽象(模型化)處理潛在的實現模型。這些模型忽略一些技術細節,而保存本質特性,並提供預言未來行爲的工具。設計的過程是給定問題、導出要求和技術條件、反覆研製和測試樣機,從而實現個系統。設計包括實驗方法。計算科學中的實驗方法有好幾種形式:測量程序和系統,驗證假設的合理性、通過樣機使抽象變爲現實。

    雖然軟件方法學本質上說屬於設計,但它包含理論和抽象的實質性成分。因此,我們把它作一個分支領域。另一方面。並行和分佈式計算滲透到所有分支領域和它們的個層次理論、抽象和設計)。它們既未作爲一個分支領域,也不作爲某分支領域的一個層次。以下各節提供各分支領域的三個層次的細節。理論與抽象、抽象設計的界限必然是模糊的,隨各人的胃口可能會有所不同。

    我們的目的是通過列出學科的土要特點來提供學科的指南,但不是詳盡的羅列。應該記住,這個學科指南小是一個課程計劃,它只是設計一個課程所需的框架。同時應該記住,這個學科指南是一個不斷變化着的有機體的瞬間搶拍鏡頭。它需要不斷考驗和定期修改。

一、  算法和數據結構

     本領域研究一些特定類型的問題及它們的有效的解。基本問題包括:對給定類型的問題,最好的算法是什麼?它們要求多少存儲空間和時間?空間與時間的折衷方案是什麼?存取數據最好的方法是什麼?最好算法的最壞情況是什麼?算法的運行按平均來說好到何種程度?算法一般化到何種程度??即什麼類型的問題可以用類似的方法處理?

1.理論

算法和數據結構領域理論的主要原理是:

(1)可計算性理論。它定義機器能幹什麼、不能幹什麼。

(2)計算複雜性理論。它告訴你如何測度町計箅函數的時空要求,把問題的大小和解決該問題算法的最好或最壞情況的性能聯繫起來,並提供證明對問題的任何可能解的下界的方法。

(3)算法和算法類的時間和空間界限。

(4)難解性(intractability)水平。例如,確定性的多項式時間內可解的問題(P-問題);非確定性的多項式時問內可解的問題(NP-問題);以及有效的並行機可解問題(NC-問題)

(5)從算法的數據流要求到機器通訊通路的並行計算、下界和影射。

(6)在時空上比確定性算法更加有效、且以足夠高的概率獲得TF 確果的概率算法。蒙特卡洛方法。

(7)密碼術。

(8)圖論、遞歸函數、遞推關係、組合論、微積分、歸納、謂詞邏輯和時態邏輯(Temporallogic)、語義學、概率和統計等支撐領域。

2.抽象

算法和數據結構的抽象的上要部分是:

(1)對重要問題類的有效的最優的算法和對最好、最壞和一般性能的分析。

(2)控制和數據結構對各種問題類時空要求的影響的分類。

(3)重要的技術類型,像分治(divide-and-conquer)、格里地算法、動態規劃、有限狀態機解釋器、堆棧機解釋器。

(4)並行和分佈式算法,把問題分由可以在不同處理器上執行的任務的劃分方法。

3.設計

算法和數據結構領域的避計和實驗的主要內容是:

(1)時最要問題類的算法的選擇、實現和測試。這些問題類包括搜索、排序.隨機數產葉和結構模式匹配。

(2)對於許多類型的問題都可以使用的通用方法的實現和測試。如雜湊法(hashing)、圖和樹。

(3)分佈式算法的實現和測試。例如網絡協議、分佈式數據更新、信號(semaphores)、死鎖檢測器和同步方法。

(4)存儲管理的實現與測試。例如無用單元收集、夥伴系統(buddy system)、表(lists)、表格(tables)和分頁。

(5)對組合問題啓發式算法的大量實驗測試。

(6)能夠安全可靠和祕密通信的密碼協議。

 

二、  程序設計語言

     本領域研究執行算法的虛擬機的符號表達、算法和數據的符號表達以及從高級語言到機器碼的有效的翻譯。基本問題包括:由一鍾語言給出的虛擬機的可能的組織 (數據類型、運算、控制結構、引入新類型和運算的機制)是什麼?這些抽象怎樣在計算機上實現?用什麼樣的符號表達(語法)可以有效地指明計算機應該做什麼?

1.理論

程序設計語言領域的理論的主要部分是:

(1)形式語言和自動機,包括語法分析和語言翻譯的理論。

(2)圖靈機(過程性語言的基礎)

(3)形式語義:定義計算機數學模型及模型、語法和實現之間關係的方法。主要的方法包

括標誌的、代數的、操作的和公理的語義。

(4)支撐領域:謂詞邏輯、時態邏輯、近世代數和數學歸納。

2.抽象

程序設計語言領域的抽象的主要部分包括:

(1] 基於語法和動態語義模型的語言的分類:即靜態型、動態型、功能的、過程性的、面向對象的、邏輯的,說明性的、報文傳遞和數據流。

(2)語言按應用領域的分類:即商業數據處理、模擬、表處理和圖形。

(3)程序結構的主要語法和語義模型的分類:即過程分級、功能合成、抽象數據類型和通信的並行過程。

(4)每種語言的主要類型的抽象實現模型。

(5)語法分析、編譯、解釋和開標碼優化的方法。

(6)語法分析器、掃描器、編譯器部件和編譯器自動產生的方法。

3.設計程序設計語言傾向的設計與實驗的主要內容是:

(1) 和特定抽象機器(語義)和語法一起,能形成統一的一可實現的整體的特定語言。例如,過程性的(COBOLFORTRANALGOLPascal AdaC)、功能的(Lisp),數據流(SISALVAL)、面向對象的(SmalltalkCLU),邏輯(Prolog),串處理 (Snobol),和並行性(CSPOccamConcurrent PascalModula2)

(2)特定類型語言的指定的蠻現方法:運行時間模型,靜態和動態執行方法、打印檢查、存儲和寄存器分配、編詳器、交叉編徉器和解釋器、在程序巾尋找並行性的系統。

(3)程序設計環境。

(4)語法分析器和掃描器的產生器(例如YAccLEx)、編譯器產生器。

(5)語法和語義錯誤檢查程序、剖面(profing)、查錯和跟蹤。

(6)程序設計語言方法對文件處理功能的應用,如製表、圖、化學公式、展開片、方程式、輸入和輸出以及數據開關。其他應用,如統計處理。

三、  體系結構

     本領域研究將硬件(和相應軟件)組織成有效和可靠系統的方法。基本問題包括:在一個機器中實現處理器、存貯和通訊的好方法是什麼?我們如何設計和控制大的計算系統並且有說服力地表明,它們能夠在有錯誤和故障的情況r 完成預期的J.作?什麼類型的體系結構能使許多處理單元有效地協同工作,實現一個計算的並行?我們怎樣測度計算機的性能?

l.理論

體系結構領域的理論主要部分是:

(1)布爾代數

(2)開關理論

(3)編碼理論

(4)有限狀態機理論

(5)統計、概率、排隊論、可靠性理論、離散數學、數論和不同數制下的算術等支撐領域。

2.抽象

體系結構領域的抽象主要部分是:

(1)把功能和行爲聯繫起來的電路的有限狀態機和布爾模型。

(2)由基本元件綜合出系統的其它一般的方法。

(3)在有限域上計算算術函數的電路和有限狀態機的模型。

(4)數據通路和控制結構的模型。

(5)對各種模型和工作負荷情況下指令系統的優化。

(6)硬件可靠性:冗餘,差錯檢測,恢復和測試。

(7)VLSI 裝置設計中空間、時間和組織的折衷。

(8)各種計算模型的機器的組織:時序的、數據流、表處理、陣列處理、向量處理和報文傳送。

(9)分級設計的確定:即系統構成級、程序級、指令系統級、寄存器級和門級。

3.設計

體系結構領域的設計與實驗的上要內容是:

(1)快速計算的硬件單元。例如算術函數單元、高速緩衝存儲器。

(2)所謂馮.依曼機器(單指令序列存貯程序式計算機):簡單指令系統計算機(RIsc)和複雜指令系統計箅機(CISC)實現。

(3)存儲和記錄信息、檢測和改正差錯的有效方法。

(4)對差錯的特殊處理途徑:恢復、診斷、重構和後備過程。

(5)VISI 電路設計的計算機輔助設計(CAD)系統和邏輯模擬、版圖生成程序、故障診斷、硅編譯器。

(6)各種計算模型的機器實現;如數據流、樹形、LISP 、超立方(hypercube)、向量和多微處理機。

(7)超級計算機,如Cray Cyber 機。

四、  數值和符號計算

     本領域研究有效和精確地求解由系統的數學模型導出的方程的一般方法。基本問題包括:我們怎麼才能用有窮離散過程去精確地逼近連續或無窮的過程?我們怎麼處理逼近導致的誤差?怎樣才能按照給定精度很快地解出給定類型的方程?怎樣對方程進行符號運算,例如積分、微分和化簡爲最小項等?怎祥把這些問題的回答加入到有效的、可靠的、高質量的數學軟件包中去?

1.理論

數值和符號計算領域的理淪的主要部分是:

(1)數論

(2)線性代敬

(3)數值分析

(4)非線性力學

(5)微積分、實分析、複分析和代數等支持領域。

2.抽象

數值和符號計算領域抽象的主要部分是:

(1)把物理問題形式化爲連續的(有時離散的)數學模型。

(2)連續問題的離散逼近。線性和非線性系統解的向後誤差分析、誤差傳播和穩定性。特殊情況下的特殊方法,例如快速富里葉變換和泊松解答器。

(3)可由正規網孔和邊界值給定的大類問題的有限元模型,相應的迭代方法和收斂理論:直接、隱含、多柵格、收斂率。並行解法。數值積分時自動格柵精煉。

(4)符號積分和微分

3.設計

數值和符號計算領域設計和實驗的主要內容是:

(1)高級問題形式化系統,如CHEM WEB

(2)爲線性代數、常微分方程、統計、非線性方程和優化而特殊設計的程序庫和程序包,

例如LINPACKKEISPACKElLPACK

(3)將有限元算法映射到特定結構的方法例如,這些特定結構可能是超立方體上的多柵格

(4)符號運算,例如MACSYMA REDUCE,能進行有力的非顯然的運算,特別是微分、積分和表達式到最小項的簡化。

 

五、  操作系統

     本領域研究允許多種資源在程序執行中有效配合的控制機制。基本問題包括:在計算機系統運行的各級上可見對象和允許的操作是什麼?對每一類資源(某一級上的可見對象),允許它們有效使用的最小操作集是什麼?怎樣組織接口,使得用戶只處理資源的抽象形式,而可以不管硬件的實際細節?對作業調度、存儲器管理、通信、軟件資源存取、併發任務間的通信、可靠性和安全的有效控制策略是什麼?系統應該在功能上可以擴展,只要反覆應用步量的構造規則就可以了。那麼,這種擴展應遵循的原則是什麼?怎樣組織分佈式計算,使得許多由通信網絡連結起來的自治的機器能夠參與同一計算,而詳細的網絡協議、主機位置、帶寬和資源名稱,人都是不可視的?

1.理論

操作系統領域理論的主要部分是:

(1)併發性理論:同步、確定性和死鎖。

(2)調度理論,特別是處理器調度。

(3)程序行爲和存儲器管理的理論,包括存儲分配的最優策略。

(4)性能模型化與分析。

(5)存儲器包裝、概率論、排隊論、排隊網絡、通信和信息論、時態邏輯和密碼學等支持領域。

2.抽象

操作系統領域抽象的主要部分是:

(1)允許用戶不考慮實際細節對同一類型資源進行操作的抽象原理(例如,面向進程而不是處理器,虛擬存儲器而不是主從分級,文件而不是磁盤)

(2)用戶接口可以察覺的對象到內部計算結構的束縛(binding)

(3)重要子問題的模型,這些子問題的例子有進程管理、存儲器管理、作業調度、二級存儲管理和性能分析。

(4)分佈式計箅的模型。例如顧客和服務器、合作時序進程、消息傳送和遠程過程調用。

(5)安全計算模型。例如存取控制、鑑別(Authentication)和通信。

(6)網絡。包括分層協議、命名、遠程資源使用、幫助服務和局部網絡協議,如記號傳送、分時總線。

 

3.設計

操作系統領域的設計與實驗的主要內容是:

(1)分時系統、自動存儲分配器、多級調度器、存儲管理器、分級文件系統、及其他作爲商業性系統基礎的系統部件等的樣機。

(2)建造操作系統的技術,這些操作系統的例子是UNIXMulticsMachVMS,和MS-DOS

(3)建造實用程序庫的技術,這些實用程序包括編輯器,文件形成器、編譯器、連接器和設備驅動器。

(4)文件和文件系統。

(5)排隊網絡模型和實際系統性能評估的模擬程序包。

(6)網絡結構,如以太網、FDDI 、令牌環網、SNA DECNET

(7)包含在國防部協議集(TCPIP)中的協議技術、虛擬電路協議、交互式網絡(internet)、實時會議和X.25

六、  軟件方法學和工程

     軟件領域研究滿足技術要求、安全、可靠、可信的程序和大型軟件系統的設計。基本問題包括:在程序和程序設計系統的開發背後的原理是什麼?怎樣去證明程序或系統滿足它的技術要求?怎樣上給定技術要求,使之不遺漏重要的情況,而且可以分析它的安全性?怎樣使軟件系統通過不同階段不斷改進?怎樣使軟件設計得易理解和易修改?

1.理論

軟件方法學和工具領域理論的主要部分是:

(1)程序驗證和證明。

(2)時態邏輯。

(3)可靠性理論。

(4)謂詞演算、公理語義學、和認知心理學等支撐領域。

2.抽象

軟件方法學和工具抽象的主要部分是:

(1)定義技術要求的方法。如謂詞變換器、程序設計演算、抽象數據類型和弗洛依德-霍爾(Floyd-Hoare)公理化符號。

(2)方法學,如逐步提煉、模塊化設計、模塊、分離編譯、信息隱藏(informationhiding)、數據流和抽象層次。

(3)程序開發自動化的方法。例如,文本編輯程序,面向語法的編輯程序和屏幕編輯程序

(4)可信計算的方法學;例如,容錯,安全性,可靠性,恢復,N 版本程序設計,多方式冗餘,和檢查點插入。

(5)軟件工具和程序設計環境。

(6)程序和系統的測度和評估。

(7)軟件系統到特定機器結構的匹配問題域。

(8)軟件研製的生命週期模型。

3.設計

軟件方法學和工具領域毆計和實驗的主要內容是:

(1)技術要求描述語言(PSL2IMA JO)、構造管理系統(如在Ada APSE)和修改控制系統(RCSSCCS)

(2)指向語法的編輯器、行編輯器、屏幕編輯器和字處理系統。

(3)在軟件開發實踐中倡導和使用的特定方法,如HDM,及DijkstraJacksonMillsYourdon 等人倡導的方法。

(4)測試的過程和實踐(例如,遍歷、手模擬、模塊間接口的檢查、測試集的程序通路列舉和事件跟蹤),質量保證和計劃管理。

(5)程序開發和查錯.剖面分析.文本格式化和數據庫操作的軟什工具。

(6)像國防部那樣的安全計算系統的標準級和驗證過程的技術要求。

(7)用戶接口的設計。

(8)設計非常人的可靠、容錯和可信的系統的方法。

七、  數據庫和信息檢索系統

     本領域研究對大量持續的分享的數據集合的組織,使之能夠進行有效地查詢和刷新。基本問題包括:用什麼樣的模型化概念去表示數據元和他們之間的關係?怎樣把存儲、定位、匹配和檢索等基本操作組合成有效的事務處理?這些事務處理怎麼與用戶有效地交互作用?怎樣把高級查詢翻譯成高性能的程序?什麼樣的機器結構能導致有效的檢索和刷新?怎樣保護數據,以抵制非法存取,泄露或破壞?怎樣保護大型數據庫不會由於同時刷新而導致不相容?當數據分散在許多機器L 時,怎樣使保護和性能二者得以兼顧?怎樣索引和分類正文,以達到有效的檢索?

1.理論

數據庫和信息檢索系統領域理論的主要部分是:

(1)關係代數和關係演算。

(2)相依性理論。

(3)併發理論、特別是可串行的事務處理、死鎖和多複製件的同步更新。

(4)統計推斷。

(5)排序和搜索。

(6)性能分析。

(7)作爲支持理論的密碼學。

2.抽象

數據庫和信息檢索系統抽象的主要部分是:

(1)表示邏輯結構和數據元之間關係的模型,包括關係模型和實體關係模型。

(2)爲快速檢索的文件的表示,如索引、樹、反演和相聯存儲。

(3)保證更新時數據庫完整性(相容性)的方法,包括多複製件的併發更新。

(4)防止非法泄露或更改以及極小化統汁推斷的方法。

(5)對不同類型數據庫提出詢問的語言(例如,超正文、正文、空間的、圖形、圖象、規則

)。對信息檢索系統也類似。

(6)模型,例如超正文,它允許文件包含多級正文.幷包括顯示、圖形和聲音。

(7)人的因素和接口。

3.設計

數據庫和信息檢索系統領域設計的主要內容是:

(1)設計關係、分級、網絡和分佈式數據庫的技術。

(2)設計數據庫系統,如INGRESSystem RdBASE III DB-2 的技術。

(3)設計信息檢索系統,如LEXISOsiris Medline 的技術。

(4)安全數據庫系統的設計。

(5)超正文系統,如NISNoTeCardIntermedia,和Xanadu

(6)把大型數據庫錄入磁盤存儲器的技術。

(7)把大型只讀數據庫存入光存儲媒介的技術,例如CDROM WORMS

八、  人工智能和機器人學

     本領域研究動物和人類(智能)行爲模型。基本的問題包括:摹本的行爲模型是什麼和我們怎樣建造機器來模擬它們?由規則賦值、推理、演繹和模式計算所描寫的智能可以達到什麼程度?由這些模型模擬行爲的機器最終能達到什麼性能?感知的數據應如何編碼,使得類似的模式有類似的碼字?驅動碼怎樣和感知碼相聯?學習系統的體系結構如何,以及這些系統如何表示他們對外部世界的知識?

1.理論

人工智能和機器人學領域理論的主要部分是:

(1)邏輯:即單調的、非單調的和模糊的。

(2)概念相依性。

(3)識別。

(4)自然語言理解的語法的和公理的模型。

(5)機器人運動和機器人用的外部世界模型中的運動學和力學。

(6)結構力學、圖論、形式語法、語言學、哲學和心理學等支持領域。

2.抽象

人工智能和機器人學領域抽象的主要部分是:

(1)知識表示(例如,規則、框架、邏輯)和處理它們的方法(例如,演繹、推理)

(2)自然語言理解和自然語言表示的模型,包括音素表示、機器翻譯。

(3)語音識別和合成、正文到語音的翻譯。

(4)推理和學習模型,例如,非必然性、非單調邏輯、貝葉斯推斷、信念。

(5)啓發式搜索方法、分枝限界法、控制搜索。

(6)模仿生物系統的機器結構,例如,神經網絡、連接機制,稀疏分佈式存儲器。

(7)人類存儲模型、自動學習和其他機器人系統元件。

3.設計

人工智能和機器人學領域設計的主要部分包括:

(1)爲邏輯程序設計、定理證明和規則賦值的軟件系統的設計技術。

(2)小範圍專家系統(MycinXcon)和爲在新範圍內編程用的專家系統外殼技術。'

(3)邏輯程序設計的實現(PROLOG)

(4)自然語言理解系統(MargieSHRDLU 和選擇語義學)

(5)神經網絡和稀疏分佈式存儲器的實現。

(6)玩跳棋、象棋和其他策略性遊戲的程序。

(7)工作語音合成、識別。

(8)工作機器人,靜態的和移動的。

九、  人機通信

     本領域研究人類和機器通過各種類似於人的傳感器和電動機進行的有效的信息交換,並研究反映人類的概念化的信息結構。基本問題包括:表示對象並自動創造視見畫面的有效方法是什麼?接收輸入或給出輸出的有效方法是什麼?怎樣使錯誤理解及其後的人的差錯導致的危險減到最小限度?怎樣用圖形和其他工具通過存儲在數據集中的信息去理解自然現象?

1.理論

人機通信理論的主要部分是:

(1)二維和高維幾何,包括解析幾何、投影幾何,仿射幾何和計算幾何。

(2)着色理論。

(3)認知心理學。

(4)傅利葉分析、線性代數、圖論,自動機、物理和分析等支撐領域。

2.抽象

人機通信領域抽象的主要部分是;

(1)畫面顯示算法,包括解決以下問題的方法:光滑化、濃淡漸變(shading)、隱藏線、聲線描跡、隱藏面、透明面、陰影、明暗分佈、邊緣、着色圖、樣條表示、透視圖、紋理化、防誤認、統一性、動畫片、畫面作爲對象的分級表示。

(2)計算機輔助設計(CAD)模型。

(3)實體對象的計算機表示。

(4)圖象處理和增強方法。

(5)人機通信,包括爲減少人爲錯誤和提高人的生產率而引入的交互方式的心理學研究。

3.設計

人機通信領域設計與實現的主要部分是:

(1)圖形算法在各種圖形裝置上的實現,這些圖形裝置包括向量和光柵顯示和許多硬拷貝裝置。

(2)不斷增多的模型和現象的實驗性的圖形算法的設計與實驗。

(3)在顯示中彩色圖的適當使用;在顯示和硬拷見裝置上彩色的精確重現。

(4)圖形標準(GKSPIHGSVDI),圖形語言有(PostScript),和特殊圖形包(如化學的MOGLI)

(5)各種用戶接口技術的實現,包括位映象裝置上的直接處理和字符裝置的屏蔽技術。

(6)爲了不同系統和機器之間信息傳送的各種標準文件交換格式的實現。

(7)工作CAD 系統。

(8)工作圖象增強系統(如在從空間探測接收來的畫面JPL )

12.    致謝

 許多人對本報告的原稿慷慨地提出了書面意見,雖然無法採納所有這些意見,但我們在修改原稿時確實考慮了每一條意見。謹對下列各位提出的意見表示感謝。

13.    參考文獻

[1] Abelson,II..and Sussman,G.Structure and Interpretation of Computer

Programs. MIT Press,Cambridge,Mass.,1985

[2]Arden.B..cd. See What Can Be Automated? Report of the NFS Computer Science and Engineering Research Study(COSERS).MIT Press. Cambridge,Mass.,1980

[3]Denning,P.What is computer science? Am..Sci.73(Jan.Feb.1985)16-19

[4]Flores.F.,and Craves,M.Education(working paper available from

Logonet,lnc.,2200 Powell Street,11th .Floor,Emeryville,Calif.94608)

[5]Newell,A.,Perlis,A.,andSimon,H.What is computer science? Sci.157(1967)1373- 1374) reprinted in Abacus 4,4(Summer 1987),32)

 

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