摘要:本文提出了將“C程序設計”教學分成引導入門、實踐提高、實際應用三個階段進行,每個階段均有不同的學習任務和內容,并根據不同階段的特點選用不同的教學方法。分段教學能使學生在具備扎實的基礎知識的同時,又具備解決實際問題的能力。
關鍵詞:建構主義;分段教學;“C程序設計”教學
中圖分類號:G642 文獻標識碼:B
文章編號:1672-5913 (2007) 20-0053-03
信息社會對計算機專業的學生提出了更高的要求:不僅要會使用編程工具,而且要能應用編程工具解決實際問題。然而,傳統的程序設計教學方法過多地關注語言細節而缺乏對學生程序設計方法和能力的訓練,并在一個人為簡化了的教學環境下傳授知識,不利于知識遷移,因此出現了學生學完了程序設計課程卻不會編程的現象。如何使學生具備扎實的基礎知識,同時又具備解決實際問題能力,是目前亟待解決的問題。
建構主義因其倡導的有意義學習,被越來越多的教師用于指導程序設計課程的教學,并塑造了一些教學運作的新方式[1]。但建構主義理論本身還在不斷完善和發展中,建構主義在程序設計教學實踐中的應用還有待進一步的探討。
1建構主義教學觀
實際教學中傾向于選擇建構主義教學觀還是傳統教學觀,應該根據學生的認知規律與教學內容特點而定。
傳統教學觀與建構主義教學觀處于一個系統的兩個極端[2]。傳統教學觀不太強調學習者內在的條件,認為外在知識的內容和結構能完全復制到學生的頭腦中,為了減少學習者的混亂而簡化了真理;建構主義則處于另一個極端,強調學習者,認為學習是對學習者已有概念重新調整的過程,強調提供豐富多彩的學習環境以利于技能的遷移。
以教師為中心的傳統教學觀忽視了學習者對知識的主動建構,忽視了發展學習者的高階思維能力。盡管傳統教學觀遭到批判,但它依然是廣大教師使用最廣泛的教學模式之一,有其存在的價值。傳統的講授法是一種高效的形式和方法,有利于基礎知識和基本技能的系統傳授,并能最大限度地發揮教師的主控作用,教學操作性強,適合學習者初級階段的發展水平。
建構主義教學觀越來越受到普遍的關注。建構主義在知識觀、學習觀、教學觀、師生關系觀和信息技術應用觀等方面提出了與傳統教學觀不同的觀點,有利于促進學習者高階學習和高階能力。它與當前我國教育理念改革和教育信息化的發展方向是一致的。
對于初學程序設計的大學一年級新生,因為沒有建立有效的計算機模型,適于在較為簡單的、限制的環境中,循序漸進地建立關于程序設計的基本概念。此階段主要采用傳統教學方法,幫助初學者較快地建立有效的計算機模型。當學生不再對計算機感到困惑時,應該由傳統教學方法逐步過渡到建構主義教學方法,所呈現的教學情景越來越接近真實問題的環境,從而使學生分析問題、用編程工具解決問題的能力得到越來越多的訓練。
根據“C程序設計”教學內容的特點及學生認知能力的發展過程,教學可分3個階段,分別選用不同的教學方法進行(見表1)。

2分階段選用不同的教學方法
2.1引導入門階段
對于剛接觸程序設計的初學者來說,本階段的任務是快速建立有效的計算機模型,掌握程序的基本構成及常用算法模式,掌握用計算機檢驗所學知識的方法,為后繼階段的學習作積累。
主要學習的內容包括:程序基本構成,控制結構,簡單函數。上機實踐內容主要是學習使用編程環境,驗證和熟悉語法,熟悉常用算法模式,會用計算機來驗證語言知識,分析程序的執行。
教學一開始就應將課程的整體框架引入,讓學生有個整體的概念和學習目標。“概念圖”、“思維導圖”之類的圖形化工具有助于概念知識的表達,可以用于整體框架的引入,也可用于評價學生的學習。
課堂教學中,主要學習程序的閱讀與分析。通過已編好的難度合適的程序將枯燥的數據類型、運算符等基本概念引入課堂,通過問題的解決來研究語法的結構、功能和使用效果;研究各部分代碼的來龍去脈,形成完整的程序結構;研究常見算法模式與編程技巧。同時也使學生了解程序設計風格、技術規范、軟件適用性、程序效率等。問題解決過程中應盡量結合學生原有的學習與生活經驗,有利于新知識的同化。課后,對于常見算法模式,如交換兩個數,查找,求累加和,數組的基本操作等,要求學生熟記并模仿。
通過測試、上機及課后作業等手段,教師利用負反饋及時發現學生的問題,使教師的教與學生的學同步。并要求學生經常小結上機調試經驗。
2.2實踐提高階段
通過引導入門階段的學習,學生已經建立了基本的計算機求解模型,了解了程序的基本構成、程序設計的基本策略與常用算法模式,基本會使用編程工具。此時需要在已有基礎上學習高階的問題分析、程序設計方法,提高解決問題的能力,完成實際技能的提升。
主要學習的內容包括:常見算法,函數,結構,文件。上機實踐內容主要是設計較簡單程序,學會用計算機來測試程序正確與否。
課堂教學中,主要學習問題的分析與解決。對于高階思維的學習適于選用建構主義教學方法。教師需要對課程的知識點有整體的把握,有所選擇地把主要知識點合理地組織到有趣的實際任務中,并考慮到新舊知識的聯系,以推動學習的進行。教學中包括以下要素:
(1) 情景:通過呈現有趣的、接近實際的任務情境,激起學生解決任務的興趣。多媒體及演示動畫的應用有助于學生對任務的理解,使情景更逼真。
(2) 協作:2~4人一個小組。
教師提出任務后,小組內通過交流確定學習目標:明確要實現的功能和功能的劃分。在選擇數據結構與實現方法時,學生可以分工合作,借助教材、參考書、系統幫助等工具獲取算法思路、庫函數使用方法等知識。對于較復雜算法的實現,學生可以分工完成。
(3) 會話:通過會話促進知識的建構,包括師生會話和生生會話。
師生會話:教師引導學生自頂向下地逐步分析出解題思路,并注意啟發性,鼓勵學生提出不同的想法。利用結構化的算法描述工具,如PAD圖,NS圖,可以清晰地呈現解題思路。
生生會話:選擇可用的概念,討論解決的方法,調整概念結構。學生與學生由于擁有更加接近的知識和生活經驗,更容易溝通和相互促進。
(4) 意義建構:通過知識建構環境中學習目標、學習者原有概念、學習經驗等眾多復雜因素的相互作用,學習者形成自己獨有的解決任務的思路、技巧和方法,即意義建構。
2.3實際應用階段
當課程主要內容學完后,應為學生提供一個綜合性的、更真實的大任務,要求學生遵從軟件工程過程,合作完成任務。任務應有一定的復雜度,使得學生必須協作完成。課堂上主要解決一些普遍存在的問題,學生必須利用課外時間才能按時完成任務,可以借助圖書館、Internet獲得必要的幫助。任務完成后,通過展示與評價學生作品來評價任務完成情況,通過提交書面報告實現對任務實現過程的總結。
3建構主義教學實踐中應注意的問題
建構主義教學條件要求較高,需要豐富的教學資源,并要求改變教師和學生的觀點。要引起教學實質的變革,必須全面地理解建構主義各原則之間的聯系[2]。由于多數教師對建構主義的認識是逐步加深的,建構主義對教學實踐的指導也是逐步進行的,如此可能只是引起了一些表面的變化,甚至使情況變得更糟。
筆者一接觸到任務驅動教學法就被這種方法吸引了,并開始在教學中實踐。由于對建構主義原則理解不深,加上學生未能主動參與知識建構,教師還未實現從傳授知識向意義建構促進的轉變,而且難度合適組織方法相近的可用教材較少,學生反映起點高,難度大。同時也反映,若課前做過預習,則效率很高。后繼課程的教師則反映學生的程序設計能力有所提高。由于上述原因,教學實踐未達到預期效果,但學生和其他教師的反饋也說明:建構主義所倡導的教學原則對程序設計思路和方法的學習確實有幫助。
另外,建構主義教學方法實施中比較困難的是:從傳統的線性知識組織形式向任務式組織形式的轉變,此時需要從全局上把握學科知識并有所選擇。在課堂教學中,應注意把握好教學節奏,給學生足夠的時間協作和會話,從而完成意義的建構。此時,教師要注意結合實際課堂給予學生動態的引導。
4結束語
在思考程序設計課程教學中的問題時,很自然地被引向了建構主義。建構主義教學方法處于傳統教學方法的另一個極端,在教學實踐中,應根據學習內容與學生的認知類型分階段選用不同的教學方法,以便在有限的教學時數內促進學生完成程序設計的高階學習任務。
參考文獻
[1] 余勝泉. 基于建構主義的教學設計模式[J]. 電化教育研究,2000,(12):7-13.
[2] Tony Greeing主編,麥中凡譯. 21世紀計算機科學教育[M]. 高等教育出版社,2001:55-94.
[3] 張長海. 以程序設計為主線講授“高級語言程序設計”課[J]. 計算機教育,2005,(5):9-12.
[4] 高順富. “C語言課程設計”教學的思考與實踐[J]. 電氣電子教學學報,2002,(1):103-105.
作者簡介:解敏(1975-),女,云南人,講師,主要從事程序設計和信息系統方向的研究。
通信地址:云南 昆明 云南師范大學 計算機科學與信息技術學院 650092
E-mail:xmin7186@yahoo.com.cn
電話:13888083126
本項目受“2005年云南師范大學精品課程建設”資助。