摘要:實驗教學是工科院校計算機程序設計課程的重要組成部分,其教學效果的好壞將直接影響到課程的整體教學質量。本文針對程序設計實驗教學過程中存在的問題和不足,提出基于一般結構化程序設計語言類課程的實驗教學模式,將”模塊化”思想應用到教學組織過程中,在教學實踐中取得了比較好的效果,有益于培養和提高學生的實踐動手能力。
關鍵詞:模塊化;程序設計;實驗教學
中圖分類號:G642 文獻標識碼:A 文章編號:1009-3044(2009)15-3964-03
Research and Practice on Modular Test Teaching of Programming
HUANG Wei1, ZHOU Ming-zhen2
(Dept. Computer Science and Technology of Anhui University of Technology and Science, Wuhu 116029, China)
Abstract: Test teaching is an important part of the courses of computer programming in Engineering Colleges, its teaching result will directly effect the whole teaching process. Aiming at the current deficiency, the paper proposes a test teaching mode based on some structural computer programming courses. The actual teaching effect seems to be very satisfied because of the modular thought. It will cultivate the practical ability of the college students.
Key words: Modularization; Programming; Test Teaching
1 引言
高校非計算機專業計算機基礎教學改革勢在必行。應該根據現代教育思想和教學理論,改進教學方法,正確選擇教學內容,改革課程體系和教學模式,更新教學手段,強化實驗教學[1],改進考核方式,加強師資隊伍建設,以提高計算機基礎的教學效果和教學質量。掌握和應用計算機知識,是培養新型人才的一個重要環節,是高等學校全面素質教育中極為重要的組成部分。
結構化程序設計語言類課程在多數工科院校均普遍開設,作為計算機基礎教育課程,非計算機專業學生選課面較廣,學生人數也較多,課程教學效果的好壞將直接影響到是否能有效培養和提高學生的程序設計思維和動手能力。由于程序設計課程非常注重學生實踐能力的培養,因此實驗教學環節尤其重要。非計算機專業程序設計課程的教學同樣非常強調對于學生實踐和動手能力的培養,實驗教學是程序設計課程的重要組成部分,實驗效果的好壞直接影響到課程的整體教學質量。課堂的理論知識,能否被學生真正接受并加以應用,是通過實驗這一重要環節進行消化、吸收的。但是目前在實際的教學過程中,出現了諸多急待解決的問題,如實驗教學過程控制不合理,教學方法和內容陳舊,教學效果不佳等等。本文針對實驗教學存在的不足,提出基于一般結構化程序設計語言類課程(如C語言,FORTRAN)的實驗教學模式,將”模塊化”思想應用到整個教學過程中,以培養和提高學生的實踐動手能力為導向,以教學大綱為基準,根據學生專業背景和掌握程度的差異設置不同的實驗環節,在實際的《C語言程序設計》課程教學實踐中取得了比較好的效果,學生反映良好,此方法還可推廣到其他課程的實驗教學中去。
2 對于傳統教學模式的分析
實驗課程教學實際上是程序設計教學過程當中的重頭戲。近幾年隨著高校的擴招,學生人數急劇上升,但師資卻沒增加多少,從而經常出現一個老師同時輔導多個班級的實驗。實驗課上學生網上聊天、打游戲、聽歌、看電影等現象比較嚴重,從而導致實驗環節的教學質量大大下降。目前多數實驗還是驗證性的,這樣做固然有它的好處,但這不利于學生的創新性教育,使學生失去了學習計算機的興趣。根據對所在學校情況的分析調查和研究分析,大部分專業的學生對于程序設計類語言課程實驗環節的學習主要具有以下特點:
1) 由于專業背景和能力的不同,學習中大都有畏難情緒。課程初期階段,學生都有一定的學習興趣,但是到最后能堅持下來的寥寥無幾。很多學生抱怨程序看不懂,不會編,久而久之喪失了學習下去的信心。
2) 在非計算機專業同學中,有一部分學生對于F語言程序設計的基本理論和知識掌握比較好,但是缺乏一定的實際動手設計能力,實驗設計環節效果不理想,遇到具體問題不能很好地編程解決和實現。
3) 由于課程結束后要參加統一的省級考試,所以相當一部分學生為了應試,只能硬者頭皮來上課,導致課堂教學氣氛沉悶,很多學生不認真上課,而是利用上課時間做水平考試的練習題。綜上所述,現有的程序設計課程實驗教學重點大多放在了程序設計的理論知識點上,沒有很好地考慮到實際應用和各專業學生的學習特點和狀態,因此存在各種各樣的問題急待研究和改革。首先,現有的教學模式下,實驗教學理論知識和實踐應用相脫節。理論知識不能很好地體現在實際的教學內容中。學生普遍感覺到實驗教學與實際的專業和具體應用聯系不緊密,沒有什么用處。比如在F語言程序設計實驗教學中,對于輸入輸出語句的格式控制部分,由于現有內容設置不夠合理,很多學生感覺到沒有什么實際意義。
其次,實驗內容和教學方法陳舊。實驗教材質量的好壞會直接影響到整個實驗教學過程的效果,現有的實驗內容雖然對實驗類型做了劃分,但是還沒有能夠很好的考慮到學生的專業和個體差異,只是“一刀切”,如何合理科學地設置實驗內容和教材是一個急待解決的根本問題;授課教師把精力主要放在了理論教學環節上,而現有的實驗教學方法幾乎是空白,只是學生在實驗課做實驗,完成實驗報告而已,實驗教學不能很好的被控制,同時也導致理論和實踐相脫節。
另外,現有的實驗教學管理水平不高,對于學生的實驗秩序管理,實驗內容管理和實驗教學的效果評價等諸多問題還沒有較好的通用解決方法。最后,學生對于實驗教學的興趣度比較低,普遍存在實驗上課態度不認真,準備不充分,實驗完成后不認真總結分析寫報告,甚至抄襲。
針對以上問題,如果不很好地反思和改革我們現有的實驗教學模式并解決相應的問題,那么將會在很大程度上阻礙我們的程序設計課程教學總體質量。
3 模塊化教學思想
3.1 模塊化的理論根據
設函數F(x)定義問題x的復雜程度, 函數E(x)確定解決問題x需要的工作量(時間)。對于兩個問題R1和R2,如果F(R1)>F(R2),顯然E(R1)>E(R2)。
根據我們解決一般問題的經驗和過程,可以找到另一個規律是 F(R1+R2)>F(R1)+F(R2),于是E(R1+R2)>E(R1)+E(R2)[2]。這個結論是模塊化的根據——把復雜的問題分解成許多容易解決的小問題,原來的問題也就容易解決了。
根據模塊化理論觀點, 實驗教學課程體系可視為一個由許多獨立的課程子系統(即實驗內容)構成的, 課程子系統從屬于課程體系這一大系統;而各課程子系統又彼此構成完整的實驗教學體系。每個專門的課程子系統都有獨立而特定的功能。課程子系統與課程體系之間,以及彼此的子系統之間通過內在運作機制建立起和諧的關系,當系統間的耦合實現平衡時,整個課程體系的綜合功能就能達到最佳。按照這一系統功能運作,模塊化的實驗教學效果就能發揮出來。借助模塊化思想可以對現有實驗教學的各個層面進行改進和完善。
3.2 基于模塊化的實驗教學模式
3.2.1 教學目標模塊化
教學目標模塊化的目的在于針對學生掌握知識的不同情況來設置各個層次的學生在教學活動中所要達到不同的學習目標??筛鶕W生的不同專業來區分,可歸結為計算機專業和非計算機專業兩類。對于計算機專業學生,程序設計能力是必須很好掌握的;而對于非計算機專業學生,既要培養他們基本的程序設計能力和思維以適應今后的實際專業工作需要,又不能過于苛求.因此可在實驗教學大綱中依據情況設置不同的教學目標作為指導。
3.2.2 教材及教學內容的模塊化
實驗教材及內容是實驗教學的基本材料?,F有的程序設計實驗教材或指導書數量較多,難度各異,層次不齊。為適應不同層次不同專業的學生,本著因地制宜的原則,教師應根據模塊化的教學目標做到從實際出發[3],選擇相當難度的教材,最好同一課程組的各授課教師能根據實際情況組織自編實驗指導教材,以使得實驗內容滿足模塊化的原則。
首先根據教學目標和實際要求確定程序設計課程的實驗次數以及實驗類型,設置一般驗證性實驗,設計性實驗和綜合性實驗等,每種實驗類型均要設置相應數量的設計題目和要求以供選擇,各類型實驗之間力求做到通用性和靈活性,教師要把實驗教學的內容和具體要求闡述清楚;其次,針對每次實驗內容,同樣進行模塊化分層,如圖1所示,分別設置基礎編程題(驗證性實驗),應用設計題和能力拓展題。
基礎編程題和應用設計題主要針對掌握程度一般及非計算機專業學生,應用設計題和能力拓展題則針對掌握程度較好及計算機專業的學生,這樣可以做到各取所需, 能力拓展題可劃分為選做題范圍,主要涉及一些綜合性設計內容,也可結合課程設計內容來設置。分層的好處在于適應不同的情況,同時也在側面可對實驗教學進行有效管理,每個同學完成的實驗內容都有所不同,就能在一定程度上避免實驗報告的抄襲現象。另外,尤其對于設計性實驗,教師要主動積極融入到實驗環節中來,而不是被動地等待學生問題的出現。設計性實驗一般都有一定的綜合應用特點,對學生而言也有一定的難度和自由性,教師可參與其中做相關的必要指導,例如可預先根據理論內容提出一些設計要求,讓學生在實驗過程中靈活選擇,這樣可提高設計性實驗的效果,避免學生的盲目性。
3 教學過程的模塊化
在整個實驗教學過程中,也要以模塊化思想為主線,這樣可促進對于實驗教學本身的有效控制和管理。對于一般驗證性實驗,要讓學生有準備這一環節和過程,即事先建立算法編寫好程序在進行上機實驗,實驗完成后提交實驗驗證報告;對于設計性實驗和綜合性實驗,可設置同步教學和實驗討論兩個必要的過程,教師可在實驗室利用相應的授課手段(如多媒體)進行同步教學,參與到設計性實驗中,而學生之間可針對與具體要求進行實驗討論和互動,這樣既可調動學生的積極性,也可大大提高實驗的效,實驗完成后可提交實驗總結和研究報告。
4 基于模塊化的實驗教學實踐
以結構化語言《C語言程序設計》課程的教學實踐為例,在實驗教學的各個實際層次應用了模塊化思想,從而很大程度上提高了程序設計課的整體教學質量。循環結構是結構化程序設計中過程描述的主要語句,C語言中分為for語句,do while循環語句和do loop循環等幾種主要形式,一般均要設置相應的實驗內容模塊以訓練學生,下面以循環結構的實驗教學為例,介紹實際的教學過程, 模塊化教學的整個過程如圖2所示。
4.2 制定分層的實驗教學內容
課堂上我們主要將授課重點放在分析程序的算法模型上,重點講解程序的設計思想和循環結構的實現,明確將一個實際問題轉化為計算機能夠實現的算法模型的過程,指導學生“分析具體問題,建立算法模型”,培養學生分析問題的能力。學生通過大量的上機實驗解決“怎樣將算法模型轉化為最終的C語言程序循環結構”的問題。其次設置具體的實驗內容, 實驗指導書中明確指出了每次實驗的實驗目的、實驗要求和實驗內容,用以保證實驗的進度和試驗的效果,實驗難度中等為宜。對于驗證性的內容,我們在實驗教材中設置了一定數量的基本編程題目,例如”求500以內3的倍數的總和”,“統計全班某門課程不及格同學的人數”等,每題都要求使用不同的循環形式來實現,主要針對多數學生以鍛煉他們對于循環語句的基本表達和應用能力;對于設計性的內容,我們也給出了相應總體設計目標和要求,例如“思考如何實現彩票機的功能,程序可以隨機按要求輸出號碼”,“實現小型計算器”等,在實驗過程中激發了很多學生的設計興趣。
4.2 制定分層的實驗教學管理
在實驗過程中,非計算機專業學生對于基本的for語句,do while循環語句和do loop循環等三種形式均掌握不夠好,在程序書寫過程中常常搞錯系統關鍵字,究其原因主要是語法知識不清楚,因此教師的指導和主動管理就非常關鍵。在實驗之前,我們要求所有的非計算機專業學生寫出并上交實驗報告,主要是把他們對于循環結構語句的學習掌握情況和實驗預習情況進行反饋,讓他們把還不理解的問題,想要用循環結構解決的問題全部表達出來, 這樣教師就可有的放矢,通過這一過程我們了解到很多學生對于怎樣把具體問題轉化為三種循環結構還不了解,在實驗中可允許這類同學相互討論;對于設計性實驗和綜合性實驗的管理,我們要求實驗完成后提交實驗總結和分析報告,要求學生在報告中分析解決具體問題的思路和實現的過程,已經實現了什么功能,還有哪些沒有很好解決或有待改進,而不是把源程序簡單抄寫一下。
4.3 制定分層的實驗教學組織
我們根據各專業學生的具體情況,借助模塊化的靈活原則,組織了程序設計實驗課程小組,一個教學班級中由學生自愿組合并在老師的協調下組成若干小組,有的小組中學生能力較好,可設置為綜合性實驗組;也有的小組中學生對基本的循環結構掌握一般甚至較差,可設置為驗證性實驗組,各層次小組可進行動態的模塊化重新組合,實際證明這種實驗組織方式優于傳統方式,使得各層次學生能夠彼此幫助和協作。我們規定四至五個同學為一組并根據實際情況作了調整,實踐結果表明,有85%的同學基本掌握了for語句和do while語句,70%以上的實驗內容學生均能很好掌握。
4.4 實驗教學效果的評價
對于學生反饋的實驗報告,我們根據實驗類型的不同,給出不同的評價結果,可總結為“ABC”法和“123”法。對于一般驗證性實驗,依據學生的實際完成情況和態度給出A,B,C三個等級, A代表完成較好,能夠利用循環結構處理一般問題;B表示完成情況一般,可能有語法錯誤;C等代表完成情況較差。對于設計性和綜合性實驗,給出積分結果,即根據具體設計需求目標,思路正確但未實現的可得1分;思路合理并部分實現的可得2分;完成較好得3分,由于有一定的設計難度,評價結果要對學生有積極促進作用。實踐結果表明,有一半做驗證性實驗題的同學得了B等, 近三成做設計性實驗內容的學生得了2分。
5 結論
本文針對實驗教學存在的不足,提出基于一般結構化程序設計語言類課程的實驗教學模式,將”模塊化”思想的靈活優點應用到整個教學過程中,在實際的《C語言程序設計》課程教學實踐中取得了比較好的效果,學生反映良好,此方法還可推廣到其他課程的實驗教學中去,但是在實際的程序設計實驗教學組織管理和評價中還有很多的問題值得今后進一步研究和改進。
參考文獻:
[1] 瞿葆奎. 教育評價[M].北京:人民教育出版社,1999.
[2] 劉成章. 信息技術教育學[M].高等教育出版社,2002.
[3] 傅曉鋒. 高校計算機實驗室管理初探[J].計算機教育,2007(6).