張為華,李 弋,趙文耘
(復(fù)旦大學(xué) 軟件學(xué)院,上海 201203)
系統(tǒng)能力是在掌握計(jì)算機(jī)系統(tǒng)基本原理的基礎(chǔ)上,熟悉如何進(jìn)一步開發(fā)構(gòu)建以計(jì)算技術(shù)為核心的應(yīng)用系統(tǒng) 。隨著信息技術(shù)的發(fā)展,計(jì)算機(jī)已成為工作和日常生活的重要工具,逐漸形成支持移動(dòng)端、PC端、云端等的多種計(jì)算模式。日益復(fù)雜的應(yīng)用和計(jì)算模式的變化對(duì)計(jì)算機(jī)專業(yè)人才的系統(tǒng)知識(shí)結(jié)構(gòu)、大局觀和創(chuàng)新能力提出了更高的要求。
為了應(yīng)對(duì)這些挑戰(zhàn),ACM/IEEE 對(duì)其課程體系進(jìn)行了調(diào)整,在CS2013[1]課程體系中新增加了一些課程以強(qiáng)化學(xué)生的系統(tǒng)能力。教育部高等學(xué)校計(jì)算機(jī)類專業(yè)教學(xué)指導(dǎo)委員會(huì)針對(duì)新形勢梳理了計(jì)算機(jī)培養(yǎng)的各種能力(見表1)[2],計(jì)算機(jī)專業(yè)高級(jí)人才應(yīng)具有計(jì)算思維能力、算法設(shè)計(jì)與分析能力、程序設(shè)計(jì)與實(shí)現(xiàn)能力和系統(tǒng)能力,其中系統(tǒng)能力最重要,占總能力的75%。
系統(tǒng)能力是在掌握計(jì)算機(jī)系統(tǒng)基本原理的基礎(chǔ)上,熟悉如何進(jìn)一步開發(fā)構(gòu)建以計(jì)算技術(shù)為核心的應(yīng)用系統(tǒng)[3]。在傳統(tǒng)課程體系下,計(jì)算系統(tǒng)相關(guān)的基本原理分散在計(jì)算機(jī)組成、計(jì)算機(jī)體系結(jié)構(gòu)、操作系統(tǒng)、編譯原理等課程中。在這種體系中,各個(gè)知識(shí)點(diǎn)獨(dú)立,割裂了計(jì)算機(jī)系統(tǒng)概念之間的聯(lián)系,增加了整體系統(tǒng)認(rèn)知的難度??突仿〈髮W(xué)(CMU)的Bryant等人[4]基于程序員的視角設(shè)計(jì)了計(jì)算機(jī)系統(tǒng)基礎(chǔ)(ICS)課程,綜合介紹計(jì)算機(jī)系統(tǒng)的基礎(chǔ)概念。由于該課程較好地詮釋了計(jì)算機(jī)系統(tǒng)的相關(guān)知識(shí),突出了各知識(shí)點(diǎn)的關(guān)聯(lián)性和知識(shí)的整體認(rèn)知,很多高校都相繼開設(shè)計(jì)算機(jī)系統(tǒng)基礎(chǔ)課程以加強(qiáng)學(xué)生的計(jì)算機(jī)系統(tǒng)能力,全球已有近300家機(jī)構(gòu)開設(shè)了該課程。
表1 計(jì)算機(jī)能力構(gòu)成分布
基于學(xué)生的具體情況差異,國內(nèi)的ICS教學(xué)普遍對(duì)授課形式和內(nèi)容進(jìn)行了調(diào)整。課程一般分兩學(xué)期講授,教材也有所不同。隨著ICS課程本地化進(jìn)程的推進(jìn),學(xué)生的系統(tǒng)觀都得到了不同程度的加強(qiáng),但在ICS的教學(xué)過程中也面臨一些挑戰(zhàn):首先,學(xué)生的計(jì)算機(jī)基礎(chǔ)普遍較差,編程能力較弱,有的學(xué)生在進(jìn)入大學(xué)前從未接觸過計(jì)算機(jī),對(duì)知識(shí)的理解能力較弱;其次,現(xiàn)有教材內(nèi)容的順序沒有考慮知識(shí)點(diǎn)的關(guān)聯(lián)性,知識(shí)呈現(xiàn)碎片化;最后,沒有結(jié)合學(xué)生的培養(yǎng)計(jì)劃和培養(yǎng)目標(biāo)調(diào)整教學(xué)內(nèi)容的深度,學(xué)生系統(tǒng)能力培養(yǎng)缺乏體系。這些因素在一定程度上影響了ICS的整體授課效果,造成很多學(xué)生學(xué)習(xí)ICS課程的困難,不利于學(xué)生對(duì)系統(tǒng)的整體理解和后期的培養(yǎng)。
針對(duì)這些挑戰(zhàn),應(yīng)對(duì)ICS的授課內(nèi)容進(jìn)行調(diào)整和優(yōu)化。首先,將課程內(nèi)容按應(yīng)用程序員視角和系統(tǒng)程序員視角進(jìn)行劃分,應(yīng)用程序員視角內(nèi)容前移,而系統(tǒng)程序員視角內(nèi)容后移。這樣劃分后,前部分內(nèi)容更容易理解,針對(duì)學(xué)生的計(jì)算機(jī)水平梳理ICS的課程內(nèi)容,偏編程的內(nèi)容盡量前提,偏原理性內(nèi)容后移,也更容易被無計(jì)算機(jī)基礎(chǔ)的學(xué)生掌握,也為理解后部分知識(shí)建立基本的概念。其次,根據(jù)各章的關(guān)聯(lián)性重新組織課程內(nèi)容,加強(qiáng)內(nèi)容的關(guān)聯(lián)性和緊湊性,從而避免相關(guān)內(nèi)容跨度太大造成的理解缺陷。最后,根據(jù)培養(yǎng)目標(biāo),對(duì)一些內(nèi)容進(jìn)行細(xì)化和加強(qiáng),避免必要系統(tǒng)知識(shí)的缺失,提升學(xué)生的系統(tǒng)觀。
ICS已成為國內(nèi)計(jì)算機(jī)專業(yè)系統(tǒng)能力培養(yǎng)的核心基礎(chǔ)課程,目標(biāo)是解釋計(jì)算機(jī)系統(tǒng)的本質(zhì)概念,并展示這些概念對(duì)應(yīng)用程序正確性、性能和可用性的影響[5]。通過學(xué)習(xí),學(xué)生應(yīng)理解應(yīng)用的運(yùn)行,并編寫高效的應(yīng)用程序。
ICS教材從程序員的視角出發(fā),分別從程序結(jié)構(gòu)和執(zhí)行、程序在系統(tǒng)的運(yùn)行以及程序間的通信和交互3個(gè)抽象層面介紹計(jì)算機(jī)系統(tǒng)相關(guān)概念。在程序結(jié)構(gòu)和執(zhí)行部分,課程介紹程序和信息在硬件上的表示、程序運(yùn)行的硬件——處理器和存儲(chǔ)系統(tǒng)、程序的優(yōu)化。在程序在系統(tǒng)的運(yùn)行部分,課程先介紹可執(zhí)行程序的生成,然后講述應(yīng)用程序運(yùn)行相關(guān)的進(jìn)程和虛存——操作系統(tǒng)管理處理器和內(nèi)存資源的機(jī)制。在程序間的通信和交互部分,課程先介紹基本的交互機(jī)制——系統(tǒng)I/O和網(wǎng)絡(luò)通信,再引入并發(fā)更好地支持多種交互模式和提高資源的使用效率。
由于知識(shí)點(diǎn)較多,ICS課程一般分兩個(gè)學(xué)期講授。課程內(nèi)容通常按表 2組織,第一個(gè)學(xué)期主講程序的結(jié)構(gòu)和執(zhí)行,第二個(gè)學(xué)期則講授其余的兩個(gè)部分。
表2 ICS課程內(nèi)容的劃分
ICS對(duì)計(jì)算機(jī)系統(tǒng)的綜合介紹,能夠?yàn)楹罄m(xù)課程的學(xué)習(xí)奠定堅(jiān)實(shí)基礎(chǔ),促進(jìn)系統(tǒng)教學(xué)的改革。由于ICS課程已覆蓋大部分系統(tǒng)概念,一些學(xué)校已用其代替?zhèn)鹘y(tǒng)的系統(tǒng)類課程培養(yǎng)非系統(tǒng)方向的學(xué)生。例如,復(fù)旦大學(xué)軟件工程專業(yè)電子商務(wù)方向的學(xué)生,學(xué)完計(jì)算機(jī)系統(tǒng)基礎(chǔ)后,已不要求選修體系結(jié)構(gòu)、操作系統(tǒng)、編譯等傳統(tǒng)系統(tǒng)基礎(chǔ)課程。
目前國內(nèi)大學(xué)的計(jì)算機(jī)專業(yè)面向全國招生,新生的計(jì)算機(jī)水平參差不齊。雖然少數(shù)學(xué)生有較好的計(jì)算機(jī)基礎(chǔ),甚至高中參加過信息競賽,但絕大部分學(xué)生沒有任何編程經(jīng)驗(yàn),甚至沒有使用過計(jì)算機(jī)。
在一年級(jí),學(xué)生一般會(huì)系統(tǒng)地學(xué)習(xí)程序設(shè)計(jì)語言課程,大部分學(xué)校也會(huì)開設(shè)簡單的應(yīng)用開發(fā)類課程,如Web程序設(shè)計(jì)等課程。前者培養(yǎng)學(xué)生高級(jí)語言的編程能力;后者則講授HTML、JavaScript和簡單的數(shù)據(jù)庫知識(shí),訓(xùn)練學(xué)生編寫簡單互聯(lián)網(wǎng)應(yīng)用的能力。
通過這兩門課的學(xué)習(xí),學(xué)生初步具有編寫應(yīng)用程序的能力,但對(duì)計(jì)算機(jī)系統(tǒng)的理解依然有限。ICS課程一般在大學(xué)二年級(jí)開設(shè),現(xiàn)有的內(nèi)容和組織方面存在不足,導(dǎo)致教學(xué)效果不夠理想,學(xué)生對(duì)系統(tǒng)知識(shí)的理解不夠全面。
(1)學(xué)生能力的適應(yīng)問題。我們對(duì)近幾屆學(xué)生做了調(diào)查,統(tǒng)計(jì)結(jié)果表明,近60%的學(xué)生在進(jìn)入大學(xué)前幾乎沒有接觸過計(jì)算機(jī)或?qū)W習(xí)過相關(guān)知識(shí)。Bryant的教材[5]按照程序的表示、組織、運(yùn)行和相互間交互的自然順序組織。這種方式要求學(xué)生對(duì)計(jì)算機(jī)比較熟悉,然而大部分學(xué)生計(jì)算機(jī)基礎(chǔ)較弱的現(xiàn)狀造成學(xué)生理解知識(shí)的障礙和課程實(shí)驗(yàn)的實(shí)現(xiàn)困難。
(2)知識(shí)點(diǎn)的關(guān)聯(lián)問題。授課順序沒有考慮知識(shí)點(diǎn)之間關(guān)聯(lián)關(guān)系的強(qiáng)弱,組織相對(duì)松散,不利于綜合理解,如存儲(chǔ)系統(tǒng)安排在程序優(yōu)化之后,但程序的執(zhí)行效率與存儲(chǔ)介質(zhì)的特點(diǎn)和程序訪問的局部性緊密相關(guān),導(dǎo)致學(xué)生在學(xué)習(xí)優(yōu)化時(shí),不能理解與存儲(chǔ)相關(guān)的優(yōu)化。兩學(xué)期教學(xué)雖然讓學(xué)生有充裕的時(shí)間學(xué)習(xí)和理解,但是破壞了連續(xù)性,妨礙學(xué)生對(duì)計(jì)算機(jī)系統(tǒng)的整體認(rèn)識(shí),如虛存和存儲(chǔ)系統(tǒng)安排兩個(gè)學(xué)期,不利于整體把握。因此,需要結(jié)合學(xué)生的能力以及知識(shí)點(diǎn)的順序關(guān)系和相關(guān)性,合理對(duì)授課內(nèi)容進(jìn)行劃分。
(3)部分內(nèi)容的深度問題。在一些學(xué)?,F(xiàn)有的學(xué)生培養(yǎng)方案中,非系統(tǒng)方向的學(xué)生學(xué)習(xí)計(jì)算機(jī)系統(tǒng)基礎(chǔ)課程后,很少會(huì)系統(tǒng)地學(xué)習(xí)計(jì)算機(jī)系統(tǒng)相關(guān)的知識(shí)。從實(shí)際需求和能力培養(yǎng)的角度而言,目前對(duì)ICS的一些方面介紹得不夠深入,需要進(jìn)一步強(qiáng)化,如程序員系統(tǒng)地找到程序性能問題的原因,并給出改進(jìn)性能的方法,是一項(xiàng)很重要的能力,但這部分內(nèi)容在現(xiàn)有ICS教學(xué)中并非重點(diǎn)。
(4)缺乏綜合性。ICS從程序員的視角介紹計(jì)算機(jī)系統(tǒng)相關(guān)的概念,是第一門學(xué)習(xí)系統(tǒng)概念的課程,內(nèi)容中概念的綜合性相對(duì)較低,如Lab中實(shí)現(xiàn)HTTP代理涉及比較多的概念,但一些概念就只是簡單的應(yīng)用。
為了提升ICS課程的整體授課效果,結(jié)合現(xiàn)有學(xué)生計(jì)算機(jī)能力的現(xiàn)狀,可以從下列幾個(gè)方面著手,提高ICS課程的教學(xué)質(zhì)量。
(1)難度的漸進(jìn)性。當(dāng)前的授課內(nèi)容應(yīng)該與學(xué)生的能力增長相適應(yīng),讓學(xué)生逐漸掌握計(jì)算機(jī)系統(tǒng)的相關(guān)概念。
(2)內(nèi)容的關(guān)聯(lián)性。根據(jù)認(rèn)知的先后次序和知識(shí)點(diǎn)的依賴關(guān)系,對(duì)授課內(nèi)容進(jìn)行組織,逐漸強(qiáng)化學(xué)生對(duì)系統(tǒng)基本原理的理解。
(3)內(nèi)容的深度。結(jié)合后續(xù)系統(tǒng)課程的教學(xué)內(nèi)容,系統(tǒng)地增加重要而未覆蓋的論題,并相應(yīng)地適當(dāng)增加課時(shí)。
(4)知識(shí)體系的綜合性。增加綜合性內(nèi)容,從而提升知識(shí)之間的綜合性。
對(duì)于計(jì)算機(jī)的理解,一般可分為應(yīng)用程序員視角和系統(tǒng)程序員視角。應(yīng)用程序員編寫的軟件程序直接面向用戶,利用計(jì)算機(jī)及支撐的系統(tǒng)軟件解決應(yīng)用問題。系統(tǒng)程序員開發(fā)的軟件程序主要為應(yīng)用軟件提供各種系統(tǒng)層支持,因?yàn)樾枰煜さ讓拥挠布拖到y(tǒng)軟件。
ICS從程序員的角度介紹計(jì)算機(jī)系統(tǒng),內(nèi)容也可以按應(yīng)用程序員和系統(tǒng)程序員兩個(gè)視角進(jìn)行劃分[6]。
(1)應(yīng)用程序員視角。內(nèi)容主要涉及編程,多為簡單的基礎(chǔ)知識(shí)。為了提升學(xué)生的編程能力,這部分教學(xué)實(shí)踐偏多。通過編程練習(xí),逐漸提高學(xué)生對(duì)計(jì)算機(jī)系統(tǒng)的熟悉程度。
(2)系統(tǒng)程序員視角。內(nèi)容更多偏重原理以及系統(tǒng)底層的概念和知識(shí),主要提升程序員對(duì)計(jì)算機(jī)系統(tǒng)運(yùn)行的理解。這些內(nèi)容主要覆蓋硬件和操作系統(tǒng)層面的知識(shí),結(jié)合前一視角的知識(shí)深化系統(tǒng)觀的培養(yǎng)。
我們根據(jù)這個(gè)原則分析了目前國內(nèi)普遍采用的CMU使用的ICS教材[5]內(nèi)容。導(dǎo)論綜合性最強(qiáng),提綱挈領(lǐng)地介紹簡單程序運(yùn)行所涉及的系統(tǒng)概念。信息表示及操作介紹計(jì)算機(jī)如何表示信息并進(jìn)行運(yùn)算。程序機(jī)器層的表示可以幫助程序員更加準(zhǔn)確地把握程序在計(jì)算機(jī)上的執(zhí)行。程序鏈接讓程序員理解復(fù)雜程序的生成和加載,有助于理解C語言中變量的申明和訪問。網(wǎng)絡(luò)編程和并發(fā)編程,重點(diǎn)是如何利用系統(tǒng)提供的接口編寫程序,但網(wǎng)絡(luò)編程要求運(yùn)用之前章節(jié)系統(tǒng)概念和工具編寫高效的應(yīng)用。處理器架構(gòu)和內(nèi)存架構(gòu),基本上都是介紹硬件的工作原理和特點(diǎn)。程序優(yōu)化則需要學(xué)生理解程序在機(jī)器上的執(zhí)行,并充分掌握程序運(yùn)行的硬件,主要指處理器和存儲(chǔ)的工作原理和特點(diǎn)。異??刂屏?、虛擬內(nèi)存系統(tǒng)和系統(tǒng)I/O,可以分為兩個(gè)層次:一部分講這些機(jī)制實(shí)現(xiàn)的基本原理,另一部分則介紹使用相應(yīng)的編程接口為編程提供支持。
從這兩個(gè)視角,計(jì)算機(jī)系統(tǒng)基礎(chǔ)的內(nèi)容可以按應(yīng)用程序員視角和系統(tǒng)程序員視角進(jìn)行重新劃分(見表 3),具體授課內(nèi)容的順序也可以按這個(gè)劃分進(jìn)行排布。第一學(xué)期的的內(nèi)容為應(yīng)用程序員視角的內(nèi)容,知識(shí)相對(duì)簡單,需要深入理解的內(nèi)容相對(duì)較少,并形成第二學(xué)期知識(shí)的基礎(chǔ)。第二學(xué)期的內(nèi)容主要為系統(tǒng)程序員視角的內(nèi)容,在掌握第一學(xué)期知識(shí)的前提下,學(xué)生理解第二學(xué)期的內(nèi)容會(huì)更容易,實(shí)現(xiàn)課程實(shí)驗(yàn)也會(huì)更輕松。
表3 基于程序員不同視角的教學(xué)內(nèi)容劃分
新的課程內(nèi)容組織,把ICS教材中一些章節(jié)的內(nèi)容,根據(jù)認(rèn)知的層次拆分,分別在不同的階段講授。課程分為兩個(gè)學(xué)期講授,各自完成兩個(gè)層面的認(rèn)知目標(biāo)。第一個(gè)學(xué)期,主要培養(yǎng)學(xué)生的一般程序員相關(guān)能力,利用系統(tǒng)提供的編程接口編寫應(yīng)用程序,逐漸培養(yǎng)學(xué)生對(duì)計(jì)算機(jī)系統(tǒng)的認(rèn)知;第二個(gè)學(xué)期,從系統(tǒng)程序員視角培養(yǎng)學(xué)生,提高學(xué)生的理論水平,能夠合理解釋應(yīng)用程序執(zhí)行的基本原理,掌握計(jì)算機(jī)系統(tǒng)的重要概念。
第一個(gè)學(xué)期,課程主要講授應(yīng)用程序員視角需要理解的知識(shí),強(qiáng)化學(xué)生的應(yīng)用編程能力以及對(duì)計(jì)算機(jī)基本概念的理解和強(qiáng)化。課程的內(nèi)容組織如下:①以典型的程序“Hello World!”為例,提綱挈領(lǐng)地介紹應(yīng)用程序生成和運(yùn)行涉及的系統(tǒng)概念;②從解釋的角度理解不同信息在計(jì)算機(jī)內(nèi)的表示方式,正確區(qū)分真實(shí)世界和計(jì)算機(jī)內(nèi)部信息之間的聯(lián)系和區(qū)別,并掌握計(jì)算機(jī)對(duì)不同信息的基本操作;③理解可執(zhí)行程序在計(jì)算機(jī)內(nèi)的表示,掌握計(jì)算機(jī)典型的指令集,學(xué)習(xí)如何用低級(jí)指令實(shí)現(xiàn)高級(jí)語言中的函數(shù)調(diào)用;④理解可執(zhí)行程序的生成,反之也幫助學(xué)生理解編程時(shí)對(duì)于變量的申明和訪問;⑤以動(dòng)態(tài)的角度了解程序的運(yùn)行,主要講授進(jìn)程和線程的概念,以及利用進(jìn)程和線程系統(tǒng)API創(chuàng)建和管理多進(jìn)程/線程應(yīng)用程序;⑥學(xué)習(xí)I/O的基本原理,掌握用文件的模型來抽象不同的I/O訪問,并學(xué)習(xí)不同I/O訪問接口的優(yōu)缺點(diǎn);⑦基于進(jìn)程和線程的概念,學(xué)習(xí)并發(fā)編程。 通過第一個(gè)學(xué)期的學(xué)習(xí),學(xué)生對(duì)計(jì)算機(jī)系統(tǒng)特別是類Unix系統(tǒng),已經(jīng)有了比較深刻的認(rèn)識(shí),也可以用C語言編寫各種應(yīng)用程序。
第二個(gè)學(xué)期,課程主要在第一學(xué)期一般程序員的視角基礎(chǔ)上,培養(yǎng)學(xué)生的系統(tǒng)程序員視角。課程的內(nèi)容組織如下:①學(xué)習(xí)處理器的基本原理,通過構(gòu)造簡單的處理器,了解運(yùn)行應(yīng)用程序的處理器工作原理,掌握處理器的工作特點(diǎn);②了解計(jì)算機(jī)的存儲(chǔ)架構(gòu),掌握不同存儲(chǔ)的工作特點(diǎn)和用處,特別是cache的工作原理和對(duì)應(yīng)用程序性能的影響;③了解性能原理和分析機(jī)制,學(xué)習(xí)如何系統(tǒng)地發(fā)現(xiàn)應(yīng)用程序的性能瓶頸,并進(jìn)一步改善應(yīng)用的性能,特別是如何充分發(fā)揮底層硬件平臺(tái)的性能;④學(xué)習(xí)虛擬內(nèi)存系統(tǒng),理解計(jì)算機(jī)系統(tǒng)提供適當(dāng)?shù)臋C(jī)制以方便應(yīng)用程序的執(zhí)行;⑤學(xué)習(xí)實(shí)現(xiàn)進(jìn)/線程的原理,并進(jìn)一步了解進(jìn)程/線程的創(chuàng)建機(jī)制;⑥結(jié)合虛擬內(nèi)存,闡述文件共享和重定向的實(shí)現(xiàn)機(jī)制;⑦綜合運(yùn)用多個(gè)系統(tǒng)概念,學(xué)習(xí)網(wǎng)絡(luò)原理和編寫高效的網(wǎng)絡(luò)程序。
進(jìn)行ICS課程內(nèi)容優(yōu)化后,一些章節(jié)的內(nèi)容也需要進(jìn)行適當(dāng)?shù)恼{(diào)整。原有的一些章節(jié)內(nèi)容基于之前章節(jié)的知識(shí),如并發(fā)編程的部分內(nèi)容就是基于網(wǎng)絡(luò)編程例子展開講解的,采用新的內(nèi)容組織后,章節(jié)之間的順序改變,套用現(xiàn)有章節(jié)內(nèi)容則無法完成,因此,需要為并發(fā)編程設(shè)計(jì)只依賴于獨(dú)立知識(shí)(不依賴于網(wǎng)絡(luò)編程)的課程示例。
在一些學(xué)?,F(xiàn)有的學(xué)生培養(yǎng)方案下,非系統(tǒng)方向的學(xué)生在學(xué)習(xí)完計(jì)算機(jī)系統(tǒng)基礎(chǔ)課程后,很少會(huì)系統(tǒng)地學(xué)習(xí)計(jì)算機(jī)系統(tǒng)相關(guān)的知識(shí),但是一些計(jì)算機(jī)系統(tǒng)概念和方法對(duì)程序員編寫程序有很大的幫助。
為了強(qiáng)化學(xué)生的系統(tǒng)能力,增強(qiáng)課程的整體性,在計(jì)算機(jī)系統(tǒng)基礎(chǔ)課程中也需要對(duì)一些知識(shí)點(diǎn)進(jìn)行強(qiáng)化,主要體現(xiàn)在以下3方面。
(1)細(xì)化性能評(píng)估。隨著系統(tǒng)的復(fù)雜性和程序規(guī)模的擴(kuò)大,準(zhǔn)確的性能評(píng)估是程序員的必備技能之一,然而ICS原有課程體系中對(duì)該部分內(nèi)容強(qiáng)調(diào)不夠。為了強(qiáng)化學(xué)生的相關(guān)能力,應(yīng)將原有體系結(jié)構(gòu)等課程的性能評(píng)估內(nèi)容移到ICS課程中,并結(jié)合當(dāng)前并行評(píng)估環(huán)境的挑戰(zhàn),引導(dǎo)學(xué)生理解評(píng)估的重要性,同時(shí)給部分有能力的學(xué)生增加相關(guān)實(shí)驗(yàn)。
(2)擴(kuò)展處理器設(shè)計(jì)的方法學(xué)。目前ICS課程分別介紹了單周期和基于流水線的多周期處理器的設(shè)計(jì)。這種方式只讓學(xué)生建立了處理器的基本概念,錯(cuò)過了培養(yǎng)分析問題和解決問題能力的機(jī)會(huì)。實(shí)際上,這部分的教學(xué)可結(jié)合處理器的發(fā)展階段——單周期、多周期、流水線和ILP優(yōu)化等,重點(diǎn)講述前一階段引入的問題和后一階段解決的方法,從“問題—解決”的角度引導(dǎo)學(xué)生深入思考。
(3)相關(guān)知識(shí)的綜合和遞進(jìn)。ICS現(xiàn)有知識(shí)體系缺乏關(guān)聯(lián)和知識(shí)的綜合運(yùn)用,妨礙學(xué)生建立整體系統(tǒng)觀。現(xiàn)有知識(shí)結(jié)構(gòu)優(yōu)化方式,也為進(jìn)一步增強(qiáng)知識(shí)的綜合性提供可能。由于并發(fā)內(nèi)容的提前,在新的組織方式下,網(wǎng)絡(luò)編程部分可結(jié)合并發(fā)的知識(shí)展開,對(duì)應(yīng)Lab的實(shí)現(xiàn)也可以改為采用并發(fā)的形式進(jìn)行設(shè)計(jì)。這個(gè)調(diào)整增強(qiáng)了網(wǎng)絡(luò)編程部分的綜合性,有利于培養(yǎng)學(xué)生的系統(tǒng)觀。由于存儲(chǔ)架構(gòu)知識(shí)提前,講解優(yōu)化部分內(nèi)容時(shí),可結(jié)合存儲(chǔ)架構(gòu)進(jìn)行存儲(chǔ)系統(tǒng)相關(guān)優(yōu)化知識(shí)的講解。
針對(duì)學(xué)生的現(xiàn)狀和現(xiàn)有教學(xué)方式的不足,我們對(duì)ICS的授課內(nèi)容進(jìn)行了調(diào)整和優(yōu)化,強(qiáng)化學(xué)期內(nèi)知識(shí)點(diǎn)的遞進(jìn)性和關(guān)聯(lián)性。首先,提高學(xué)生的編程能力,加強(qiáng)對(duì)計(jì)算機(jī)系統(tǒng)的基本認(rèn)識(shí);其次,從原理上介紹系統(tǒng)如何支撐應(yīng)用程序的運(yùn)行。課程內(nèi)容的層次化,有助于學(xué)生循序漸進(jìn)地學(xué)習(xí)計(jì)算機(jī)系統(tǒng)。針對(duì)現(xiàn)有課程培養(yǎng)體系引入的問題,選擇部分知識(shí)點(diǎn)強(qiáng)化教學(xué)內(nèi)容,提高學(xué)生對(duì)系統(tǒng)的綜合理解能力和動(dòng)手能力。