建構主義是上世紀末興起的學習理論,重新從學習者的角度分析了認知活動的規律。基於建構主義觀點提出的教學法層出不窮,關鍵思想是認知的主動性、教師角色從“教導者”轉為“推動者”、教學內容的結構化等等。程序設計類課程的層次化有利於提高認知的主動性,順應學生的偏好和個性,教學內容的結構化程度自然上升,同時從課程內容的四個層次來看,教師客觀上成為四個層次知識傳授的推動者,在算法和IDE兩端層次尤其如此。
3 層次化的教學方案和實例
3.1 層次化的教學方案
基於上述分層次思想,我們提出的總體教學方案是:對計算機程序設計類課程的教學內容做算法、方法學、語法和集成編程環境四個層次的劃分。以計算機語言課程的四個層次為框架,重新梳理教學內容,分層定位知識點,將各章節各知識點歸到各個層次。這個分層過程對理論課、實驗課和課程設計同步進行。
以教學內容的層次化為導引,將層次化的思想貫徹到各個教學環節,包括教學大綱修訂、教學進度安排、教學手段創新、學生學習引導、考試、課程設計、畢業設計等。
值得注意的是,四個層次之間的關係並不是簡單的相加關係,而是抽象與具體、調用與支持的關係。層次化的教學方案並不是說按照算法到IDE或相反方向的順序重新安排教學過程,而是教學過程仍然按照原來的章節順序,隻是在每個章節、每堂課將所講授內容明確指出所屬的層次,以方便學生的領會、掌握和主動學習。
此外,傳統的以問題為中心的教學方法是以“問題”為格式塔(Gestalt)進行問題的求解,本方案並不是以“概念”或“操作”為新的格式塔,而是仍以“問題”為初始格式塔,隻不過特別強調問題求解過程中學生頓悟(insight)到的各種子格式塔,這些子格式塔對應於它所屬的各個層次,由於有了四個層次的劃分,這裏的頓悟已退化為平凡的獲取,需要頓悟的僅為子格式塔內部的頓誤了。
3.2 實例
以C/C++語言為例,給出一個具體可操作的教學實施步驟如下。
第一,劃分計算機語言類課程的四個層次:算法、方法學、語法和集成開發環境。分析四個層次在C/C++教學內容中的分布情況。
⑴ 算法在本課程中涉及較少,它主要在數據結構、算法設計與分析等課程中講授,但不是不能涉及,比如線性搜索的二分法在本課程要講到。
⑵ 方法學在本課程中重要且較難接受的內容,它主要包括模塊化的編程思想,麵向對象程序設計思想,如封裝、抽象、繼承、多態等。
⑶ 語法內容是本課程的主要內容,包括函數的定義、聲明和調用,對象和類的定義、類的派生等,占授課內容的70%左右。
⑷ 集成開發環境在本課程的理論部分占得比較少,但在實驗部分占得比較多,具體就是C編譯環境、VC的使用方法,Windows應用程序框架的構建方法。
第二,在C++程序設計的知識點的分層梳理和歸類的基礎上,編排和修訂理論教學內容、實驗教學內容和課程設計教學內容,以所屬層次和學習要求的二維坐標來標注各個知識點。在教學大綱中記錄教學內容及其所屬層次和學習要求。教學大綱的“基本要求”按照例子的格式記錄。
第三,以層次化思想指導教學活動的各個環節。從教學內容上看,第三層次的內容都是教師講授、學生學習的主要內容,但從教學主體和客體的細分角度看,對動手能力強、有誌於創業的學生宜偏重於第四層次的知識,對理論興趣濃厚、科研型的學生宜偏重於第一、第二層次的知識。從課件的製作看,宜在開篇第一課就向學生展示四個層次的“金字塔”圖。從上機實踐看,對IDE的操作知識要及時向學生明確指出,以正確構建認知模式。
第四,實施一些配套工程,如編寫相應教材、實驗教材和課程設計指導書,製作全套課件,開發網絡教學資源,在每一環節都強調層次化意識。
4 結束語
作者通過在溫州大學五年來C語言、C++語言、Java語言等課程的層次化教學實踐,教學年級覆蓋大一、大二、大三,對象程度覆蓋二本、三本和專科,發現層次化的教學法能夠明顯提高教學效果。具體包括:①學生的動手實踐能力明顯提高,學習興趣增大,對參加畢業設計、專業實習更有信心,專業技能更符合社會需求,更受用人單位的歡迎,就業更具競爭力;②算法和程序設計方法的理論更加紮實,參加程序設計競賽、考研、考軟件設計師更加積極,參加人數逐年遞增,為他們在將來的研究工作中打下更堅固的基礎;③後續課程的學習更加輕鬆,合理引導了繼續學習方向,培育了主動學習的動力。
層次化的思想具有一定的推廣價值,對程序設計類課程如C/C++、Java、VB、Python、Delphi、PHP等教學改革都有指導意義。