陳冬火 姚望舒
文章編號:1672-5913(2009)10-0018-03
摘要:“計算機程序設(shè)計語言”課程是計算機科學(xué)與技術(shù)學(xué)科核心的課程之一,極大地影響著學(xué)生對計算機領(lǐng)域的理解和興趣。本文針對教學(xué)過程中存在的問題,提出了層次化教學(xué)目標思想。以面向?qū)ο笳Z言C++為例,介紹基于層次化教學(xué)目標體系的具體思想和內(nèi)容,并提出與之相適用的課程及實驗設(shè)計,達到優(yōu)化教學(xué)方法,提高教學(xué)質(zhì)量的目的。
關(guān)鍵詞:計算機程序設(shè)計語言;層次化教學(xué);C++
中圖分類號:G642
文獻標識碼:A
1“計算機程序設(shè)計語言”教學(xué)現(xiàn)狀
“計算機程序設(shè)計語言”是普通高校計算機教育的基本專業(yè)課程,在計算機領(lǐng)域的各個專業(yè)的課程體系中都處于核心的地位。這門課程不僅可使學(xué)生獲得基本的程序設(shè)計能力及鍛煉學(xué)生的邏輯思維能力,它還極大地影響著學(xué)生對計算機領(lǐng)域的興趣和理解,對引導(dǎo)和培養(yǎng)學(xué)生在計算機工程及理論方面的研究興趣起著先導(dǎo)性和基礎(chǔ)性的作用。因此,“計算機程序設(shè)計語言”的教學(xué)質(zhì)量成為影響大學(xué)本科計算機教學(xué)質(zhì)量和效果的一個關(guān)鍵的因素。
影響課程教學(xué)質(zhì)量的主要三個因素為教學(xué)內(nèi)容、教學(xué)方法和實驗設(shè)計。當(dāng)前,大部分教師受傳統(tǒng)教學(xué)模式的影響,教學(xué)的重點都放在程序語言的基本語法的講授,課堂所設(shè)計的程序?qū)嵗蟛糠謬@語法規(guī)則的演示和說明,這種模式同樣也影響到實驗環(huán)節(jié)的設(shè)計。這種就事論事,形而上學(xué)的教學(xué)模式具有許多明顯的弊端,主要體現(xiàn)在以下幾方面:
(1) 不利于培養(yǎng)學(xué)生的學(xué)習(xí)興趣
許多從事程序設(shè)計語言教學(xué)的教師(包括筆者)都有這樣的感受:每講授一門新的程序設(shè)計語言課,初期學(xué)生都抱著積極,對獲取知識的極大熱情投入課程的學(xué)習(xí),但隨著教學(xué)過程的深入,這種熱情往往不能持久。導(dǎo)致這種局面的原因固然有教師本身的教學(xué)方法和教學(xué)手段的缺陷,但根本原因還是教學(xué)內(nèi)容的設(shè)置不科學(xué)。在單純以講授語法規(guī)則這種教學(xué)模式下,學(xué)生難以保持長久的學(xué)習(xí)興趣和動力。
(2) 不利于學(xué)生建立綜合化,系統(tǒng)化的知識體系
程序設(shè)計語言是表達設(shè)計者思想和計算機計算邏輯的符號系統(tǒng),具有多層面、多視角的內(nèi)涵。要把學(xué)生培養(yǎng)為具有高素質(zhì)的程序設(shè)計人員,僅僅熟悉沒有精神的符號及符號規(guī)則遠遠不夠,這需要學(xué)生具備設(shè)計高質(zhì)量程序的綜合化的知識體系,而當(dāng)前的程序設(shè)計語言的教學(xué)現(xiàn)狀并不能滿足這種需求。
(3) 不利于培養(yǎng)學(xué)生解決實際問題的綜合能力及創(chuàng)新意識和思想
當(dāng)前,素質(zhì)教育成為各級教育系統(tǒng),包括高等院校所關(guān)注的熱點,知識高等院校所關(guān)注的“素質(zhì)”內(nèi)涵不同。筆者認為高校大學(xué)畢業(yè)生應(yīng)具備的素質(zhì)包括:綜合化、系統(tǒng)化的專業(yè)知識體系;應(yīng)有已有的知識體系解決實際問題的能力;具有創(chuàng)新的意識和思想??傮w而言,大部分教師對程序設(shè)計語言課程所采取的教學(xué)不利于這種素質(zhì)的培養(yǎng)。
針對這種現(xiàn)狀,結(jié)合我國高等教育發(fā)展的現(xiàn)狀,本文提出程序設(shè)計語言的層次化教學(xué)目標的思想,并以面向?qū)ο蟪绦蛘Z言為例,論述在層次化教學(xué)目標驅(qū)動下的課程設(shè)計。
2層次化的教學(xué)目標
各項教學(xué)活動有效展開的基本條件是合理的教學(xué)目標的確定,但單一的教學(xué)目標并不能適用當(dāng)前中國復(fù)雜的高等教育現(xiàn)狀。社會經(jīng)濟的快速發(fā)展產(chǎn)生了明顯的多類型、層次化的人才需求,這種趨勢在各類軟件公司里表現(xiàn)得尤其明顯。為了適用這種人才需求的轉(zhuǎn)變,高等教育領(lǐng)域在這些年相應(yīng)地發(fā)生了巨大的變化,各種類型、各種不同層次的教育機構(gòu)大量出現(xiàn),改變了過去高等教育機構(gòu)單純負責(zé)培養(yǎng)具有從事復(fù)雜腦力勞動的高級專業(yè)人才的狀況。這些變化最終體現(xiàn)為教師的工作,體現(xiàn)為教師針對不同的教學(xué)對象所制定的教學(xué)目標體系。
當(dāng)前,由于社會信息化的發(fā)展,各類計算機類課程已經(jīng)滲透到各個學(xué)科,例如筆者所在的蘇州大學(xué),幾乎所有的院系都設(shè)置了信息技術(shù)類的有關(guān)課程,大約超過一半的院系設(shè)置了“計算機程序設(shè)計語言”的課程,因此“計算機語言設(shè)計課程”的教學(xué)質(zhì)量是總體教學(xué)質(zhì)量評估的重要組成部分。筆者多年來一直在蘇州大學(xué)承擔(dān)程序設(shè)計語言的課程,包括一類本科計算機專業(yè)基礎(chǔ)課程、二類本科專業(yè)基礎(chǔ)課和公共基礎(chǔ)課程。大量的教學(xué)實踐表明單一的教學(xué)目標不能適用多樣化的教學(xué)對象、多樣化的人才需求和程序設(shè)計語言知識邏輯在廣度和深度方面所具有的層次化的特點。下面將論述程序設(shè)計語言課程的層次化的教學(xué)目標體系及各層的具體內(nèi)涵。
2.1低級目標
該目標要求掌握標準化的程序語言語法體系,以學(xué)生掌握基本的標準語法體系為基本要求,并能初步應(yīng)用語言開發(fā)較小型的簡單應(yīng)用程序,具備初步的程序設(shè)計能力。低級目標要使得學(xué)生對所學(xué)知識“知其然”,課程教學(xué)內(nèi)容主要圍繞標準的語法規(guī)則,課堂和實驗環(huán)節(jié)所選定的程序?qū)嵗蠖鄧@著驗證和演示語法規(guī)則及語法規(guī)則之間的聯(lián)系進行設(shè)計。在以低級目標驅(qū)動的教學(xué)中,因為重在基本知識的傳授,因此核心教學(xué)內(nèi)容的選擇是第一位的要素。當(dāng)然每門程序設(shè)計語言課程都有其固有的核心內(nèi)容,例如,在C++語言中,核心的教學(xué)內(nèi)容為:面向?qū)ο蟮母拍?、繼承、多態(tài)、模板及異常等,即使如此,還需要根據(jù)教學(xué)對象,對教學(xué)內(nèi)容和授課方式進行選擇和取舍??偟脑瓌t是圍繞重點概念和知識采取“精講多練”和“突出重點”的方式進行教學(xué)。
2.2中級目標
中級目標則要要求學(xué)生圍繞目標程序設(shè)計語言,具備系統(tǒng)化的程序設(shè)計方法和技巧,逐漸使學(xué)生“知其所以然”。該層目標不僅要讓學(xué)生掌握“語法”,還要讓學(xué)生掌握“語義”;不僅讓學(xué)生掌握語言本身,還要讓學(xué)生擴展思維,了解、理解更多的外延的知識;不僅要讓學(xué)生掌握基本的程序設(shè)計方法,要讓學(xué)生初步掌握系統(tǒng)化的程序設(shè)計方法和建立起程序質(zhì)量的觀點。程序設(shè)計語言的外延知識涉及計算機專業(yè)許多重要的核心課程,包括編譯原理、算法分析與設(shè)計、計算機組成與結(jié)構(gòu)、離散數(shù)學(xué)、數(shù)據(jù)結(jié)構(gòu)和軟件工程等。當(dāng)然,不可能指望通過一門課程的學(xué)習(xí),使學(xué)生有效地、完整地掌握所有這些知識,只能使與實現(xiàn)中級目標有緊密聯(lián)系的知識能滲入到重點的知識講授和實驗的安排中。
2.3高級目標
不管是初級目標的“知其然”,還是中級目標的“知其所以然”,都是知識學(xué)習(xí),而高級目標階段的重點是運用知識,體驗知識,要求學(xué)生具備利用目標程序設(shè)計語言解決一定復(fù)雜度和規(guī)模的實際問題的能力,建立抽象的程序設(shè)計思想、方法和質(zhì)量的觀點。高級目標的教學(xué)內(nèi)容的重點在如何在所講授的語言框架里解決一定規(guī)模的應(yīng)用問題,并從具體的實現(xiàn)里提煉出抽象的設(shè)計思想,分析實現(xiàn)的質(zhì)量,總結(jié)好的實現(xiàn)方法和設(shè)計思想。
確立了教學(xué)目標,下一步的焦點為圍繞實現(xiàn)具體的教學(xué)目標,制定各教學(xué)環(huán)節(jié)的具體的教學(xué)內(nèi)容和教學(xué)手段,主要包括課堂教學(xué)環(huán)節(jié)和上機實踐環(huán)節(jié)。結(jié)合筆者的教學(xué)實踐,下一節(jié)將圍繞這方面的內(nèi)容展開論述。
3層次化的目標引導(dǎo)的課程設(shè)計
C++語言因其強大的功能及廣泛的實用性而日益成為當(dāng)前高校理工類專業(yè)程序設(shè)計的主流教學(xué)語言,因此本節(jié)將以C++為例,討論層次化教學(xué)目標思想如何在教學(xué)實踐中得到貫徹。C++程序設(shè)計語言的教學(xué)涉及課堂教學(xué)和實踐教學(xué)兩個環(huán)節(jié),下面將就這兩方面展開論述。
3.1課堂教學(xué)
確定目標課程的教學(xué)內(nèi)容是開展有效的課堂教學(xué),取得既定的教學(xué)目標的前提和基本要求。針對本文所提出的層次化的教學(xué)目標體系的基本內(nèi)涵,C++程序語言的課堂教學(xué)內(nèi)容在深度和廣度上也應(yīng)該展現(xiàn)出層次化,遞進性的特點。
在低級目標中,掌握本程序語言的基本語法體系是最重要的目標,在教學(xué)內(nèi)容的設(shè)計上,應(yīng)確定語言的最核心最重要的語法現(xiàn)象。過程化程序設(shè)計向?qū)ο蠡绦蛟O(shè)計是C++語言的最重要的特征,因此“對象”和“類”,以及由此產(chǎn)生的“繼承”,“封裝”,“多態(tài)”和“異?!?成為最核心的教學(xué)內(nèi)容。在教學(xué)時應(yīng)集中注意力于這些類對象的關(guān)鍵個性技術(shù),圍繞關(guān)鍵技術(shù)“精講多練”,使學(xué)生深刻理解面向?qū)ο驝++的這些關(guān)鍵技術(shù);要有重點,不能面面俱到,有所失,才能有所得。
低級目標是為了使學(xué)生掌握知識,使其“知其然”,那么中級目標則要逐漸使受教育者“知其所以然”,教學(xué)的重點從對語法的訓(xùn)練轉(zhuǎn)向?qū)φZ義的理解,包括靜態(tài)結(jié)構(gòu)語義和程序執(zhí)行語義。在C++的教學(xué)中,以C++對象模型作為教學(xué)內(nèi)容的重點,通過從靜態(tài)的程序代碼結(jié)構(gòu)和運行的程序狀態(tài)兩方面展開課堂教學(xué),這樣在知識語言的“所以然”的基礎(chǔ)上,學(xué)生不僅知道什么是“多態(tài)”,并且知識“多態(tài)”是怎么實現(xiàn)的;什么是運行時類型檢查(RTTI),運行時類型檢查能提供什么程序設(shè)計策略等;許多的外延知識能沿課堂展開,例如編譯原理、算法分析與設(shè)計等。由Stanley B. Lippman所著的《Inside The C++ Object Model》為我們設(shè)計課程材料提供了方向性的指導(dǎo)。
低級目標和中級目標都是針對知識的學(xué)習(xí),而高級目標則針對知識運用,提高運用知識進行設(shè)計的能力。此層次涉及知識的學(xué)習(xí)、理解和綜合運用,要在有限的時間內(nèi),實現(xiàn)教學(xué)目標,在課程教學(xué)內(nèi)容的選取和設(shè)計及課時的安排上,具有一定的難度,對教者和學(xué)者都具有一定的挑戰(zhàn)性?!霸O(shè)計模式”可以成為本層次的基本或延展性的教學(xué)內(nèi)容。設(shè)計模式雖然不與具體的設(shè)計語言有著必然的、密切的聯(lián)系,但事實上各種技術(shù)性、或純教學(xué)性的書籍中,都把面向?qū)ο笳Z言作為實現(xiàn)各種設(shè)計思想的不二選擇。通過設(shè)計模式內(nèi)容的講授,可以使得學(xué)生對面向?qū)ο蟮幕A(chǔ)知識有更深刻的理解,同時增強靈活運用所學(xué)知識的能力,體驗面向?qū)ο蟪绦蛟O(shè)計方法學(xué)所帶來的設(shè)計上的“美”,激發(fā)學(xué)生的創(chuàng)造力。
當(dāng)然,上面針對課堂教學(xué)內(nèi)容的論述僅僅進行了基本的界定和論述,需要通過下面幾方面來貫徹實施,以達到各個層次的教學(xué)目標:
(1) 通過教者的努力,設(shè)計出豐富的、具體的課程素材;
(2) 針對不同的教學(xué)內(nèi)容,設(shè)計多樣化的教學(xué)手段和方法;
(3) 針對不同的教學(xué)內(nèi)容布置合理的作業(yè)和考核方法。
3.2實踐教學(xué)
在程序設(shè)計語言的教學(xué)中,課堂教學(xué)和上機實踐教學(xué)是并重的環(huán)節(jié),不可偏廢,一起決定著教學(xué)的質(zhì)量和教學(xué)目標的取得。如何設(shè)計安排上機環(huán)節(jié)通過大量的教學(xué)實踐,已經(jīng)總結(jié)出了大量的行之有效的方法。下文就實驗內(nèi)容及實驗的組織形式進行一些必要的、有益的討論。
結(jié)合課堂內(nèi)容,以往的實踐環(huán)節(jié)主要由學(xué)生編制一些小的程序,進行語法現(xiàn)象的演示及驗證。但筆者通過大量的教學(xué)實踐發(fā)現(xiàn):這種普遍采用的,且行之有效的方法,對于學(xué)生鞏固知識,提高調(diào)試程序的能力和技巧具有顯著的效果。但隨著教學(xué)的深入,這種方法也顯示出種種的弊端,例如:學(xué)生專著于知識點,必然缺乏對知識的整體把握;學(xué)生容不易形成良好的編程習(xí)慣等。針對這種情況,筆者在實踐的環(huán)節(jié)中,增加“讀程序”的分量。教師提供一些高質(zhì)量的程序范例讓學(xué)生進行閱讀、理解,并對范例的程序風(fēng)格和設(shè)計方法進行總結(jié)比較,以提高學(xué)者的綜合能力,尤其是到了后期,所提供的范例更具有綜合性、全面性和示范性,能極大地提高學(xué)生掌握知識的深度和廣度,激發(fā)他們的學(xué)習(xí)熱情。
在實踐人員的組織形式上,一般在程序設(shè)計語言的教學(xué)中,都是學(xué)生獨立進行的。在教學(xué)實踐中,也可引進一些軟件開發(fā)中的方法,比如采用小組制的形式,根據(jù)實踐內(nèi)容的不同,小組或大或小。即使是在低層目標為導(dǎo)向的教學(xué)中,也可采用小組的方法進行實踐環(huán)節(jié)的教學(xué),不過此時小組人數(shù)不宜過多,最佳數(shù)目為二人。采用這樣的方法,有以下的益處:
(1) 便于學(xué)生進行交流,以達到取長補短的目的;
(2) 提高教學(xué)效率,以較少教學(xué)活動取得同樣甚至更好的效果;
(3) 培養(yǎng)團隊合作精神等。
在以中級和高級目標為導(dǎo)向的教學(xué)中,實踐環(huán)節(jié)應(yīng)從語法演示和驗證為重點轉(zhuǎn)變?yōu)橐灾R的理解和知識的運用為重點,因此除了結(jié)合教學(xué)內(nèi)容設(shè)計相應(yīng)的實踐內(nèi)容外,最顯著的特點是增加綜合性的項目開發(fā)環(huán)節(jié),以達到知識的綜合掌握和運用。
當(dāng)前以語法的演示和驗證目的實踐環(huán)節(jié)的設(shè)計具有大量的教學(xué)實踐可資借鑒和學(xué)習(xí),但針對更高兩層教學(xué)目標的實踐環(huán)節(jié)則缺乏有效的素材和經(jīng)驗可以利用,需要通過進一步的教學(xué)實踐活動加以積累和總結(jié)。當(dāng)前的一些做法是借用開發(fā)一個具有一定規(guī)模的項目來彌補純語法的演示和驗證實踐方法的不足。
4結(jié)論
本文針對當(dāng)前在程序設(shè)計語言的教學(xué)中存在的問題,提出了多層次教學(xué)目標的觀念,并介紹了各層次目標的具體內(nèi)容和以此目標為導(dǎo)向的主要的教學(xué)環(huán)節(jié)的設(shè)計。各個層次的教學(xué)內(nèi)容和教學(xué)方法手段并不是彼此割裂的,如何針對各種不同的教學(xué)對象進行合理的課程設(shè)計,以提高教學(xué)質(zhì)量有待于進一步的大量的教學(xué)實踐活動。下一步最主要的工作總結(jié)探索各種教學(xué)資源以及相應(yīng)的考核方法,尤其是用于中級目標和高級目標為導(dǎo)向的教學(xué)活動。
參考文獻:
[1] 吳乃陵. 面向?qū)ο驝++程序設(shè)計教學(xué)改革[J]. 電氣電子教學(xué)學(xué)報,2003,25(2):9-11.
[2] 徐宏喆,聶影,黃征華,等. 計算機程序設(shè)計語言的教學(xué)探索[J]. 教學(xué)研究,2004(2):89-93.
[3] 沈軍. 程序設(shè)計語言類課程的教學(xué)思路研究[J]. 高等工程教育研究,2001(1):80-82.
[4] Stanley B. Lippman. Inside The C++ Object Model [M]. Addison-Wesley Publisher, 1996.
[5] Erich Gamma, Richard Helm, Ralph Johnson ,et al. Design Pattern: Elements of Reusable Object Oriented Software [M]. Addison-Wesley Publisher,1995.
Research on Teaching of Programming Language
CHEN Dong-huo,YAO Wang-shu
(School of Computer Science and Technology, Soochow University, Suzhou 215006, China )
Abstract: Programming language is the core course, which has very strong impact on understanding to the basic knowledge and theory of computer science and technology. Considering the current state of teaching of programming language, this paper proposes the idea of multi-levels teaching goal, introduces the basic intension in detail, and discusses how to implement the idea in teaching practice of C++ programming language.
Key words: programming language; multi-levels teaching; C++