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

這種考察方法的依據是QDeV這4個環節依次進行,而且難度依次遞減,質疑難度最大,設計次之,確認最易。
對于一般難度的問題,教師在多數情況下可按表中第3級方式進行講授,即課堂上給出問題和設計,之后就說明結論,由學生根據自己的接受情況來選擇是否需要執行和確認。這樣課堂上保證70%的學生能理解掌握。經過幾個學期的QDeV實踐,在以下方面取得成效:
(1) 學生興趣提高,考核成績相對提高5~8個百分點。
(2) 教師負擔減輕,可持續改進教學方法。
(3) 師生之間以質疑和驗證建立良好的溝通。
4 結束語
編程語言教學實踐過程中存在課堂缺乏驗證、學生缺乏興趣的問題,本文從最基本的教學實踐環節入手,以質疑和驗證為基礎,探討了一種新的教學實踐方法:QDeV,包含了4個環節:Question質疑、Design設計、Execution執行、Validation確認。該方法的特色是質疑驅動、以驗證性設計為中心、個性化和實踐性。實踐表明QDeV能有效改善編程語言教學實踐的效果。
參考文獻
[1] 嚴悍,衷宜,張琨.ADept:啟發程序求解能力的一種有效途徑[J].中國當代教育,2006,(5):1-5.
[2] 余立功,嚴悍,宋繼紅.基于具體項目的項目管理教學[J].計算機教育,2007,(6):34-36.