摘要:通過對實際教學過程的分析和總結,提出程序設計基礎課程教學中經常面臨的一些典型問題。從教學的角度將這些問題歸納為教材選擇問題、課堂教學問題、實驗教學問題和評價體系問題4類,按照“以學生為中心、重在過程”的現代教學思想對各類問題出現的原因進行剖析,提出行之有效的解決方法。
關鍵詞:程序設計基礎;教材選擇;課堂教學;實驗教學;評價體系
0 引言
程序設計基礎是計算機專業的一門重要學科基礎課程,是傳授程序設計基礎知識和培養學生邏輯思維能力、問題抽象能力和程序設計基本能力的入門課程。程序設計基礎作為程序設計語言課和算法設計分析課的先導課程,為具體的程序設計活動提供所需要的算法思想,同時為各種算法分析提供大量實例。因此,該課程的教學將直接影響學生對后續課程的學習效果。
然而,教師在該課程的實際教學過程中經常會面臨一些影響教學效果的問題,如教師偏重講授程序設計的基本語法,使課程教學經常轉變成講解某門程序設計語言等。我們從教學過程的角度可將各種問題分為4類:教材選用問題、課堂教學問題、實驗教學問題以及評價體系問題。這些問題貫穿全部教學過程,若不予以重視并妥善解決,將嚴重影響教學效果,致使教學效果事倍功半。
以學生為中心是現代教育理念的重要內容。學生是教學活動的主體,教師應該以學生為中心組織教學。以學生為中心,有利于教師了解和貫徹各種現代教學觀念,有利于提高教學質量,促進教學改革;同時,也有利于教師更好地了解學生的學習態度,從而分析教學過程存在的問題并制訂行之有效的應對策略提高教學效率。因此,貫徹以學生為中心的理念對現代課程改革具有重要意義。
針對程序設計基礎課程的教學改革已有一些研究成果,文獻1、2對該課程的總體要求作了較深入的探討;文獻3從教材的選用方面介紹了一些有效的方法;文獻4、6從教學方法等角度對如何上好這門課給出相應建議,并在實際教學中取得較好的教學效果;文獻7、8研究通過開放平臺的使用提高學生動手能力的問題。筆者將針對上述各類問題逐一進行分析,并給出一些行之有效的建議和方法,以指導解決實際問題,提高教學質量。
1 改進教材選擇機制
教材選擇是程序設計基礎課程順利開展的必要基礎,為學生選擇一本適用性強的教材是教學成敗的重要因素。然而,實際的教材選擇環節也會出現一些問題,主要表現在教材內容與教學內容偏差大,學生不能進行有效地預習和復習;教材理論內容太多,沒有對應的實踐內容等。
程序設計基礎課程的相關書籍很豐富,可選的教材也很多。其中比較知名的有吳文虎教授主編的由清華大學出版社出版的《程序設計基礎》、Stewart Venit和Elizabeth Darke合著的由清華大學出版社影印發行的《程序設計基礎》、羅學科等編寫的由高等教育出版社出版發行的《程序設計基礎》等。每本教材都有自身的特點,面向不同的讀者群體。任課教師往往根據自己對課程的理解判斷哪本教材有利于課堂教學,將該教材作為程序設計基礎課程的指定教材,當然行政或商業因素往往也會干擾教材的選擇。這反映出教材選擇的一個本質問題——忽略學生因素。
教材是為學生征訂的,因此教師在教材的選用上要做到以“學生為中心”,改變以往的教材選擇模式。在選擇教材之前,教師必須與授課班級的學生進行溝通,了解學生對計算機基礎知識的掌握情況、對算法相關知識的了解程度、對該課程的期望以及希望教師為他們提供什么類型的信息等;同時還要查閱同專業的高年級學生對以往教材選用的反饋意見,關注他們對教材選用的滿意和不滿意之處。通過對學生進行溝通了解,教師可以有效掌握授課班級的學生情況,在選定教材時就可以做到有的放矢。
教材編寫者可能并非教師,該教材內容與課程教學內容要求可能并不完全相符,因此教師應在第一次上課時給學生指定本課程哪些內容是必須掌握的,哪些內容是需要了解的,哪些內容是作為擴展閱讀的等。此外,教師在確定選用教材后,如果所選教材不能完全覆蓋教學內容,那么教師應考慮指定一些參考書來彌補所選教材的不足。
2 更新課堂教學觀念
受傳統課堂教學模式的影響,現在很多課堂教學仍以“填鴨式”教學為主。教師在課堂上對知識進行“自我陶醉式”地講解,往往忽略學生的學習主體地位,更談不上讓學生參與教學。結果是教師講的“醉”,學生睡的“香”。程序設計基礎作為一門專業基礎課,其重要性不言而喻,同時還具有很強的實踐性。改變傳統教學模式和提高課堂教學效果,需要教師堅持以學生為中心的思想重新認識課堂教學,更新教學觀念。
2.1 認清課堂教學的主體
程序設計基礎的課堂應是師生交流、對話、溝通和探究學問的舞臺,只有師生共同參與的課堂才是真正的課堂,而改變以往教師對課堂主體的認識是實現真正課堂的關鍵。現代教學理論認為學生是課堂的主體,教師在課堂上發揮主導作用。課堂教學的本質在于學生的“學”。在課堂組織過程中,教師應充分調動學生積極性,允許學生打斷教師的講解以發表自己的不同看法、觀點或者想法。教師應該多創造一些學生與教師進行課堂對話的機會,對學生提出的想法進行分析和討論,如果時間充足則盡可能讓更多的學生參與課堂討論,形成真正意義上的課堂。
比如,教師在講解冒泡排序算法時可以先給學生10個數,讓學生考慮如何將其排序。經過引導,學生應該有2種不同的排序方法:冒泡排序與選擇排序。教師在課堂上可以對冒泡排序方法進行較詳細的講解,而對于選擇排序,可以安排選擇這種排序方法的學生在下一次課中對自己的排序思想進行講解。這樣不但能夠實現課堂主體的互換,而且可以調動學生學習和探索知識的積極性,從而極大地提高教學效率,取得良好教學效果。
2.2 明確課堂教學的性質
課堂主體的確立是確定課堂教學性質的基礎。程序設計基礎課程的課堂是引導和啟發學生自主探究知識,讓學生自主討論的場所。教師在課堂上是知識的“引路人”,要在知識的“大道”上開啟學生的好奇心,鼓勵師生之間、學生之間進行知識的辯論。例如,教師在講解枚舉算法時一般會引用經典枚舉問題“百錢買百雞”,然后可以向學生提出要求:每個學生模仿該問題出一道類似的題,同桌同學互換題目進行試做,最后討論各自出的題目有什么不足之處。
2.8 更新課堂教學的方式與內容
在現代教育技術的影響下,程序設計基礎的課堂教學方式也必然發生重大改變。多媒體技術的廣泛應用,使課堂教學在傳統的粉筆加黑板模式下添加了投影儀,從而變得生動活潑,并且為教師節省不少板書時間。正因為如此,不少教師花很多心思做了圖文并茂的PPT,但上課一味地讓學生看PPT,過分依賴PPT上的內容,反而會使學生只關注每張PPT上的精彩畫面,而沒有注重內容是什么,更不會去聽教師講課的內容。最后,投影儀的引入沒有提高教學效果,反而降低了原有的教學效果。因此,先進的教學手段并不是課堂教學取得良好效果的充分條件,合適的教學方式和良好的課堂組織更有助于提高教學效果。
程序設計基礎的課堂教學有兩件重要的事情:一是引入算法思想;二是采用該算法解決一些實際問題。算法思想是對同類問題的處理過程進行一般化總結,因此可以將其放到PPT中,以節約課堂中教師對算法思想進行板書的時間,但教師必須采用口語化的語言舉出算法實例并進行講述,不能只是照PPT讀算法,必須做到讓學生理解這種算法思想是為哪類問題而提出的,如何用程序設計語言將算法實現,而較難做到的是采用該算法思想解決同類型問題。對于平常使用較少的算法思想,教師在教學過程中應采用先以實例進行講解,再進行總結的方式開展教學,這樣會取得較好的效果,如動態規劃算法;而對于比較常用的算法思想,可以先直接講述算法思想,再針對該算法思想舉例加以驗證。
3 改革實驗教學模式
對于程序設計基礎課程的實驗教學,很多院校并沒有在思想上樹立正確的認識,經常錯誤地認為該課程實驗就是把教材上的個別例子再錄入并進行驗證的過程,僅注重學生在上機編程時是否能夠得出“正確”的結果,而忽略程序設計技能的培養。事實上,該課程實驗的過程是將算法思想應用到具體問題的過程,是通過解決問題對算法思想進一步鞏固和加深理解的過程,是學生對算法從理論認識到實踐認識的升華,是學生在問題解決時進行團結協作的訓練過程。因此,我們必須改革實驗的教學模式,并做到以下幾個方面:首先是實驗項目的分層次設計;其次是實驗過程的工程化管理;第三是實驗結果的反饋與反思;最后是開放式教學資源與平臺的充分利用。
3.1 精心設計實驗項目
教師在程序設計基礎的實驗項目設計中,要綜合考慮學生的基礎、學習能力、抽象思維、接受能力等方面的差異,有效解決實驗過程中“一類學生吃不飽,一類學生剛剛好,一類學生吃不了”的現象。在提供實驗項目種類時,一般可以分兩類:一類是給出程序,讓學生閱讀程序并對程序進行注釋,分析程序的功能;另一類是給出具體問題,要求學生編程解決該問題。第一類實驗項目重在讓學生一方面理解別人的思維過程,通過分析別人的思維過程,體會該程序的優劣之處,這是訓練個人編程思維的一個很好的方式;另一方面通過對他人程序加注釋的方式發現不良編程習慣造成的影響,以有利于在編寫程序過程中養成良好的編程習慣。教師可以提供多個實驗項目并對每個項目規定相應的難度系數,以將其作為實驗結果評價依據之一。
3.2 工程化管理實驗過程
在實驗過程中,教師要以工程化的思想對實驗過程進行管理。學生從教師給出的實驗項目中選好所做的項目后,在實驗過程中要完成3項內容:解決方案文檔化、程序注釋化、實驗數據用例化。在實驗過程中,學生要按要求對程序或者問題進行分析,把問題所采用的算法、抽象的數據關系、各種公式等用文檔的方式記錄下來。學生從程序設計起步階段就要開始練習軟件設計說明書的基本書寫方法;接下來分析程序功能或者對所給項目采用相應的語言編程實現,此時必須對程序中的關鍵語句及程序功能進行注釋,以提高程序可讀性并養成良好的編程習慣;最后在程序運行過程中,要對實驗用到的測試數據進行記錄,寫明采用該數據的目的和數據輸入后的實際運行效果等。通過對測試數據的記錄,學生在實驗過程中逐步掌握軟件測試的方法,為進一步提升編程能力打下基礎。
3.3 重視實驗結果的反饋
對于實驗課的實驗結果,教師要及時分析整理,并對學生分析和解決問題的邏輯思維能力等情況及時給出反饋信息,通過反饋進一步提高學生的實驗技能。教師對實驗結果的反饋要給出兩方面的信息:一方面是正面的、積極的反饋,這種反饋一般肯定學生的所學和所練,鼓勵學生加強學習的信心;另一方面是負面的、錯誤的反饋,要給出一些出現錯誤的情形,如對問題進行抽象處理時出現的變量抽取錯誤、程序邏輯3acf5e80765e22a7bcdc457d89c12b6c6ea2213eebb6a81dfd96c0e0c03e5590錯誤等問題。這也就是要求教師不要一直講正確的,同時要講一些出現錯誤的案例,使學生可以通過對比更加明確問題所在。教師可以將這些錯誤分配到每節課中,也可以在一節課中集中處理。實驗結果的負反饋可以讓學生掌握程序調試中的相關技術和技能,加強程序調試能力。
3.4 充分利用開放性教學資源與實驗平臺
當前網絡上有關程序設計基礎的教學資源是豐富的,教師要在教學過程中指導學生通過網絡課程進行自學,掌握利用網絡進行學習的方法。另外,ACM大賽是對程序設計基礎課程教學效果檢查的一種手段。ACM大賽采用的是ACM在線評測系統,該系統在清華大學、北京大學、浙江大學、南陽理工學院等均建有相應的平臺,并且大多是開放的,外校學生一樣可以注冊并進行測試。因此,在教學過程中,教師每講過一種算法思想,就可以列舉一些能夠使用該思想解決的ACM大賽題目,并讓學生登錄系統測試對這種算法的掌握情況。
4 革新考核方式
程序設計基礎課一般通過“筆試+上機實驗”的模式考核學生對該課程的掌握情況。在這種模式中,筆試成績的比例通常比較高。從一定程度上講,這種考核方式適合層次相同和識記能力較強的學生。而對于不同層次、動手能力較強但表達能力較弱的學生往往不太適合,這也正是理科類學生的特點。這種一張試卷定成績的考核模式并不能完全反映學生的實際情況,更不利于引導學生注重平時的學習過程,因此我們必須對課程考核方式進行必要的改革。
4.1 考核內容的改革
在程序設計基礎課程的考核體系中,教師要注重學習過程的重要性,加大平時考核成績在總成績中所占的比重。例如,將平時學習成績比例設為20%,考核內容包括課堂問題回答、討論、課堂表現及作業完成情況等;提高實驗成績在總成績中的百分比,將實驗報告比例設為30%,包括平時實驗完成情況和實驗報告完成情況等;將期末筆試成績比例設為30%,主要考查學生對基本知識和概念的掌握情況;將期末上機考核成績比例設為20%,考查學生的綜合能力和素質。這種考核體系將學生平時的課堂表現算入期末考核總成績中,同時考查學生對于平時實驗的完成情況,使得考核的內容更全面和更科學。
4.2 考核結果的反饋與反思
在課程考核結束后,學生將得到一份成績單,以反映學生對課程的掌握情況。學生一般只關注自己的分數,而教師則有很多事情要做。如果教師不對教學過程中的經驗與不足進行反思,那么教學水平將很難有質的提高,同時教師也很難提高教學效果。教師得到學生的成績單后,要對學生在試卷每道題上的得分情況進行統計,還要將統計出來的問題與學生平時考核出現的問題結合,看是否相符并分析出現這種問題的原因在哪;走訪學生,聽取學生對出現的問題的反饋;對學生的分析進行記錄,為下一年的課程開設做備案,防止同樣的問題再次出現。
5 結語
以學生為中心的教學理念重視學生在教學過程中的主體地位,同時也不忽視教師的引導作用。貫徹以學生為中心的理念可以改變教師本位的觀念,進而促進教師積極探索提高教學效率的方法和途徑,從而有效解決教學過程中遇到的各種問題。無論是教材選擇機制的改變、新教學觀念的樹立還是新試驗教學模式及新考核方式的采用,都是在以學生為中心的理念指導下的創造性探索。這些方法源于教師長期的教學實踐,在實際教學過程中得到檢驗。黃淮學院學生代表隊在2011年ACM大賽河南賽區中取得可喜成績,說明這些方法對提升教學效果有明顯作用。時代在發展,學生的學習過程不斷變化,這就要求課堂教學的模式和手段也要不斷變化,但人才培養的大方向是不變的,教師在未來的教學過程中仍會有許多新的、復雜的問題需要解決。這正是課程改革需要不斷深入的內在要求和動力。
(編輯:宋文婷)