陳明華
文章編號:1672-5913(2009)10-0160-03
摘要:實驗是程序設計課程中提高學生應用和實踐能力的一個重要手段,本文針對.NET程序設計課程,討論了實驗設計中如實驗內容、實驗時間、實驗流程以及實驗的驗收與評分標準等細節問題的設計思路;課堂實驗設計的新穎之處在于將小組協作引入到實驗中,并基于因材施教的思想,在實驗中引入附加題。從課堂情況看,該實驗設計的效果良好,實驗設計的方案是可行的。
關鍵詞:.Net程序設計;實驗時間;實驗內容;實驗驗收
中圖分類號:G642
文獻標識碼:B
1引言
我院于第7學期(大三第1學期)為軟件工程專業學生開設“.Net程序設計”課程。該課程的授課目標是讓學生掌握相應程序設計語言(C#)的語法及編程思想,掌握簡單的編程技巧,到學期結束時能夠在.Net平臺上使用C#語言開發簡單的Windows應用程序。
由于程序設計課程本身的特點,決定了這是一門對動手能力要求較高的課程,不但要讓學生從理論上掌握語法、程序設計的流程等內容,更要讓學生具有編寫可運行程序的能力。本文將討論課堂實驗內容的設定及實驗課流程安排的細節問題。
在本門課程的實驗設計中除了常見的實驗步驟之外,還加入了附加題作為小組作業,從而達到培養學生團隊協作能力和自學能力的目的。
2課堂實驗的設計
2.1.Net程序設計課堂實驗內容
本課程共96學時,講授的內容及時間安排如表1所示。
為加深學生對課堂理論知識的理解,幫助學生將掌握的語法知識及時應用到程序中,掌握相關的編程技巧,課堂實驗的安排緊隨課程內容,我們針對每一章的授課內容設定了相應的實驗。實驗內容如表2所示。
對于其中的每個實驗,盡量設計其內容為應用到當前知識點的趣味小程序的編寫,讓課堂實驗從枯燥的代碼轉變成有趣的游戲,從而激發學生學習本課程的興趣和愿望,變被動學習為主動學習。
例如,在實驗三中,對循環控制語句部分的實驗內容設計為一個猜數字游戲,先隨機生成一個0-10之間的整數;然后讓用戶猜測一個0-10之間數,從控制臺輸入;如


果用戶輸入的數字與隨機生成的數字不相等,就讓用戶重新輸入,直到相等為止;統計用戶猜測的次數,并輸出。同學之間可以相互測試,檢查程序是否有錯誤。
2.2課堂實驗的流程和各部分時間安排
課堂實驗的流程安排如下:
(1) 介紹實驗內容及實驗的預期效果。
(2) 以提問的方式,帶領學生復習和實驗相關的原理和知識點。
(3) 對實驗中的主要步驟給出適當的提示。
(4) 讓學生動手做實驗,并允許學生在小組內進行討論。
(5)對各小組的問題進行總結,并統一講解。實驗中學生遇到的部分問題,不是當堂做出解答,而是作為實驗的附加問題,算作一個小組作業,要求學生課后通過查閱書籍或在通過網絡查詢,獲取答案,這個問題每個小組給出一個統一的答案即可。
課堂實驗中各個步驟的時間是根據具體的實驗內容而定的,一般情況下,時間的比例為0.5∶2∶0.5∶5∶2。每個課堂實驗總的時間根據實驗的具體內容控制在1-2課時。
2.3實驗的評分標準
2.3.1計入總成績
實驗是整個課程中的一個重要環節,在課程中,我們通過對總成績的分配來引導學生改進學習方法,端正學習態度。為了強調實驗的重要性,實驗的成績最終也要計入期末的總成績中。
實驗的成績分為兩部分:實驗本身的成績對應實驗報告冊要求的內容;小組附加成績,對應2.2節中流程(5)提到的要求學生課后完成的內容。
實驗本身的成績最終會計入總成績的平時成績部分,在平時成績中占40%的比例(本門課程的平時成績和期末成績的比例為50∶50);小組成績除了實驗中的問題之外,還包括課堂上遇到的其他問題,最終的小組成績也會計入到平時成績中,占平時成績的40%。
小組成績設置的目的,是為了引導學生,通過協作和自學的方式獲取知識和解決問題,培養學生的團隊協作精神和自學能力。
2.3.2單個實驗的評分細則
本學期共設置了16個實驗,每個實驗的實驗本身的成績總分為5分,具體細則如下:
(1) 實驗要求的代碼占3分。評分標準為:代碼能夠實現實驗要求的功能,并且結構清晰合理;對于未能當堂完成的同學,實驗代碼部分的成績滿分為2分。
(2) 實驗報告冊占2分。評分標準為:每一部分都按照要求填寫,并且實驗結果書寫正確;重點考查實驗原理、預習中的問題和實驗結論。
3實驗指導書的設計
為了提高課堂實驗的授課效果,幫助學生加深對知識點的理解,我們編寫了實驗指導書,該指導書現在仍在試用階段,尚未出版發行。
每個實驗指導包含了如下幾個部分:
(1) 實驗題目,說明該實驗的內容;
(2) 實驗目的,說明該實驗,針對哪些知識點;
(3) 實驗背景,介紹該實驗對應的原理知識,也可以作為學生預習和復習相關知識點的指導;
(4) 實驗內容,介紹本實驗中要實現的功能;
(5) 實驗步驟,對于實驗中的關鍵步驟進行提示,引導學生的思路,從而完成實驗,實現功能;
(6) 實驗圖示,對于部分語言描述仍難于理解的實驗,給出相應的實驗圖示,幫助學生理解實驗功能的要求;
(7) 實驗附加題,根據課堂上學生的問題情況,對部分實驗,總結出難易適當的問題,作為附加問題,附在實驗的后面。
4實驗實例
下面以實驗十四時鐘程序為例,說明前面論述的課堂實驗的設計方法。
4.1實驗內容
該實驗幫助學生掌握GDI+圖形編程相關的知識點,實驗內容為編寫Windows應用程序,實現如圖1所示的小時鐘程序。該時鐘包含時、分、秒三條指針,每秒鐘指針的位置變化一次,以符合當前的時間;時鐘的背景為圓盤型,要有背景圖片;可以使用鼠標拖拽時鐘窗體。

4.2實驗包含的知識點
該實驗中包含的知識點有:
(1)Windows應用程序窗體屬性的設置,包括去掉窗體的標題欄,設置窗體的背景圖片。
(2) 時鐘控件的使用。控制指針每秒鐘變換一次位置。
(3)GDI+中如何修改窗體的外觀(默認外觀為矩形)。
(4)GDI+中線條的繪制。
(5) 類的定義和類的繼承。
這些相關的知識點都會在實驗指導書中該實驗的背景知識中給予介紹。
4.3實驗步驟的設定
時鐘程序的實驗步驟設定如下。
(1) 使用Visual Studuo.Net2005,新建Windows應用程序ClockEx;
(2) 編寫代碼,修改窗體Form1的外觀為圓形,并去掉窗體的標題欄,為時鐘設置背景圖;
(3) 編寫指針接口IPointer,聲明指針對應的相關屬性和方法;
(4) 對應時針、分針和秒針分別編寫相應的類HPointer、MPointer和SPointer,都繼承接口IPointer,實現其中的方法;
(5) 拖拽一個計時器控件到窗體,并編寫相應的Tick事件處理方法,繪制三個指針(指針需要編寫單獨的類),實現每秒鐘指針位置變化一次,符合當前的時間;
(6) 添加鼠標落下和移動對應的事件處理方法,實現用鼠標拖動時鐘的功能。
參照實驗步驟以及實驗指導中對相關知識點的介紹,學生就不至于看到實驗要求而無所適從,實驗步驟的設定能夠幫助學生理順思路,按部就班地完成實驗功能的要求。
4.4實驗的時間安排
本實驗涉及到的代碼量比較大,難度也較高,技巧性較強,因此,課堂實驗的時間設置為2學時,90分鐘。
其中,介紹實驗內容大約5分鐘時間,包括將實驗的結果演示給同學看,讓學生都對運行的結果產生興趣,有完成實驗的愿望;復習的時間大約為20分鐘,幫助同學回憶其相應的知識點及相關問題的解決方法;用15分鐘左右的時間對實驗中的主要步驟給出適當的提示,說明對應的步驟應用什么知識點,并對其中較難的代碼進行講解,如創建指針接口,給出創建分針Mpointer的代碼示例(需要注意的是,在這個過程中,要求學生認真地聽講、理解代碼,而不是抄寫代碼);給學生約40分鐘的時間,進行代碼的編寫,在此期間解決學生的問題;最后用10分鐘左右的時間總結學生遇到的細節問題。
4.5附加問題的設定
根據以往的經驗,在進行這個實驗時,最多的問題是在程序運行過程中發現鐘表指針移動時,原有的指針圖形沒有消失,從而在表盤上畫出了多個指針。
在這里可以將附加問題設置為:找出上述問題的原因,并說明在程序中如何避免這種情況。
這個問題的難度不是很大,只要修改很少量的代碼就可以解決;但是這又是一個常見的問題,而且需要動腦筋才能夠想出解決方案;在解決問題的過程中,通過小組討論,可以集思廣益,既培養了團隊協作精神,又加深了學生對該問題的理解。
5課堂實驗效果總結
5.1實驗效果
從本學期的課堂實驗效果上看,半數以上的同學在課堂上就能夠完成實驗代碼;同時,從回答附加問題的情況看,以軟件工程06級(.Net)1班為例,全班共11個小組,每個小組都至少解決了一個問題,多個班級解決了3個以上的問題,學生已經開始從以前對老師的完全依靠走向自立。
綜上,“.Net程序設計課程”的課堂實驗設計效果是良好的,是可行的。
5.2今后的工作
課堂實驗方面今后的工作將從如下三方面入手:
(1) 繼續深入探討和思考對實驗內容的設計,提出更能提高學生興趣、幫助學生加深對知識點理解的實驗內容。
(2) 通過一輪實驗指導教材的適用,對實驗指導書進行進一步的修改,并盡快出版。
(3) 通過一輪到兩輪實驗課程的講授,對附加題的內容進行總結,并固定下來。通過課堂實驗,繼續推動分組教學的進行。