文章編號:1672-5913(2008)05-0056-03
摘要:針對當前編程語言教學實踐過程中出現(xiàn)的問題,本文探討一種新的教學實踐方法QDeV,該方法的特色是質(zhì)疑驅(qū)動、以驗證性設計為核心、個性化和實踐性。
關(guān)鍵詞:QDeV;質(zhì)疑驅(qū)動;驗證性設計
中圖分類號:G64
文獻標識碼:B
1 引言
高校學生,尤其是計算機相關(guān)專業(yè)的學生,需要學習多種編程語言,如C/C++、Java、SQL等。在編程語言教學實踐過程中,最根本的目標是如何在短時間內(nèi)使學生掌握足夠多的語言元素的語法和語義,使學生能運用這些元素進行簡單的問題求解,然后逐步進行復雜系統(tǒng)的開發(fā)。但教學過程存在一些問題:過度灌輸、照本宣科、教學負擔重。學生也存在一些問題:對課堂內(nèi)容缺乏興趣,對自行設計缺乏信心,缺乏方法指導。本文針對以上問題,探討一種簡單有效的方法,以改善課堂教學和實踐的效果。
為此,我們將注意力放在最基本最細微的教學實踐環(huán)節(jié)上。經(jīng)實踐觀察,在編程語言教學實踐中,最基本的環(huán)節(jié)是質(zhì)疑和驗證:質(zhì)疑在于確定一個問題,而驗證在于對此問題求解并得到結(jié)論。最理想的教學效果是學生能自行質(zhì)疑,自行設計驗證結(jié)論,這樣學生有興趣,教師也輕松。但如何驗證是一個亟待解決的問題。雖然文獻[1]中提出了問題求解的基本過程ADePT,但它是面向軟件開發(fā)的過程,不適合編程語言的教學和實踐。經(jīng)過幾年的教學實踐和觀察總結(jié),研究嘗試了多種方法[2],最后我們總結(jié)出一種適合編程語言教學實踐的方法,稱之為QDeV方法。
2 QDeV方法
QDeV方法是包含4個環(huán)節(jié)的一個過程:Question質(zhì)疑、Design設計、execution執(zhí)行和Validation確認。此過程貫穿于每個關(guān)鍵性語言元素所涉及的每個問題,即對一個問題貫穿4個環(huán)節(jié):“質(zhì)疑”是明確提出一個問題;“設計”是給出簡單編程;“執(zhí)行”是在環(huán)境中運行程序以得到可觀察結(jié)果;“確認”是對問題給出結(jié)論。
QDeV方法的依據(jù)如下:
(1) 明確目標能提高學習實踐效率。質(zhì)疑就是為了使學生明確自己的目標和不足。
(2) 所有的編程元素都是可驗證的。
(3) 多數(shù)驗證是簡單的、可在課堂上當場進行。
(4) 驗證性學習優(yōu)于灌輸結(jié)論。
本文所用術(shù)語“驗證verification”不同于軟件工程中的軟件驗證。軟件驗證反映軟件測試的概念,包含了多種軟件測試技術(shù)。而本文中的驗證指的是“證實、通過比較、調(diào)查或參考等途徑來確定或考察某件事情的真實性或確切性”。本文中“確認validation”類似于軟件工程中的用戶確認,這是因為編程人員是編程語言的用戶。
2.1Q質(zhì)疑
質(zhì)疑就是明確指出一個問題。質(zhì)疑一方面來源于教師,教師根據(jù)課程需要引出問題,往往是引出新的語言元素的語法和語義問題。另一方面來自學生提問。教師應鼓勵學生主動提問,也應引導學生自行完成后續(xù)的設計驗證。如果教師直接給出結(jié)論而不驗證,學生雖可免去驗證負擔,看起來效率高,但學生也失去了自我驗證的機會和樂趣。
提出的問題有多種:“是否”、“能否”、“結(jié)果是什么”是較具體的問題。例如,在C/C++課程中,“函數(shù)能不能返回一個數(shù)組類型?”。具體問題可進入下一個環(huán)節(jié)。另一方面,“如果…將會怎樣”、“如何”、“為何”這類問題的驗證就比較復雜。例如,“訪問數(shù)組時下標超界將會怎樣?”對此類問題先給出一個具體編程實例,然后在特定語境中再討論此問題。
教師在收到學生提出的一個問題后,對此問題的“質(zhì)量”先給出直觀的判斷,以決定是否進行設計驗證。對于以下問題,教師應給出比較具體的設計驗證:
(1) 新問題。
(2) 多數(shù)學生存疑的問題。
(3) 涉及到關(guān)鍵概念的問題。
(4) 需要較復雜的設計驗證的問題。
2.2D設計
根據(jù)問題設計一個驗證方法。具體來說,做一個簡單編程,包含一個動作或一系列動作,并設想一個可能的結(jié)果。
一般來說,當引入一種新的語言元素問題時,大多教材都能給出相應的驗證方法。對于同一個問題,往往存在多種驗證途徑。教師可給出不同于教材的驗證方法,也應引導鼓勵學生嘗試自行設計。
經(jīng)驗表明,學生對于新學習的語言元素往往不能當場掌握,一般需要課后復習并完成作業(yè)之后才能熟練掌握。所以教師所采用的方法應該是學生已掌握的,使學生能看懂設計,然后再模仿改進。在此環(huán)節(jié)中,對設計的要求如下:
(1) 針對性:一個設計僅針對一個問題。
(2) 可驗證的:可執(zhí)行或通過觀察能確認。
(3) 簡單的,學生可直接理解:最簡單的設計往往是一個表達式或單條語句。
2.3e執(zhí)行
在開發(fā)運行環(huán)境中嘗試執(zhí)行,獲得可觀察的結(jié)果。這里的執(zhí)行并不一定是完整程序的執(zhí)行,有時僅僅是用編譯器來驗證某種語法現(xiàn)象的合法性,并利用編譯器給出的語法錯誤提示來確認結(jié)果。
在此環(huán)節(jié)中,需要建立一個交互式執(zhí)行環(huán)境。例如,在C++課程中需要一個Visual C++集成開發(fā)環(huán)境。在Java課程中需要一個虛擬機,可使用簡單的DOS界面,也可使用諸如Eclipse的集成開發(fā)環(huán)境。在數(shù)據(jù)庫SQL課程中則需要一種關(guān)系型數(shù)據(jù)庫服務器,再加上一個簡單的客戶端工具,能執(zhí)行SQL指令,能觀察數(shù)據(jù)庫中的表結(jié)構(gòu)、觸發(fā)器等。當前的多媒體教學設備基本能滿足教師當場執(zhí)行的需要。教師應要求學生必須熟練使用環(huán)境和工具。
2.4V確認
從執(zhí)行結(jié)果中斷定真或假,而有時確認是基于觀察的。例如在數(shù)據(jù)庫系統(tǒng)SQL語言教學中,當執(zhí)行一個create table MyTable語句時,如果語法錯誤,系統(tǒng)將給出提示。如果語法正確,將在系統(tǒng)中建立一個MyTable新表。要驗證此表存在,可簡單地使用客戶端工具來查看就能確認。
確認的途徑是多樣的,可能要運行其他工具。例如,一個函數(shù)將一個字符串的內(nèi)容轉(zhuǎn)換為一個十六進制數(shù)據(jù)串。要確認輸出正確,對于英文字符就要查ASCII編碼表,對于中文字符應核對GB編碼表,這可使用其他工具,如Office。
在確認解決一個問題之后,往往又會引出相關(guān)其他問題。再質(zhì)疑,重新開始下一輪設計驗證。所以QDeV方法往往以循環(huán)往復方式進行。如何采用此方式進行更復雜的系列化的驗證是進一步的工作。
3 QDeV特色及應用
QDeV方法的特色如下:
(1) 質(zhì)疑驅(qū)動。沒有質(zhì)疑就無需學習。在教學實踐過程中,教師可引導學生廣泛質(zhì)疑、深度質(zhì)疑,以調(diào)動學生的積極性和主動性。當完成一章教學,教師可將本章所有經(jīng)完整驗證的問題作為重點,形成“問題一覽表”,以督促學生及時對照解決。當完成一門課程,教師可列出全部問題,以方便學生重點復習。
(2) 以驗證性設計為中心。一個設計的目的僅僅是為了驗證一個問題,簡單性設計是關(guān)鍵。能當場執(zhí)行并看到結(jié)果,效果最佳。
(3) 個性化。不同的學生會對不同的問題感興趣,會提出不同的問題,也會給出不同的驗證途徑。個性化的學習實踐能有效促進自學。
(4) 實踐性。鼓勵學生自己動手,有助于提高學生發(fā)現(xiàn)問題、分析設計和觀察能力。
本文建議采用QDeV來考察學生的學習實踐效果。如表1所示。
這種考察方法的依據(jù)是QDeV這4個環(huán)節(jié)依次進行,而且難度依次遞減,質(zhì)疑難度最大,設計次之,確認最易。
對于一般難度的問題,教師在多數(shù)情況下可按表中第3級方式進行講授,即課堂上給出問題和設計,之后就說明結(jié)論,由學生根據(jù)自己的接受情況來選擇是否需要執(zhí)行和確認。這樣課堂上保證70%的學生能理解掌握。經(jīng)過幾個學期的QDeV實踐,在以下方面取得成效:
(1) 學生興趣提高,考核成績相對提高5~8個百分點。
(2) 教師負擔減輕,可持續(xù)改進教學方法。
(3) 師生之間以質(zhì)疑和驗證建立良好的溝通。
4 結(jié)束語
編程語言教學實踐過程中存在課堂缺乏驗證、學生缺乏興趣的問題,本文從最基本的教學實踐環(huán)節(jié)入手,以質(zhì)疑和驗證為基礎(chǔ),探討了一種新的教學實踐方法:QDeV,包含了4個環(huán)節(jié):Question質(zhì)疑、Design設計、Execution執(zhí)行、Validation確認。該方法的特色是質(zhì)疑驅(qū)動、以驗證性設計為中心、個性化和實踐性。實踐表明QDeV能有效改善編程語言教學實踐的效果。
參考文獻
[1] 嚴悍,衷宜,張琨.ADept:啟發(fā)程序求解能力的一種有效途徑[J].中國當代教育,2006,(5):1-5.
[2] 余立功,嚴悍,宋繼紅.基于具體項目的項目管理教學[J].計算機教育,2007,(6):34-36.