周曉燕
(蘇州外國(guó)語學(xué)校,江蘇蘇州 215011)
A-level(General Certificate of Education Advanced Level)課程是英國(guó)劍橋考試中心(CIE,Cambridge International Examinations)的金牌課程體系,以其國(guó)際權(quán)威性為許多國(guó)內(nèi)高中出國(guó)班所采用。A-level課程包含70多門科目供學(xué)生選擇。A-level課程的學(xué)制一般為兩年,第一年稱為AS-Level;第二年稱為A2-Level。課程的考核被設(shè)置為四次考試,第一年前兩次考試通過,獲得AS-level證書,第二年再通過后兩次考試,獲得A-level證書。
我國(guó)信息技術(shù)課程的相關(guān)內(nèi)容為A-level中的兩門課程,涵蓋計(jì)算機(jī)應(yīng)用(Computing)和應(yīng)用信息通訊技術(shù)(ICT,Applied Information and Communication Technology)。其中Computing課程的內(nèi)容包括計(jì)算機(jī)原理、軟件應(yīng)用、計(jì)算機(jī)編程、數(shù)據(jù)結(jié)構(gòu)、軟件工程、網(wǎng)絡(luò)、數(shù)據(jù)庫(kù)等方面。顯然算法與程序設(shè)計(jì)部分的教學(xué)內(nèi)容對(duì)應(yīng)于Computing課程中的相關(guān)內(nèi)容,同時(shí)這部分內(nèi)容也是Computing課程的重點(diǎn)所在。
Computing課程在使用編程語言方面和中國(guó)差別很大,教學(xué)大綱中不指定編程語言。與之對(duì)應(yīng),考試中的相關(guān)試題或要求使用偽代碼和流程圖來描述算法,或由學(xué)生使用任意一種自己掌握的語言來做答。教材中,AS-Level部分沒有使用具體的語言,A2-Level部分使用 Pascal語言作為范例,但教材中并沒有專門的章節(jié)來學(xué)習(xí)Pascal的語法。此外,在大綱相應(yīng)的教學(xué)指導(dǎo)中,不建議選用可視化的編程環(huán)境。
事實(shí)上,Computing的教學(xué)大綱不指定編程語言,并非不做要求。恰恰相反,需要教師幫助學(xué)生自主選擇,掌握一門甚至多門高級(jí)語言。教材中用Pascal的程序作為例子來講解問題,也并非要求學(xué)生一定就要掌握Pascal,相關(guān)參考書所使用的語言也并不相同,但可作為參考或自學(xué)時(shí)用。
Computing課程中,數(shù)據(jù)結(jié)構(gòu)的內(nèi)容相對(duì)全面且深入,很多算法,例如遞歸、遍歷、排序都是結(jié)合特定的數(shù)據(jù)結(jié)構(gòu)提出和講解的。內(nèi)容包括表、鏈表、棧、隊(duì)列和(二叉)樹。
Computing課程主要講解瀑布模型,屬于軟件工程的內(nèi)容。我國(guó)的教材中這部分內(nèi)容也占了相當(dāng)?shù)谋戎?,但并沒有在考核中體現(xiàn)。而Computing的第四次考核,就是要求學(xué)生自己選題,完成一個(gè)實(shí)際開發(fā)項(xiàng)目,考查學(xué)生在完成項(xiàng)目過程中的每個(gè)步驟并分步評(píng)分,程序編寫僅占比30%。從Computing教材來看,很多知識(shí)點(diǎn)都在這部分內(nèi)容中詳細(xì)敘述。例如可行性分析和需求分析、用戶界面、接口設(shè)計(jì)、軟件測(cè)試的原則和方法等。
特別需要強(qiáng)調(diào)的是,在開發(fā)過程中,文檔寫作被尤其看重,也是考核的評(píng)分依據(jù),包括分析文檔、技術(shù)文檔、測(cè)試文檔、開發(fā)記錄甚至代碼注釋等方面。
綜合教材和大綱要求,Computing課程中和算法與程序設(shè)計(jì)除了上文涉及的相關(guān)內(nèi)容,還包括如下方面:
a.教材從匯編語言開始講述計(jì)算機(jī)語言,然后是高級(jí)語言,再到邏輯語言。其中對(duì)匯編語言和邏輯語言分別單列一章做了詳細(xì)的介紹。例如匯編部分,包括處理器的結(jié)構(gòu)、指令格式和尋址方式三個(gè)小節(jié),并有多個(gè)匯編程序的講解。
b.通過和面向過程編程方法的對(duì)比,講述面向?qū)ο缶幊?。通過程序?qū)嵗?Pascal)解釋類和對(duì)象的基本概念。
c.教材結(jié)合操作系統(tǒng),講述文件系統(tǒng)、I/O控制、內(nèi)存管理的基礎(chǔ)知識(shí)。
d.此外,按照大綱的要求,還簡(jiǎn)單介紹了并行計(jì)算、網(wǎng)絡(luò)計(jì)算機(jī)等先進(jìn)技術(shù)。
客觀地說,中外課程的差別主要是由信息技術(shù)課在高中學(xué)科體系中的地位不同造成的。Computing雖然是70多門供選擇的A-level課程之一,但是一經(jīng)選定,其地位就相當(dāng)于高考課程。而現(xiàn)階段,我國(guó)的信息技術(shù)課的內(nèi)容受課時(shí)限制,深度取決于會(huì)考要求。所以不可能照搬A-level的教學(xué)模式。他山之石,可以攻玉,Computing課程的許多做法和經(jīng)驗(yàn)都能給我們有價(jià)值的啟示,加以吸收借鑒,并用于教學(xué)實(shí)踐,提升教學(xué)效果。筆者在如下三個(gè)大方面對(duì)自己的教學(xué)進(jìn)行了探索和改進(jìn),取得了理想的效果。
對(duì)于程序設(shè)計(jì)中一些重要的原理概念,學(xué)生往往由于局限于按部就班地學(xué)習(xí)一種計(jì)算機(jī)語言(VB)的編程,對(duì)其比較模糊,需要由教師指出并重點(diǎn)講解。
例如算法和語法的區(qū)分。Computing課程在 AS-level階段脫離具體的編程語,用偽代碼或流程圖講算法,這樣算法和語法的區(qū)分不言自明。但這樣的教法在我們的課堂上采用還不現(xiàn)實(shí),筆者在教學(xué)中采取了幾個(gè)變通的措施:①直接講解算法和語法的分別,并把Computing的教學(xué)方法介紹給學(xué)生。②嘗試對(duì)某些知識(shí)點(diǎn) (比如循環(huán)或選擇)只講解算法,語法由學(xué)生自學(xué)。③在分析學(xué)生程序錯(cuò)誤的時(shí)候區(qū)分語法錯(cuò)誤和算法錯(cuò)誤。
再如 “程序=數(shù)據(jù)結(jié)構(gòu)+算法”這一著名公式所表達(dá)的思想。因?yàn)槲覀儧]有像Computing課程那樣系統(tǒng)學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的內(nèi)容,所以普遍的情況是學(xué)生對(duì)數(shù)據(jù)儲(chǔ)存方式在程序中的重要地位不明確。筆者在教學(xué)實(shí)踐中,嘗試通過舉例來講解如果數(shù)據(jù)結(jié)構(gòu)不同則算法不同這一基本概念。例如同樣是順序查找,數(shù)據(jù)儲(chǔ)存為一維數(shù)組和二維數(shù)組算法上就有區(qū)別,前者用一層循環(huán)即可,后者需要循環(huán)嵌套。
Computing課程內(nèi)容廣泛,這當(dāng)然需要更多的課時(shí)。但如果我們教師仔細(xì)挑選內(nèi)容,認(rèn)真組織語言,利用少量的課堂時(shí)間給學(xué)生介紹一些相關(guān)知識(shí)技術(shù)完全可以做到,而這對(duì)學(xué)生是非常有益的。通過研究,筆者挑選了一些比較重要同時(shí)也容易講清楚的知識(shí)點(diǎn)補(bǔ)充給學(xué)生。例如可視化編程、機(jī)器語言和高級(jí)語言 (編譯器的作用)、編程方法和操作系統(tǒng)的關(guān)系等等。這些知識(shí)在Computing課程中都是教材內(nèi)容,筆者的課堂講述很大程度上就是對(duì)Computing教材內(nèi)容的重新組織和提煉。
其中,可視化編程的概念筆者覺得尤為重要,因?yàn)槲覀兊膶W(xué)生一開始學(xué)習(xí)語言就是VB的編程環(huán)境,他們不知道非可視化編程是個(gè)什么樣子,甚至沒有程序從何處開始(入口)、到何處結(jié)束的概念。對(duì)此可由教師在課堂上編寫運(yùn)行一個(gè)命令行的程序讓學(xué)生有所認(rèn)識(shí)。
這項(xiàng)工作是模仿了Computing考核的方式,但意義重大。我們是教學(xué)生做題目還是做項(xiàng)目,是編代碼還是編軟件。當(dāng)然在學(xué)習(xí)初期都是前者,但后者才是最終的目的。事實(shí)上,這項(xiàng)教學(xué)實(shí)踐也對(duì)應(yīng)了我國(guó)教課書第五章的內(nèi)容。這個(gè)教學(xué)環(huán)節(jié),讓學(xué)生親自動(dòng)手所產(chǎn)生的效果和講解一遍書本差別很大,況且現(xiàn)在很多學(xué)校教師對(duì)這部分內(nèi)容是讓學(xué)生自學(xué)的。
筆者在課程后期和學(xué)生共同選題,通過任務(wù)驅(qū)動(dòng)的教學(xué)方法,讓學(xué)生分組完成一個(gè)簡(jiǎn)單的項(xiàng)目,并借鑒Computing做法,要求學(xué)生做好文檔記錄,并將其和程序編寫共同作為評(píng)判依據(jù)。
雖然很多項(xiàng)目本身非常簡(jiǎn)單,有的是結(jié)合數(shù)學(xué)物理等課程,編寫軟件實(shí)現(xiàn)一項(xiàng)特定的計(jì)算;有的就是模仿我國(guó)教材內(nèi)容,對(duì)班級(jí)學(xué)生的各類信息進(jìn)行數(shù)據(jù)采集并做簡(jiǎn)單處理。“麻雀雖小,五臟俱全”,從需求分析到可行性分析、從方案設(shè)計(jì)到模塊設(shè)計(jì)、從編程到測(cè)試、從軟件維護(hù)到二次開發(fā),學(xué)生只有完整地經(jīng)歷一遍,才能對(duì)軟件開發(fā)的含義有所體會(huì),知道程序的編寫在其中起著核心但并非全部的作用。
當(dāng)然,由于各種局限,一個(gè)簡(jiǎn)單的項(xiàng)目不能說明所有問題,如果有時(shí)間,參考 Computing,還可以講解諸如文檔寫作的重要性、調(diào)試測(cè)試工作在項(xiàng)目中的地位、瀑布模型以外其他軟件開發(fā)模型等問題。
總體而言,Computing課程中算法和編程部分的內(nèi)容和教學(xué)方法與我國(guó)相比存在很大區(qū)別?!耙o學(xué)生一滴水,自己要有一桶水”,那么,對(duì)A-Level Computing課程的研究和思考,首先就是充實(shí)“一桶水”的過程。
更重要的是,如何將思考的成果融入自己的課堂,最終使學(xué)生受益。應(yīng)該說,上文介紹的三個(gè)方面還都是初步的嘗試,隨著課程改革的深入和高中信息技術(shù)地位的不斷提高,期望能有更多更有益的研究成果和教學(xué)創(chuàng)新。