摘要:我院針對“C語言程序設計”教學過程中存在的問題,以建構主義作為指導,提出了“認知-驅動-自主”教學模式。本文介紹了我院在這方面的探索和實踐效果。
關鍵詞:教學改革;認知結構;驅動式教學;自主學習
中圖分類號:G642 文獻標識碼:B
1引言
C語言中特殊語法現象、知識點和難點內容較多,是比較難教和難學的一門課程。在C語言的教學過程中常常會出現這樣的矛盾和沖突:教師主要抱怨課時少,學生底子薄,難以深入理解課程的要義和精華;而學生則抱怨課程內容紛亂繁雜、枯燥乏味,難以學習,更難以實際運用,因而缺少學習的興趣和動力,更談不上自主學習。其原因可以從兩方面來分析。第一,忽略了認知結構在學習過程中的重要性,不注重幫助學生構建所學課程的認知結構,致使學生學習目的不明確,學習動力不足,只是孤立地記憶各章節涉及到的概念和語法規則,即使到課程結束也不能深入理解課程的要義和精華。第二,傳統教學模式是采用先理論后實際,先抽象后具體,先一般后個別的方法,學生基本上是被動灌輸,容易產生厭煩心理,難以調動學生學習的積極性和自主性,不利于學生素質和能力的培養。
針對這些問題,我們以建構主義學習理論作為指導,經過多年的教學實踐,提出了“認知-驅動-自主”教學模式。也就是,通過幫助學生構建課程的認知結構,使學生深刻理解和掌握“C語言程序設計”課程的要義和精華,采用問題和任務驅動式教學方式,調動學生的學習積極性和學習興趣,培養學生分析解決問題和邏輯思維的能力,培養學生的創新意識,最終達到學生自主學習的目的。
2幫助學生構建課程的認知結構
所謂課程的認知結構就是組成課程的各部分內容及各部分的相互聯系和層次關系的框架。有了這種對課程的整體認識,學生們在學習過程中,特別是開始的一段時間里,對較多的新概念及繁雜的語法現象就不會孤立地去看待,而是看作一個整體的一部分,是相互有機地聯系在一起的。學生在學習過程中就會有明確的學習目的,就能抓住重點,掌握課程的本質,學得更有信心。
我們可以從內容(語義)和形式(語法)兩個方面來構建認知結構。在向學生介紹C語言的認知結構時,使用對比法講授能起到事半功倍的效果。
就語義方面而言,C語言程序可以比作生產。生產可以看成對原材料的加工而產生出產品的過程。原材料和產品有不同種類,不同種類的原材料和產品有不同的存放場所,生產中有不同的加工方法和加工流程等。與生產類似,程序可以看成對數據的處理而產生結果的過程,數據和對數據的處理是C語言的兩大內容。C語言的數據類型分為:整型、浮點型、字符型、枚舉型和指針。基本數據類型可構成構造類型(基本的數據結構):數組、結構體、共用體、文件。不同的數據類型和構造類型需申請不同的存儲空間(變量、數組、文件等)來存放,可以用說明語句實現。C語言中對數據的處理由運算符、表達式、語句(輸入語句、賦語句、輸出語句)、函數組成,對數據處理的控制又可分為順序、分支、循環以及函數調用等。申請數據的存儲空間→輸入數據→處理數據(包括流程控制)→輸出結果,是程序設計的一條主線。
就語法方面而言,可以與我們使用的漢語進行比較。學習漢語的過程是這樣的:認字→組詞→造句→做文章,人們總是先學會認字,然后再學習組詞,學習造句,最后學習做文章,每一步都要遵守相應的語法規則或固定的格式。而C語言的語法同樣包括四個部分:字符集、單詞(單詞包括常量、標識符、保留字、運算符和界符,由單詞可構成數組及元素、函數調用、表達式等)、語句、函數和程序,每部分都有其固有的構成規則。
C語言的認知結構是“C語言程序設計”課程的總綱,是精要所在,不僅要在課程開始時介紹,在整個課程中都應該經常提出加以講解。一方面C語言課程的認知結構對課程具體內容的學習能起到指導作用,另一方面通過具體內容的學習能加深對C語言課程認知結構的理解。只有對認知結構有了深刻的理解,才能真正意義上掌握了C語言,今后再學其他程序設計語言時,就會變得容易和迅速。
3問題驅動和任務驅動式教學與自主學習
3.1問題驅動教學實例
例如,在學習科學記數法的表示時,我們習慣的表示形式(如0.1234ⅹ10-5)為什么在C語言中被規定成另一種形式(如0.1234e-5)?是C語言就應該這樣“深奧”?還是C語言“成心為難”我們?答案是在用計算機編寫程序時,0.1234ⅹ10-5不易書寫。這個問題告訴學生,C語言也是人創造出來的,它并不神秘,只要條件許可,它會盡可能地讓我們易學易用。
又例如,在C語言中標識符可作為變量名、數組名、函數名等,標識符的定義為“以字母、下劃線開頭后跟字母、下劃線和數字的字符序列”。為什么非要這樣定義呢?答案是現在的計算機還很不“聰明”,如果變量名寫成A+5的話,計算機不能區分出它是一個變量名還是一個表達式。這個問題告訴學生,在學習過程不要死記硬背,而應該努力探詢事物的本質。
再例如,求 是循環控制這一章必講的一個典型例題,經分析,我們引入三個變量:sun表示累加和;t表示求和多項式中的某一項;i表示已累計的項數,并將該題的求解思路描述如下:每當得到求和多項式中的某一項t后就將其累加到sum中,直到已累計的項數i大于100為止。該算法包含了一個學生必須掌握的基本編程技能:累加(乘)。緊接著提出一個問題:如何求 ?該問題引導學生通過模仿前一個例題,通過自我探索,從而掌握另一個基本編程技能——迭代,從而達到培養能力的目的。
3.2任務驅動教學實例
任務驅動教學模式運用于C語言教學,其形式是:提出任務→師生共同分析完成任務的方法和步驟→適當講解或自學或協作學習→完成任務→交流或歸納。
例如,在講授分支結構程序設計時,可以設置“小學生四則運算程序”、“個人所得稅計算程序”等任務;講授循環結構程序設計時,可以設置“小學生數學試卷自動生成和自動評判程序”、“密碼設置程序”等任務;講授數組時,可以設置“學生成績統計和分析程序”等任務;講授結構體和鏈表時,可以設置“通訊錄管理程序”等任務;講授文件時,可以設置“英語單詞出現頻率統計程序”
3.3問題和任務驅動
問題驅動和任務驅動緊密相關,一個問題可能引發一個任務,在完成任務的過程中又可能產生多個問題。
例如,在進行格式輸入函數scanf和格式輸出函數printf教學時,提出一個任務“出1個加法練習題”。圍繞這個任務進行討論分析,指出題目和結果顯示要用格式輸出函數,出題和回答問題都要用到格式輸入函數,然后再介紹格式輸出函數和格式輸入函數的格式及其功能。在講授分支結構程序設計時,可以在上一個任務的基礎上,提出一個新問題“出1個加法練習題,回答正確顯示OK,錯誤顯示Wrong”。在進行循環結構教學時,我們可以提出“出10個加法練習題,每題正確的加10分,錯誤的不給分,并計算總分”。在進行函數教學時,提出新的任務“出1個加法題并判斷正誤,能否做成一個小模塊?”。進一步,“出1個加法題可否由計算機隨機產生?”,從而引出自定義、庫函數和編譯預處理等概念。在進行數組教學時,我們可以進一步提出更復雜的任務“學生成績統計和分析程序”等等。
問題和任務驅動是計算機語言程序設計課堂教學中非常適用的一種先進的教學方法,經過多年的教學實踐,我們總結出以下幾點經驗:
(1) 問題和任務的設計要有明確的針對性目標,應在課程知識體系和認知結構的框架內,對那些最基本最重要的教學內容進行精心設計;
(2) 問題和任務的設計要符合學生的特點,選擇的問題和任務要難易適中,盡量是學生所熟知的,盡量具有趣味性;
(3) 問題和任務的設計要有連續性、漸進性和層次性,盡量使一個任務涉及盡可能多的教學內容,使一個任務從簡到繁、從易到難;
(4) 針對問題和任務驅動教學模式,采取靈活多樣的教學形式,如根據學生特點組成學習小組,課前對問題和任務進行思考,課后自主完成任務,并提交總結報告等;
(5) 在解決完問題和任務后,教師要對問題和任務進行歸納總結,明確提出知識要點和技能要點。
4結語
“認知-驅動-自主”教學模式的研究和實踐是我校教學改革重點研究項目“計算機基礎教學改革的研究與實踐”的核心部分。幾年的實踐表明,“認知-驅動-自主”教學模式切實可行并且效果顯著,計算機基礎的教學質量有了明顯改善,我校計算機等級考試的通過率有了顯著提高?!罢J知-驅動-自主”教學模式不僅適用于“C語言程序設計”課程,對其他學科課程也會起到重要的借鑒作用。
美國著名教育家杜威指出:“教育的目標在于使人能夠繼續教育自己”,這與“認知-驅動-自主”教學模式的目標是一致的。
參考文獻:
[1] 譚浩強. C程序設計(第3版)[M]. 北京:清華大學出版社,2005.
[2] 何克抗. 建構主義─革新傳統教學的理論基礎(上)[J]. 電化教育研究,1997,(3):3-9.
[3] 溫彭年,賈國英. 建構主義理論與教學改革——建構主義學習理論綜述[J]. 教育理論與實踐,2002,23(5):17-22.
[4] 馮忠良. 結構-定向教學的理論與實踐[M]. 北京師范大學出版社,1992.
[5] 劉寶存. 美國研究型大學基于問題的學習模式[J]. 中國高教研究,2004,(10):60-62.
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文