摘要:本文從如何培養大學生抽象思維能力和創新能力出發,在分析理工科大學生學習程序設計課程中存在的一系列問題的基礎上,闡述創新能力培養的多種教學方法改革,結合河南工業大學近五年的教學改革的實踐,在程序設計基礎課程中取得較滿意的效果。
關鍵詞:程序設計;教學改革;創新能力
文章編號:1672-5913(2010)08-0046-04
中圖分類號:G642
文獻標識碼:A
面對世界科技日新月異、信息社會雛形初具、經濟全球化浪潮洶涌而至的強有力挑戰,中國教育學會會長顧明遠先生認為:“教育創新是時代的要求,也是我國實施科教興國戰略的迫切要求。”在強調“創新能力”和“素質教育”的大前提下,如何在程序設計課程中培養學生的創新能力和科學素養,是我們進行教學改革重點考慮的問題。
打好程序設計基礎,對于理工科大學生來講,是一個“看家本領”,是實實在在的利用計算機分析問題和解決問題的本領。因此,如何改革“程序設計基礎”課程,調動學生學習的積極性,提高學生的抽象思維能力、創新能力和團隊合作能力,并按照計算機學科最根本特征——“構造性”和“能行性”的要求,加大抽象思維能力和邏輯思維方法的訓練力度,是程序設計基礎教學改革研究的重點。
1 現行教學中存在的問題
1,1程序設計基礎課程的定位出現偏差
目前,大多數高校的程序設計基礎課程是以高級語言c語言為脈絡展開的,采用語法教學為主,上機檢驗程序為輔的教學模式。但是,理解語法和能夠解決實際問題,兩者仍舊不能劃等號。過于注重語法,沒有突出程序設計的基本概念、思路和方法,忽視學生程序思維能力的培養,難以調動學生學習的積極性,嚴重影響后繼課程c++與面向對象程序設計、數據結構等課程的學習。
1,2傳統教學形式與多媒體教學的沖突
傳統的教學形式采取的是黑板教學,知識點和例題的講解都在黑板上進行,這可以較好地與學生互動,但存在信息量小、不能動態演示程序的問題;多媒體教學以信息量大、動態演示程序為優勢,但也存在教師與學生交互少的問題,學生被動接受大量信息反而難以掌握重點和難點。
1,3驗證型實驗產生的“眼高手低”
目前,程序設計課程的實驗普遍為“驗證型”實驗,即通過一次實驗驗證一兩個知識點。這種“驗證型”實驗雖然對學生理解教學的知識點和掌握一定的編程技能有益,但也有明顯的缺陷。首先,“驗證型”實驗之間的聯系不強,這就導致學生在做完一個學期的十幾個實驗之后,依然不知道如何去編制一個完整實用的程序;其次,“驗證型”實驗的實驗結果往往是唯一的,如果結果與預期不一致,就意味著學生的程序有誤。這種實驗方法對培養學生的創新能力不但沒有益處,反而會扼殺學生的學習興趣與主觀能動性;再次,這種相互獨立的實驗很難保證實驗的系統性。
1,4被動學習產生的消極情緒
由于知識點繁多而授課學時有限,大多數教師在講授時都是滿堂灌,沒有留給學生必要的課堂思考和練習的時間,學生課下編程遇到問題時無所適從,從而產生畏難心理和消極情緒,對于后面較難的知識點,例如指針、結構體和文件部分,部分學生甚至采取放棄的態度。
1,5傳統的筆試帶來的副作用
現在采取的考核方式大多為“平時表現+作業+期末考試”的形式,而期末考試是評價學生能力的主要方面。大多數高校的考試方式采取傳統的筆試,有些學校甚至按照計算機二級考試要求出期末試卷,它給學生以錯誤的暗示,使其認為語法知識的學習比算法的制定更主要,另外,它也沒有達到真正考核學生實際編程能力的要求。
2 教學改革中采取的對策
2,1修改計算機專業2009年的培養計劃,正確定位程序設計基礎課程
2008年項目組成員通過對東南大學、南京郵電大學、南京理工大學、北京理工大學等高校的調研,認真修改計算機專業2009年的培養計劃,將高級語言程序設計課程修改為程序設計基礎,設定在大一上、下兩個學期進行教授,并在學時上作了大的調整,上學期理論教學40學時,實踐教學14學時,主要培養學生的計算思維能力,依托計算機編程環境,對所要求解的問題進行分析研究,將其抽象成數學模型,寫出計算步驟,編程加以實現。大一下學期,將實踐學時增加到40學時,而理論教學學時為14學時,通過一些綜合案例的分析和大量綜合問題的解決,提高學生知識運用的綜合性、靈活性與探索性,培養學生的編程能力和創新能力。
在教學內容上,打破先講語法后編程的常規教學,重視算法的講解,以實例為引導,幫助學生分析問題并寫出算法步驟,然后再基于語法規則進行編寫代碼。語法知識貫穿與實例中講解,以常用語法知識在具體程序中應用為前提,不要求學生死記硬背。實踐表明,這種“重視算法,不過分強調語法”的教學策略,增強了學生分析問題、解決問題的能力,也調動了學生編程的積極性。
在教學過程中,注重培養學生養成良好的編程習慣,強調程序的可讀性、規范性,要求關鍵變量加注釋,函數功能有描述,學會調試程序,組織好的測試數據,能夠分析和判斷運行結果的正確與否。在使用編譯開發環境時,除了使用推薦的TC++3.0,還鼓勵大家使用VC++6.0。在VC++6.0編譯開發環境中編譯和運行一個c程序相對簡單,而且更方便調試程序,學生可以跟蹤變量,隨時看到數值的變化,不斷地用所學知識校正調試時遇到的問題,還可以向教師進行實時的教學反饋。
2,2教學方法的改革
在教學形式上,采取黑板教學與多媒體教學結合。學校根據教師提出的意見,整改所有的多媒體教室,將屏幕統一移到講臺的一側,露出一半的黑板空間。這樣,重點、難點在黑板上板書講解,基本內容和實例演示用多媒體,既避免了黑板教學信息量小和無法動態演示程序的問題,也解決了多媒體教學中交互少和被動灌輸大量信息的問題。
在教學方法上,采取由淺入深的啟發式教學和形象教學。例如,在講解數組前,以草原來貴客,主人要從上千頭羊中選出最肥的那頭羊為例,引出數組的概念:在數組的應用上,先以學生熟悉的求幾個學生平均分的實例入手,然后逐漸增加難度,講解Fibonaeei數列、冒泡排序等難度較大的例題。在講解冒泡排序算法時,找出5個高低不等的學生,按照排序思想實際操作一遍,讓學生更直觀、更形象地看到排序過程,加深學生對算法的理解。在教學中對于難以理解的知識點進行形象舉例,增強學生對知識點的理解。例如,在學習選擇結構if.else語句的時候,以這樣的例子幫助學生理解:if(課表上有課)去教室上課;else去操場鍛煉;用他們日常生活中熟悉的例子來講解,可以很好的幫助他們理解知識點,并且也間接地提高他們解決實際問題的能力。
建立河南省精品課程c語言程序設計課程教學網站進行輔助教學(http://172.18.254.252/s2008/cyy/index.aspx),大大延伸教學互動的時間與空間。在網站中學生可以下載教學課件和學習資料進行自學,還可以通過BBS交流平臺向任課教師提問,老師在網上及時進行解答,也可以通過在線測試模塊隨時檢查知識的掌握情況。
2,3實踐教學的改革
程序設計基礎是一門實踐性很強的課程,我們根據教學過程制定實驗計劃,多選取設計型實踐,少選取驗證型內容,鍛煉學生分析問題、解決問題的能力;實驗內容與實際緊密聯系,調動學生解決問題的興趣,例如二維數組的實驗中,讓學生解決多個售貨員賣多種商品,統計每個售貨員的營業額和每種商品的銷售額。每個實驗都要求學生在實踐課之前進行分析、設計算法、編寫代碼,在實踐課中進行調試,教師只是引導和輔導作用。
課程設計是一個重要的實踐環節,是學生從理論學習走向解決實際問題的一個關鍵性環節。在課程后期的一至兩周,其他的課程都暫停,集中時間和精力進行課程設計。一般選擇與實際聯系緊密的課題,例如,學生成績查詢系統、圖書借閱系統或小型超市管理系統等。根據學生的基礎和掌握知識的情況進行分組,2~3人一組,各自承擔不同的設計部分,充分發揮每個學生的優勢,有利于培養學生的團隊意識和創新精神。最后通過答辯和檢查報告來評價學生的設計,即時糾正一些錯誤,給出課程設計成績。課程設計使學生經歷文獻查詢、程序模塊設計、程序流程制訂、源代碼編制、上機調試、實驗數據的整理與分析及論文撰寫等一系列的訓練,開闊了他們的視野,擴大了知識面,培養了動手創新能力,是提高教學質量的一條好途徑。
2,4培養學生的自學能力和創新思維,創設因材施教的探索空間
愛因斯坦說:“興趣是最好的老師,熱愛是永恒的動力”。顧明遠先生也提到:“只有讓受教育者自由、主動地進行自我發展,它們身上內隱的創造性素質才可能外顯出來。當然,不是說學生不需要教師給他傳授知識,教他能力,知識和能力都是學生創造的基礎,但是更重要的是通過教育教學促進學生主動地發展,發揮他內在的創造潛力。”學習任何一門程序設計語言的捷徑就是用它來編程,因此,學生的自主學習在程序設計課程中是至關重要的,知識點的掌握,編程能力的提高,要求學生在課下必須進行大量的編程練習。因此,在第一堂課就引導他們動手編寫人生中的第一個程序,消除他們的畏難之心,并給他們講解程序設計過程中有趣的科學故事,演示一些軟件和游戲,甚至是往屆學生課程設計的作品,激發他們學習的興趣;成立程序設計群,鼓勵大家在群中進行問題討論、算法優化、群策群力,培養大家的合作意識和創新思維。
鼓勵有能力的學生參加ACM/ICPC競賽——世界上最具權威性的大學生程序設計競賽。學生通過參加ACM/ICPC競賽或網上ACM題庫的在線練習,深深體會到只有對具體題目的分析和實踐,才能真正掌握數學的使用和算法的應用,并在不斷的練習中增加編程經驗和技巧,提高對時間復雜度的感性認識,優化時間的分配,加強團隊的配合。
每個學期挑選3~5名有能力的學生參與到教師的科研中,從一年級開始培養他們的創新思維和動手能力,實踐證明,這批學生的解決實際問題能力和科研能力相對于其他學生要強,對他們的就業或考研都有很大的幫助。
2,5進行教材改革
長久以來,c語言的教材大多數都是采用我國著名計算機基礎教育家譚浩強先生編寫的《c程序設計》,該書的最大特點就是知識點講解得很詳細,非常適合學生自學,但是也容易造成一個誤區,就是過分追求語法知識的學習,而忽視了算法的積累。針對“重視算法,不過分強調語法”的教學策略,我們大膽進行教材改革,選用吳文虎先生編寫的國家精品課程教材——《程序設計基礎(第2版)》,該書分為幾個部分:變量、代數與計算機解題,邏輯思維與計算機解題,數組組織、篩選與排序問題的解題思路,函數、遞推與遞歸,指針,流與文件,貪心法,動態規劃,鏈表,二叉樹,蒙特卡羅法。重點放在問題的分析,數學模型的建立,最后理出算法,并編碼實現。
另外,推薦優秀的外文原版教材《PROGRAM-MING IN ANSI C(THIRD EDITION)》作為輔導教材,讓學生更準確地理解課程內容。這部教材語言描述簡單易懂,知識點講解簡練到位,實例貼近生活。同時,它也可以培養學生閱讀英語資料的習慣,為參加ACM-ICPC等國際賽事的學生助一臂之力,為其將來的學習和科研打下堅實基礎。
利用外文原版教材與“雙語教學”產生了一個意外的聯系。筆者于2009年下學期進行C語言的雙語教學嘗試,探索利用雙語教學和優秀的外文原版教材引領教學效果改革的新途徑。
2,6考核方式的改革
為了提高學生分析問題和實際編程能力,我們將傳統的考核方式“平時表現+作業+期末考試”改革為“平時表現+大作業+上機考試”,比例分別是2:4:4。平時一般每三周布置一個大作業,促進學生將所學的知識點綜合應用,并為期末的上機考試積累經驗。為了客觀地反映教學質量,采取教考分離、集體閱卷的形式。實踐表明,這種考核方式,重視平時動手能力的培養,更客觀地反映學生的學習情況,有助于提高學生學習的積極性。
3 結語
從2005年開始我們著手對程序設計基礎課程進行改革,包括3次修改課程教學大綱,分別修訂2006年和2009年的培養計劃,2006年建設河南工業大學精品課程c語言程序設計,2008年建設河南省精品課程C語言程序設計。經過近五年的改革實踐,學生分析問題、解決實際問題的能力逐年提高,學習的主動性和創造性都得到了極大地調動,學生對該課程連續三年評教成績分別為91.59、96.68和98.24,這表明學生對課程改革是滿意的。至于今年的雙語教學和教材改革的成效,還需要時間來證