摘要:提出基于核心語法子集優化教學內容、基于認知理論優化教學方法和建立多元化優質教學資源3大改革途徑,結合科學實驗和經驗提出程序設計語言核心語法子集的確定方法。總結認知理論的基本教學原則,以實例的形式闡述程序設計類基礎課程的優化教學方法。
關鍵詞:認知理論;核心語法子集;程序設計;教學改革
文章編號:1672-5913(2013)03-0022-04
中圖分類號:G642
計算機程序設計類基礎課程是高校計算機基礎教學體系的核心課程,從國內教學現狀來看,許多學生對程序設計技能訓練不夠,不能很好地樹立“程序設計思維”,多數學生不能獨立編寫解決實際問題的程序。究其原因,一是在有限的課時內灌輸大量繁雜語法知識,導致程序設計技能培養投入不足;二是限于初學者的認知水平難以建立程序設計的邏輯思維方式。死的語法知識是“魚”,而程序設計能力是“漁”,“授人以魚”不如“授人以漁”。因此,我們提出精簡和優化語法教學內容,以核心語法子集進行教學的思想,以認知理論為指導,探討優化的教學方法,以此提高程序設計基礎類課程的教學實效。
1 基于語法子集的教學內容優化
目前大多數學校在教學內容方面注重語句、語法等語言細節,基本是以高級語言的語法體系為脈絡展開教學,沒有把邏輯與編程解題思路放在主體地位,對如何分析問題和解決問題講得不夠,對學生的編程能力、上機解題能力訓練不夠,以至于學生難以獨立編寫正確的程序,面對實際問題求解的編程顯得束手無策。由于在語法教學內容上追求大而全,導致教師迫于完成教學任務進行“填鴨式”的“滿堂灌”,忽略了學生的學習主體特征,不能很好地調動學生的主動性。學生創新能力的重要性已普遍共識,程序設計類課程對創新能力的培養主要體現在解決實際問題的獨立編程能力上。只有重視算法和程序設計技能的教學,才能達到這一目的。對于語言的語法內容,夠用即可,每種程序設計語言應選擇其核心語法子集來教學。因此,首先要按照教學目標要求確定所要解決的各類基本問題,得到基本問題所構成的問題空間;然后確定問題空間求解涉及的基本算法范圍。根據算法范圍尋找核心教學語法子集。通過實驗研究結合人工經驗,分別得出實驗語法子集和經驗語法子集;再將兩者結合起來,最終確立核心教學語法子集。
1.1實驗語法子集的確立
實驗語法子集的確立要通過客觀實驗完成,需要利用計算機信息處理技術,對主流教材、課件和其他材料中出現的程序設計語言關鍵字和語法點的頻率進行統計分析;利用計算機對統計分析結果進行使用頻度排序,獲得各種語法點的實際應用頻率的客觀度量,然后以使用頻度為依據確立實驗語法子集。獲得實驗語法子集需要經歷如下3類步驟。
1)實驗分析。這個階段要分析“程序設計基礎”類課程的教學內容要點,確定問題空間,從而確定系列課程所涉及的算法大類;結合具體語種的特點,分析具體語言涉及的關鍵字。為便于采用計算機信息處理技術進行研究,可以只從關鍵字的角度研究基本語法要素構成的語法子集,不必考慮語法結構問題。
2)實驗設計。包括以下幾個子步驟:①原始數據數據采集。原始數據可以來源于目前國內外用于“程序設計基礎”課程的典型教材、課件和其他資料。②數據處理,對符合基本算法范圍的程序進行單詞劃分和標注,由實際材料中經典程序里面出現的單詞組建詞表文件。③數據統計,對數據處理階段得到的詞表文件進行統計;找出具體程序語言的關鍵字在所有實際材料中出現的總頻數,得到語言關鍵字使用頻數統計表。④數據分析,通過對語言關鍵字使用頻數統計表進行分析,得出統計結果。
3)實驗實施。該階段按照實驗設計的步驟進行具體操作,其中,在數據采集環節要利用典型教材的電子版,有些教材電子版文件格式可能是非文本的,需要轉換為文本格式。轉換中可能用到的轉換軟件,如Pdg2Pic軟件可以將PDG文件轉換為TXT的文本格式;漢王PdfConverter(免費版)能快速準確地將PDF文件轉換成Word格式的rtf文件或txt文本文件。
1.2經驗語法子集的確立
與實驗語法子集相并行的是經驗語法子集,它是靠人工經驗確立的語法子集。獲得經驗語法子集的操作過程有3步,第一步,針對具體的程序設計語言設計一種語法點使用頻度的問卷調查表。第二步,利用調查表向教學經驗豐富的一線權威教師進行問卷調查,從而獲得第一手原始資料。第三步,對獲得的調查表進行統計分析,對各語法點的使用頻度得出經驗排序,根據排序結果選取經驗語法子集。
1.3核心語法子集的確立
結合實驗語法子集和經驗語法子集,取兩者的公共交集,即可得到核心語法子集。將核心語法子集作為教學語法子集,實現語法教學內容的優化。
2 基于認知理論的教學方法優化
2.1認知理論與教學設計原則
認知學習理論是通過研究人的認知過程來探索學習規律的學習理論。主要觀點包括,人是學習的主體,主動學習;人類獲取信息的過程是感知、注意、記憶、理解、問題解決的信息交換過程;人們對外界信息的感知、注意、理解是有選擇性的以及學習的質量取決于效果。
布魯納的認知發現說和奧蘇貝爾的認知同化說是現代認知學習理論的兩大典型學說。布魯納強調指出學習過程是一種積極的認知過程,他認為學習的實質在于主動地形成認知結構;重視人的主動性和已有經驗的作用,重視學習的內在動機與發展學生的思維,提倡知識的發現學習。認知同化說認為,新知識的學習必須以已有的認知結構為基礎;學習新知識的過程,就是學習者積極主動地從自己已有的認知結構中,提取與新知識最有聯系的舊知識,并且加以“固定”或者“歸屬”的一種動態過程。
根據認知學習理論關于學習的基本觀點,與教學實踐相結合,國內外研究者們提出了一系列指導教學設計的原則,這些原則有許多非常適合于程序設計基礎類課程的教學。比如用直觀的形式向學習者顯示學科內容結構,應該讓學習者了解教學內容中涉及的各類知識之間的相互關系;學習材料的呈示應適合于學習者認知發展水平,應按照由簡到繁的原則來組織教學內容;學習以求理解,才能有助于知識的持久和可遷移;學習材料既要以歸納序列提供,又要以演繹序列提供;學習材料應體現辯證沖突,適當的矛盾有助于引發學習者的高水平思維。
2.2優化程序設計基礎課教學方法的若干實例
1)挖掘新知識的生長點,促進知識正遷移。正遷移就是要把已有知識經驗作為新知識的生長點,引導學生從原有的知識經驗中生長新的知識。
以“兩變量值交換”的教學為例,可以用“酒、水交換”這種已有知識經驗作為其新知識的生長點,促使“酒、水交換”操作向“兩變量值交換”操作正向遷移,學生就很容易將新知識納入已有知識結構,牢固掌握“兩變量值交換”的算法。
又如,關于“循環”概念的教學,可以用近義詞“反復”做類比,用累加算法作例題,以學生熟悉的身邊學習生活事例為算法素材。如學生每周的固定時間都要來教室聽同一門課就是合適的循環例子,以反復聽課增加知識量為算法素材。這種教學方法容易引起正向遷移的發生,加深對“循環”新概念的理解。
再如,很多抽象概念可以用學生熟悉的概念做比喻,引發正遷移。筆者在教學面向對象程序設計“消息多態性”概念時,常舉這樣的例子:當老師向不同學生宣布同一消息“今天停課”時,不同學生的反應不同,這就是消息的多態性。在教學面向對象程序設計“構造函數與析構函數”的功能時,常用“接生員與火化員”的作用作類比,使學生牢牢記住構造函數的功能是對剛創建的對象進行初始化;析構函數的功能是對使命完成后的對象進行清除。
2)突出新舊知識對比,避免負遷移發生。在學習過程中,如果對表面相似的新舊知識把握不足,反而使某種舊知識對新知識的學習產生嚴重干擾,這就是負遷移現象需要有效避免。
如學生對“=”號形成了根深蒂固的概念,一看到“=”號就想到兩邊相等;在C/C++語言中經常將應當用等號“==”的地方誤用“=”號。于是,數學“=”號對程序設計語言中的賦值符號“=”形成正確概念帶來干擾。因此,在教學中要突出傳統數學符號“=”與程序設計語言運算符“=”的差異對比。
又如,傳統數學的運算符求值順序規則對C/C++中“右結合性”算符的求值順序規則理解有干擾,對于容易引起負遷移的知識點要突出其對比。
3)由具體到一般的教學模式。程序設計語言中有的句式有非常復雜的完整形式,如果先寫出其完整的理論形式,再舉例說明,往往開始就會引起學生的厭倦情緒。相反,若先通過具體實例說明,然后再總結出一般性規律,對初學者來說更易于接受。如,VB語言中的InputBox函數的運用問題,由于該函數有多個參數,每個參數有不同的含義,控制對話框中出現不同內容。為使初學者易于理解,可先對參數逐個演示其運行效果,用具體的結果突出每個參數的作用,最后總結出該函數的一般語法格式。這一教學原則可以推廣到許多復雜語法格式的教學方法中。
4)歸納與演繹的綜合運用。以C/C++中的二維數組“行指針”及二級指針的教學為例,為了突出該類指針的“性質”以及“*”號對指針的作用結果,可先進行演繹教學:將該類指針變量加減一個整數,觀察值的變化規律,得出性質(移動的地址以什么為單位?);再將“*”號作用到指針變量前,觀察值的變化,發現仍然為地址,再加第二個“*”號上去,觀察得到的值,發現新地址性質的不同。通過演繹再歸納,筆者將“行指針”稱為“二維指針”,而將簡單變量或數組元素的指針稱為一維指針,歸納出如下結論:二維指針加減一個整數n移動n個“行”的距離,而一維指針加減一個整數n只移動n個“元素”的距離。“*”號作用于二維指針或二級指針前,得到的值仍然是指針值(地址),前者得到的指針值數量不變但性質降為一維;后者得到的指針值是一級指針變量的值(即普通變量的地址)。“*”號作用于一維指針或一級指針前,得到的值才是普通值(非地址)。
3 優質教學資源的建設
精煉優化的教學內容和適合的教學方法為提高程序設計課程的教學實效打下了良好的基礎。通過優質建材建設和優質電子資源建設將內容和方法體現在教學資源方面。
一是編寫基于優化核心語法子集的簡明程序設計教材。在教材中要充分體現優化教學方法的思想,精選例題,善用類比,盡量發現可引起正遷移的知識點;要有效避免可引起負遷移的因素,對復雜知識點的處理要遵循從具體到抽象、從簡單到復雜原則;要善于將歸納與演繹進行綜合運用。
二是建立優質電子資源,包括精美課件、電子教案、網上練習題庫,尤其是學生實驗源程序代碼的電子版很值得提供,為學生做驗證性實驗節省很多代碼輸入時間,學生可以將主要精力放在對程序理解、調試和修改方面,提高實驗課的實際效果。
4 結語
通過上述理論和實踐經驗,望能對非計算機專業計算機程序設計基礎類課程的教學改革起拋磚引玉作用,同時對計算機專業的程序設計基礎課程起參考借鑒作用。為了今后繼續提高程序設計基礎類課程的教學實效,必須強調程序設計技能的培養,必須精簡和優化語法內容,采用符合初學者認知水平的教學方法,配合優化的多元化教學資源。
(編輯:趙廓)