摘要:本文從教學方法改革、教學內容研究、實踐環節建設、特色教材編寫等方面介紹該課程建設的一些做法。并介紹了幾年來通過對該課程建設進行的研究和實踐所取得的成果。
關鍵詞:C++程序設計;課程建設;負反饋教學法;實踐環節;特色教材
中圖分類號:G64文獻標識碼:B
文章編號:1672-5913(2007)12-0018-03
C++不僅是一門程序設計課程,而且是這些專業后續專業課程(如數據結構、操作系統、微機原理、單片機及應用等)的重要基礎,更是這些專業開展計算機研究和應用的重要表達工具和開發工具。因此,Visual C++程序設計課程的教學改革與建設具有十分重要的意義。本文下面從教學方法改革、教學內容研究、實踐環節建設、特色教材編寫等方面介紹我校VC++課程建設的一些做法。
1積極推進教學方法改革,形成頗具特色的負反饋教學法
負反饋教學法的原理是從教學過程中反饋(作業、實驗、答疑、單元測驗等)的問題入手,通過及時講評,解決學生學習中存在的問題,以達到預期的教學目標。由于反饋的是教學過程中存在的問題故稱此方法為負反饋教學法。負反饋教學法包括以下方面。
1.1用“范例”組織課堂教學,貫徹“發現式”教學思想
范例教學法由教育學家瓦根舍因提出,教師通過范例輔助學生理解、掌握知識和原理,其目的是讓學生能夠獨立地獲得判斷能力、推理能力、認識能力和繼續學習的能力。以往,程序設計課程教學通常以一門具體語言為主線,圍繞語法知識展開。而實質上,設計程序是為了解決實際問題,是一種縝密思維方式、創新素質和綜合能力的培養。要使學生對程序設計有興趣,必須親自感受并體驗程序設計的無限魅力。為此,我們改用范例組織課堂教學。在多媒體教學設備和真實編程環境的支持下,課堂教學以程序(范例)為主線。所選范例程序具有典型性、綜合性和可擴展性,涉及基本語法、基本算法和基本調試技術。范例程序的講解首先符合“現象→發現問題→分析問題→解決問題→驗證”的探索過程,使學生掌握基本語法、算法及應用。其次,通過對范例程序的啟發式擴展,揭示程序由小到大、由簡單到復雜直到實用的過程,激發學生的探索熱情和興趣,使學生掌握知識間的聯系和編程的工程化思想,獲得實際編程能力。
1.2采集教學負反饋信息,做好分類、分析和講評
按負反饋教學法要求,任課教師做好作業和實驗報告的抽樣批改、單元測驗的全樣批改,重視實驗指導和答疑,從中了解學生的學習情況。在獲取足夠的負反饋信息后,任課教師及時做好問題的分類、分析和講評,及時發現和解決學生學習中存在的問題,確保學生對所學知識的真正掌握。
1.3根據大班教學特點,推進強同步教學策略
大班教學成功的關鍵在于保持師生教與學的同步狀態。負反饋教學法的師生同步措施有授課、作業、實驗、講評和測驗等。其中,作業與實驗報告由于學生存在一定抄襲現象,同步效果欠佳,為弱同步措施。授課、講評和測驗同步效果較好,為強同步措施。為使大班教學取得較好效果,采用強同步措施是必要的。特別地,我們在每個單元安排一次測驗,以實現師生的強同步,及時取得真實的負反饋信息。
1.4編寫負反饋教學法配套教輔資料,培養學生自學、探索和自我完善能力
配套教輔資料主要有:①學習指導。注重概念理解、知識鞏固,設單元測試,便于學生學習和自測自查;②實驗指導。共有17個實驗,每個實驗包含調試技術介紹、程序調試題、程序設計題和選做題,注重培養學生的編程能力和調試能力,激發學生編程興趣;③典型問題和綜合問題編程。共8個專題,便于學生突破難點,融會貫通,體驗綜合編程的樂趣,培養分析和解決問題的能力;④二級考試模擬試卷;⑤VC++ 6.0程序調試技術,包括使用VC++ 6.0 IDE編寫和調試程序的方法和技巧。
2強化實踐教學,注重培養學生的實際編程能力
VC++課程是一門難點多、綜合性較強的課程,實驗是該課程至關重要的環節,只有通過實驗才能檢驗自己是否真正掌握和運用該語言。通過上機調試程序,會發現很多想不到的問題,通過解決這些問題,可以加深對語言和算法的理解,提高程序調試和實際編程能力。為此,本課程設有課內實驗(32學時)和課程設計(兩周)實踐教學環節。
2.1課內實驗注重培養學生基本編程和調試能力
基本編程和調試能力是深入學習本課程并取得實際編程能力的前提。課程實驗是至關重要的教學環節,與課堂教學同步進行。我們根據教學內容編寫了一套以調試技術、基本語法、基本算法、綜合編程為核心內容的同步實驗指導,共擬定了17個實驗,每個實驗通常包括調試題、編程題和選做題,可供不同層次的學生選用。
2.2課程設計注重培養學生綜合編程和實際應用能力
課程設計安排在課程結束以后,以綜合性程序設計訓練為主,選題具有典型性、綜合性和示范性,突出難點與實用價值,使學生體會到難點不難,難點在實際編程中非常有用。通過課程設計,學生進一步鞏固和掌握基本語法、基本算法和基本調試技術,養成良好程序設計風格(模塊化、結構化)和嚴謹的科學作風,初步形成軟件工程化思想,具有一定的程序組織能力。
課程設計的內容涉及基本算法和數據結構。基本算法包括窮舉、迭代、遞推、遞歸、排序和查找等。基本數據結構包括數組、結構、指針、動態內存分配、單向鏈表、對象、文件等。課程設計的實施,對非計算機專業采用小綜合方案,計算機專業采用大綜合方案。所謂小綜合是指程序規模在幾十到幾百行的小題目,大綜合則是程序的規模在數百行以上有一定實用價值的題目。
2.3實踐教學認真實施,嚴格考核,確保效果
在課內實驗和課程設計的實施過程中,配備富有經驗的指導教師,現場實時進行輔導和答疑,指導學生解決編程中出現的問題。同時對學生嚴格要求,嚴格考核,確保實踐教學質量。加強實踐環節的考核是提高實踐教學質量的重要保證。預習和考勤占總成績的30%,上機檢查并回答提問占總成績的40%,課程實驗報告和課程設計報告占總成績的30%。
3積極開展教學內容研究,不斷優化和更新教學內容
根據程序設計課程本身發展快、更新快、綜合性強、存在問題多的特點,針對同類教材中存在的一些問題和不足,積極開展教學內容的研究,先后發表 “C++運算符重載教學和編程中易被忽視的問題”、“C++中二維數組與指針關系的深入剖析”、“C++語言引用型變量的實現機制淺析”、“C/C++語言可變參數函數的參數傳遞機制剖析” 等論文,并及時把這些教研成果和學科最新進展引入教學。
3.1課程內容分為三個知識模塊
(1) 結構化程序設計基礎:包括C++概述、數據類型、運算符、表達式、簡單的輸入輸出、算法與流程控制語句等。
(2) 模塊化程序設計:包括函數、編譯預處理、程序的多文件組織、數組、結構體、共用體、枚舉類型、指針和引用。
(3) 面向對象程序設計:包括類、對象、構造函數、析構函數、繼承、派生、友元、虛函數、靜態成員、運算符重載、I/O類庫、命名空間、模板和異常處理等。
3.2課程的重點、難點及解決辦法
(1) 算法表達、結構化語句:結構化編程的基礎。注重講授算法的結構化表示法,結構化語句,常用基本算法,斷點+單步調試技術。
(2) 函數:模塊化編程基礎。注重講授程序的模塊化組織思想和方法,自頂向下逐步求精的程序設計思想,參數傳遞,變量作用域,程序的多文件組織。
(3) 數組、結構體、指針:數據的結構化和模塊化組織基礎。指針是重點和難點,應正確區分指針與地址,強調指針類型的作用,講清各類指針的含義及作用。特別注重講授指針在動態生成基本數據結構,解決實際問題方面的綜合實例。
(4)類、對象、繼承、運算符重載、虛函數:面向對象程序設計基礎。運算符重載較易理解,但有些方面易忽視,應提請學生注意。虛函數是重點和難點,應注重講授虛函數的必要性、重要性、實現機制和綜合實例。
4改革考評方式,正確發揮考試的導向作用
根據VC++課程的特點,正確發揮考試的導向作用。改革考評方式,實行考教分離,并使其與江蘇省大學生計算機等級(二級)考試方式接軌,采取筆試(50%)+機試(50%)的方式,理論與實踐并重。
試卷的試題源自題庫和現任教師的征卷,試卷由選題算法和軟件系統產生,難度與二級考試相當,提高了考評的科學性。
5總結提煉教學經驗和成果,積極開展特色教材建設
教材建設是課程建設的重要方面。幾年來,課程組對國內外流行C++教材進行研究、分析和試用,總結、積累和提煉自己的教學經驗和成果,從校內講義開始,逐步開展具有自己特色的教材建設工作。2005年2月,自編教材《Visual C++程序設計習題、實驗與編程實踐》由華東理工大學出版社出版,同年12月又第二次印刷,得到了社會讀者的認可。2005年10月,本課程獲江蘇省高等學校精品教材立項建設,課程組編著的體現“負反饋”教學特色的教材《C++程序設計實踐教程》一書目前已與清華大學出版社簽訂出版合同,書稿已經交付,將于2007年上半年出版。
6運用現代化教學手段,加強網絡教學資源建設
經過多年的教學、研究、建設和總結,本課程已積累了豐富的網上教學資源,經常更新,在教學中發揮重要作用。網上教學資源包括:課程教學大綱、課程設計大綱、教學日歷、課程設計任務書、實驗指導書、教學課件、習題集、典型問題及參考程序、相關教學論文、英文版課外輔導材料、模擬試卷等。課程組成員開發的“基于WEB的《C語言程序設計》教學系統”2006年11月獲得第二屆全國高等學校計算機課件評比二等獎。本課程網上教學資源的網址為:http://jpkc.ntu.edu.cn。
參考文獻:
[1] 劉維富,陳建平,王春明. 淺談“C++程序設計”課程的建設與實踐[C]. 第二屆全國計算機課程報告論壇,2006,11.
[2] 劉維富,丁衛平,沈學華. Visual C++程序設計習題、實驗與編程實踐[M]. 上海:華東理工大學出版社,2005,2.
[3] 顧暉,劉維富,管致錦. 負反饋教學法的原理與實踐[J]. 電氣電子教學學報,2004,(4): 102-104.
[4] 邱建林,劉維富,顧暉. C語言程序設計教學的研究與實踐[J]. 電氣電子教學學報, 2003,(4):96-98.
[5] 劉維富. C++運算符重載教學和編程中易被忽視的問題[J]. 南通工學院學報(自然科學版),2003,(3):56-59.
[6] 劉維富. C++語言引用型變量的實現機制淺析[J]. 南通工學院學報(自然科學版),2002,(1):64-66.
[7] 顧暉. C/C++語言可變參數函數的參數傳遞機制剖析[J]. 電腦與信息技術, 2004,(3): 37-38.
[8] 丁衛平,劉維富,沈天晴. C++中二維數組與指針關系的深入剖析[J]. 南通工學院學報(自然科學版),2004,(3):85-87.
投稿日期:2007-2-24
作者簡介:陳建平(1960-),男,江蘇南通人,碩士,教授,研究方向為快速算法設計與實現等。
劉維富(1961-),男,江蘇南通人,碩士,副教授。研究方向為計算機語言與程序設計等。
通信地址:江蘇省南通市嗇園路9號南通大學計算機科學與技術學院陳建平郵編226019
E-mail:chen.jp@ntu.edu.cn
電話:0513-85975405,13962955020
基金項目:江蘇省高校精品教材建設項目“Visual C++程序設計”(蘇教高[2005]26號)
南通大學精品課程建設項目“Visual C++程序設計精品課程的建設與實踐”