[摘要]本文介紹了程序設計課程逆向教學法的基本含義與主要特征,并對逆向教學實踐活動進行了實例分析,最后探討了逆向教學法需要注意的幾個問題,主要是要安排足夠的實踐教學時間,加強“教”與“學”的互動,注意逆向教學與順序教學相結(jié)合。
[關(guān)鍵詞]程序設計課程;逆向教學;教學策略
在理工科的課程教學中,一般都是按照定義、概念、舉例、習題這樣的模式進行教學,而這樣的教學模式給人一種感覺:要想學好這門課就需要記住許多的定義、概念、命令,而且非常抽象、深奧、難以理解。
程序設計課程實際上是一門實踐性很強的課程,學習這門課程的目的是什么?通俗的說,就是要學會編寫程序,應用實際工作中,而不是停留于理論。要會寫程序單憑記住定義、概念、命令是遠遠不夠的,還得要通過反復的練習、實踐,才能掌握程序設計的要點、技巧,使編寫的程序符合工程要求。
一、程序設計課程逆向教學法的提出
本文提出的程序設計課程的逆向教學法正是基于在實踐中掌握程序設計理論、編程技巧這一想法,筆者在實際教學中進行了一些探索。
逆向教學是一種啟發(fā)式思維的教學方法,它有悖于通常人們按順向思維考慮問題的習慣,然而正是這一特點,使得許多靠順向不能或是難以解決的問題迎刃而解,就如數(shù)學證明中的反證法。而一些順向方法雖能解決的問題,在逆向方法的參與下,過程可以較大簡化,效率可以明顯提高,并進一步深化對問題的認識,提高學生學習的興趣。例如,我們在講數(shù)學課時,通常先向?qū)W生講解一些數(shù)學概念或定義,再進行概念或定義的解釋,然后舉例加深對概念或定義的理解,最后通過做一些習題使所學知識得到鞏固,這樣一個數(shù)學概念的課程就告一段落。并不是所有的課程非得遵守這樣的程式去教學,對于程序設計這樣的實踐性很強的課程,筆者認為可以從實際出發(fā),先嘗試從實踐中尋找知識點,這樣能更加直觀地讓學生知道,程序中所包含的概念、定義等知識和一些規(guī)律、技巧等。通過逆向教學,讓學生一開始就擺脫固有程式的束縛,在實踐中明白需要學習哪些知識、掌握知識點在實踐中的應用規(guī)律,理清學習這些知識的目的和思路。然后讓學生再回到理論上來,這樣對理論知識就不會感到陌生、抽象,而且建立了一條理論與實踐的紐帶,對理論的印象更加深刻。
二、逆向教學探索實例
在以往的教學中,一些章節(jié)按順向教學的方法,先進行理論知識的講解,再進行實踐教學,學生普遍反映非常抽象、難學。而按逆向教學法進行教學,抽象的概念就變得具體了,學習這些概念的思路就清晰了。在C語言程序設計課程中指針[1]這一章節(jié)相對來講學習難度較大,在這一章節(jié)筆者對逆向教學法進行了實踐應用和探索。
1、在教學中,按先易后難的順序設計教學環(huán)節(jié)
為了讓學生掌握“初始指針變量”與“用賦值表達式給指針變量賦值”的概念[2]及在表示方法上的區(qū)別,我們不是先講概念、性質(zhì)或特點,而是先讓學生編寫幾個簡單的程序,如:“輸入任意兩個數(shù),按從大到小的順序輸出(使用指針變量)”,學生在編程的過程中,通過簡單的應用,對涉及的概念、語法等有一定的了解,部分學生能掌握這些基本概念,并明確它的用法。通過實踐發(fā)現(xiàn)學生存在概念混淆等共性問題,再進行作如下講解:
語句“int x,*p=&x;”與“int x,*p;p=&x;”是等價[2]的。它們都定義x是int類型變量,定義變量p為指向int型數(shù)據(jù)的指針變量,前者初始化使p指向x,后者通過賦值操作使p指向x。但“int x,*p;*p=&x;”中的賦值語句是錯誤的。原因是把定義語句“int *p=&x”與賦值語句“*p=&x”相混淆了。
學生因為有了先前的實踐環(huán)節(jié),有針對性地聽講解分析,效果明顯,講解之后,學生基本掌握了這一知識。
2、針對抽象、易混淆的概念及關(guān)鍵的知識點按先進行程序?qū)嵺`驗證的方法設計教學
“指針交換”和“指針所指變量值的交換”是指針學習過程中較抽象、易混淆的概念,又是指針使用的關(guān)鍵知識點。我們先讓學生對兩個類似的程序進行調(diào)試。
通過讓學生對這些程序的調(diào)試、修改、運行及對所調(diào)程序不同結(jié)果的對比,使學生建立起指針交換的概念,對指針的性質(zhì)有一個基本的輪廓,了解指針的基本用法,較好地掌握這些較抽象難懂的概念,為進一步的編程作好鋪墊。同時我們在程序調(diào)試過程中設計了與學生互動環(huán)節(jié),在調(diào)試前提醒學生調(diào)試程序所涉及的概念、所要掌握的知識點,對調(diào)試過程中出現(xiàn)的問題及時答疑,并對共性的問題加以分析。經(jīng)對這一知識點考核情況分析,效果較好。
三、逆向教學實踐效果檢驗
為探索逆向教學方法在實際教學中的效果,以便改進教學設計,我們向?qū)W生征求意見。學生反映該教學方法使他們對課程具有更好的感性認識,沒有感覺枯燥,學習興趣有所增強。這樣的教學需要學生在每一個實踐環(huán)節(jié)之前都要明確環(huán)節(jié)學習目標,通過實踐發(fā)現(xiàn)自己不懂的或難以掌握的概念、定義、編程方法等,然后回到課本理論體系中,教師再系統(tǒng)地梳理有關(guān)章節(jié),使學生對程序設計課程建立系統(tǒng)的概念,針對課程的難點、易混淆的知識點加以輔導,使需要掌握的理論知識得到加深。通過先實踐的方法,使學生自主學習的能力得到培養(yǎng)。
在指針章節(jié)的教學結(jié)束后,通過對該章節(jié)內(nèi)容進行測試,學生掌握知識點的情況各有不同,但從學生的綜合成績來看,有80%以上的學生對所學內(nèi)容基本掌握。與以往教學情況相比,學生對所要掌握的概念、語法等知識更加清晰。
在C語言程序設計課程教學結(jié)束后,通過程序設計實戰(zhàn)演練,學生的綜合編程能力與以往相比有明顯提高。采用順序教學法往往會出現(xiàn)這樣的情況:就是學生學完課程內(nèi)容后,雖然對概念、定義、語法、編程有一定的了解和掌握,但要編程還是有較大的難度,一些學生在編程時無從著手。而逆向教學法的優(yōu)點還體現(xiàn)在:在平時的實踐教學環(huán)節(jié)中就已建立起綜合應用編程所涉及的知識、技巧的概念。編程時更容易進入狀態(tài),其思路也更清晰。
四、逆向教學需要注意的幾個方面
1、要安排足夠的實踐教學時間
由于逆向教學更注重實踐教學,在課程安排時,應將更多的時間安排給實踐環(huán)節(jié),使學生有充分的實踐時間,通過實踐,明確編程所涉及的概念、語法等,培養(yǎng)學生通過自學、查閱資料等方式了解或掌握這些知識。在此基礎上,進行系統(tǒng)的理論教學,梳理相關(guān)章節(jié)知識。
2、加強“教”與“學”的互動
基于逆向教學法的重點是實踐,在這一重要環(huán)節(jié)中,不單純是讓學生自己動手編程、學習相關(guān)的理論,考慮到老師的教學時間是有限的,在有限的時間里,讓學生少走彎路,提高學習效率,在教學設計中要注意到教學環(huán)節(jié)的互動性,加強對學生實踐環(huán)節(jié)的指導,如:在操作實踐中,教師在課前要提出下一實踐環(huán)節(jié)涉及到的知識點、操作過程重點要掌握的內(nèi)容、注意事項等。過程中,對學生提出的問題除答疑外,教師要將學生提出的問題作好記錄,對普遍存在的共性問題進行集中講解。對個性問題采取個別輔導。
3、逆向教學與順序教學相結(jié)合
在程序設計課程的教學中,單純靠一種方法進行教學達不到好的教學效果。一些記憶性的、易于接受的內(nèi)容宜采用順向教學方法,一些較抽象、難掌握的內(nèi)容一般宜采用逆向教學。逆向教學中,可以采用部分內(nèi)容逆向教學方式,也可以采用整個章節(jié)逆向教學。在整個程序設計課程的教學過程中靈活進行教學設計,以達到提高教學效果的目的。
教學方法的創(chuàng)新,是教學改革永恒的主題,程序設計課程的教學方法需要我們不斷地探索,合理運用逆向教學法不但有助于優(yōu)化課堂教學結(jié)構(gòu)、提高教學效率、突破重難點、深化對教學內(nèi)容的認識,更重要的是它能很好地培養(yǎng)學生的“逆向思維”能力、探究式的學習方式,更好地做到理論聯(lián)系實際,從而提高綜合應用能力。實踐證明,逆向教學法在程序設計課程教學中的應用達到了提高教學效果、激發(fā)學生學習積極性的目的,然而這種教學方法的應用對教師在教學方法靈活運用、教學設計、教學互動方面提出了更高的要求。
[參考文獻]
[1]譚浩強.C程序設計[M].北京:清華大學出版社,2003.
[2]趙建鋒,何朝陽.C語言程序設計[M].北京:北京大學出版社,2006.
[作者簡介]
郭偉青,碩士,浙江工業(yè)大學之江學院講師,研究方向:計算機圖形學、計算機信息安全、計算機基礎教學