段愛華 陳紅琳 門秀萍 張子振 木 林
(1.安徽財經大學管理科學與工程學院 安徽 蚌埠 233030 2.呼倫貝爾學院計算機學院 內蒙古 海拉爾 021000)
隨著信息技術的不斷發展及其在社會各個行業日益廣泛和深入的應用,越來越多的計算機軟件被應用于解決各種實際問題。因此,社會對于計算機軟件設計、開發類人才的需求量也是與日俱增。程序設計語言是開發計算機軟件的主要工具之一,為了在較大程度上滿足社會對計算機軟件類人才的需求,每個高校的信息類專業都會開設程序設計語言類課程。《C語言程序設計》是信息管理與信息系統、計算機以及電子信息工程等信息類相關專業的一門專業基礎課,也是其他后續專業課程的基礎。因此,學生對于這門課的學習效果,直接會影響到學生對后續課程的學習積極性,以及對本專業的認知程度。這門課程的培養目標在于讓學生掌握計算機與人類交流溝通的基本原理,以及如何利用C語言解決現實生活中的實際問題[1]。通過本課程的學習,使學生養成良好的編程風格,具備一定的獨立編程能力。
目前國內高校關于《C語言程序設計》這門課程的教學,大多仍然是采用傳統的LBL教學方式。這種教學方式往往是以教師為中心、以教材為依據的灌輸式教學, 該教學法不利于調動學習積極性及培養學生獨立思考能力,且應用該教學法存在導致學生對知識的運用能力較差等明顯缺陷,甚至出現有的任課教師在課堂上“自娛自樂”現象[2]。而《C語言程序設計》課程內容涉及到C語言繁瑣的語法較多、內容比較抽象,導致學生在學習過程中學習積極性受挫,甚至出現怕學、厭學的心理。最終使得教學質量欠佳,無法達到課程實際培養目標。鑒于以上傳統的LBL教學方式缺陷與不足,本文結合在其他專業中應用的PBL教學方法,探討其在教學過程中的優勢,并將其應用在《C語言程序設計》課程教學實踐中。
PBL,即Problem-based Learning,是一種以問題為導向的教學方法。這種教學方法最早是在1969年美國的神經病學教授Barrows首先提出的。因此,這種教學方法在醫學專業領域課程教學過程中用的尤其較多[3]。后來這種教學方法又逐漸拓展到化學、商學、法律等學科專業課程的教學中。基于以上學科專業課程的教學實踐,相對于LBL教學方法而言,PBL教學方法的優勢主要表現為以下三個方面:調動學生學習積極性、建立良好師生關系以及培養學生的綜合能力。
利用PBL教學方法實施教學,學生所學習的一切內容都是以問題為導向。并且問題是任課教師根據教學內容自己準備設計好,并提前發給學生。當然,任課教師所設計的問題,要使得學生解決問題之后,能夠理解所學內容相關的概念以及技術原理。學生需要帶著問題,通過獨立查找文獻資料解決問題。當然,必要時也可以通過小組討論來解決問題。而在整個教學過程中,任課教師只起指導性作用,并直接對問題給予解答。因此,整個教學過程是以問題為導向,在問題驅動下進行的。因此,PBL教學方法可以讓學生由傳統的被動接受、被動式學習,變為主動參與、自主學習。使學生自覺地主動學習,增強學習意識,并發展和建立終身自我學習的理念[4]。
無論是小學、中學還是大學,良好的師生關系是保證良好教育質量的必要保證[5]。隨著我國教育事業的不斷發展,我國高校的招生規模也逐年不斷擴大。最終導致師生比例相差懸殊。對于學生而言,高校的學習生活和中學的學習生活不同,很多高校是不安排晚自習的。因此,在大多數高校中,任課老師和學生接觸、溝通交流的時間往往就只是局限于課堂上,并且只是上課的時候坐在前排的少數學生和任課老師溝通的機會多一些。所以,我國多數高校師生之間普遍缺乏溝通,教學效果得不到有效保障。
PBL教學方法需要任課老師課前提前設計好問題發給學生,并且給出指導性建議。課堂上需要任課老師參與問題的討論,討論結束以后任課老師需要對學生解決問題的思路、方案和結論,以及討論過程中所發現的新問題、新思路給予評價性總結。因此,基于PBL的教學方法,使得整個教學過程都有任課老師和學生之間的互動溝通交流,及時了解學生的學習動態,并給予指導。從而形成良好的師生雙向溝通關系。
首先,PBL教學方法可以培養、鍛煉學生的自學能力。如前所述,基于PBL的教學過程中,需要學生自己通過各種途徑查找文獻資料,尋找解決問題的答案并通過問題的解決掌握教學內容相關的基本概念和技術原理。因此,這整個教學過程也是對學生自學能力的培養鍛煉。當然,任課教師的指導在整個過程中也是必不可少的。
其次,PBL教學方法可以培養鍛煉學生的團隊協作能力。PBL教學方法教學的形式多種多樣。不僅有課下的獨立自主學習,更重要的是還有課堂上的分組討論。每個學生可以針對自己所遇到的問題,在課堂上與組員及其他同學展開討論。從而實現有效的分工合作和知識共享。既鍛煉了自己的口頭表達能力,又能在討論過程中照顧到其他同學的感受,培養鍛煉了大家的溝通能力和團隊協作能力。
最后,PBL教學方法可以培養鍛煉學生的創新能力。PBL教學方法使得學生個人的自主學習和小組內和小組間交互式學習相結合。即便是針對同一個問題,由大家的思維方式和思路不同,最后解決問題的方法也會不同。因此,這種教學方法可以讓每個學生在討論過程中獲得不同思路、不同思維方式下的知識信息。并結合自身的知識結構和思維方式,在原有問題的基礎上,產生新的解決問題思路。從而,有利于培養學生的思維能力和創新能力。
筆者基于PLB教學方法的以上優勢,針對公選課班級,就for循環這一節內容的教授,采取PBL教學方式實施了教學實踐。具體實施過程如圖1所示。

圖1 基于PBL的for循環教學實踐過程
作為任課老師,在上課之前首先明確for循環這節課的教學目標:如何利用for語句解決需要重復處理的問題,并掌握常用的算法,尤其是最基本的窮舉算法。然后根據教學目標,具體安排教學內容,提出設計相應的問題。使學生充分明確本次教學任務、教學重點和難點。從而保證學生在查閱文獻資料過程中能夠做到有的放矢,確保較好的教學效果。
基于for循環實現原理,提出簡單易懂問題:如何判斷給定的一個整數是否為素數,如果是素數則輸出“給定整數為素數”,否則輸出“給定整數為非素數”。雖然這個問題是傳統的數值計算問題,但是由于該問題通俗易懂,可以幫助學生更好的理解掌握for循環的實現原理。任課老師在上課之前把問題通知到學生。
學生拿到問題后,首先要明確到底什么是素數。通過查閱資料很容易就可以確定所謂素數就是指除了1和它本身以外,不能任何整數整除的數。因此,對于給定的一個整數,看它是不是素數,只需要把給定的整數m被2到m-1之間的每一個整數去除,如果都不能被整除,則該整數即為素數。經過分析可確定,要解決這個問題,需要使m被除m-2次。利用窮舉算法即可解決的循環問題。
通過以上任課老師的引導分析,學生可以確定在解決問題的程序中,需要設置兩個變量:一個存儲需要判斷的整數m,一個是用來確定循環控制次數i;另外 ,還需要提示學生:“如果2到m-1中有一個數能整除m,則其后的其他數就不需要再去判斷,直接跳出整個循環。”這就需要用到break語句。在任課老師的逐步引導下,每一組的學生基本都可以實現解決問題的下列程序。
#include
int main ( )
{
int m,i;
printf("m=?"); scanf("%d",&m);
for (i=2;i<=m-1;i++)
if(m%i==0) break;
if(i else printf("%d 為素數.n",m); return 0; } 通過以上小程序,任課老師可以把for循環的語法結構講解清楚。并通過不斷調整程序的結構,讓學生體會for循環的語法所需要注意的問題。比如,在 for (i=2;i<=m-1;i++)后面加上分號,然后再讓大家運行下程序,看看結果有什么不同。以此讓大家確定在for關鍵字后是不能出現分號的。另外,再讓學生仔細觀察循環控制變量i的取值范圍(上限取值選為√m),可以發現這個問題的窮舉范圍是可以進一步縮小的,從而將所用的窮舉算法進一步優化,提高程序執行效率。 通過將PBL方法應用于for循環一節課內容的教學實踐,我們發現雖然所選班級為公選課班級,但是學生對教學內容的參與度明顯有了很大的提高。并且在QQ群里和課堂上,與任課老師的互動次數也多了起來,學習的主動性和積極性明顯提高。由于在課堂上進行了分組討論,讓每個學生都參與問題的討論,之前玩手機、帶耳機等隱性逃課現象全部都不存在了。在問題討論結束后,甚至有的個別學生提出,如何利用子函數來解決素數的判斷問題。 基于PBL的以上教學實踐優勢,將這一方法應用到《C語言程序設計》課程整個教學過程中,并按照基礎知識、綜合知識和實用知識三個不同的層次完成基于PBL的《C語言程序設計》的課程教學。 對于基礎性知識教學,主要是某種數據類型的定義、操作等,在教學過程中基于類似問題展開教學:計算機如何實現不同數據的存儲?對于綜合性知識教學,主要是順序、選擇、循環三種基本程序結構,以及函數和數組等知識,在教學過程中我們基于“如何實現班級所有同學多門課程成績的錄入”等問題展開教學;對于實用性知識的教學,我們主要是結合一些有實際意義的問題,進行實戰訓練,提升學生的興趣和自信心,提高實踐能力。總之,采用PBL方法進行《C語言程序設計》課程教學,對于學生思維能力、創新能力的培養也起到了一定的激勵作用。 本文針對傳統的以任課老師為中心、灌輸教學模式的缺陷,基于PBL教學方法的優勢和《C語言程序設計》課程的培養目標,以for循環為例,實施基于PBL的《C語言程序設計》課程教學實踐。實踐表明:該教學方法有利于激發學生的學習興趣,有利于培養學生獨立、自主學習的能力,以及鍛煉提高學生的團隊協作能力和創新能力。但是,任何一種新的教學方法對于任課老師,無論是課前的教學準備工作,還是課堂上的教學實施工作,其要求都比較高。任課老師還需要不斷提高自身的教學水平和綜合素質,繼續不斷探索PBL方法在《C語言程序設計》課程教學中的實踐。(五) 發現新問題
(六)實踐總結
四、結語