李文敬 廖偉志 閉應洲
摘要:本文介紹了計算機程序設計課程實驗教學在提高學生編程、系統開發能力中的作用、特點以及現狀。通過對構成學生編程和軟件系統開發能力的要素進行研究,提出了計算機程序設計課程實驗教學的量化質量標準,并對質量標準所包含的指標進行了必要和可行性分析。初步試驗表明,實施該質量標準收到了一定的成效。
關鍵詞:程序設計課程;實驗教學;質量標準;編程能力
中圖分類號:G642 文獻標識碼:A
引言
目前,在高校的計算機本科專業中,程序設計課程都制訂了較為完整的課程教學大綱和實驗大綱,任課教師以此作為課堂教學和實驗教學的指導。任課教師按照程序設計課程教學大綱的要求進行教學與考核,基本達到了考核學生所掌握的程序設計基礎理論和基本編程能力,基本符合理論考核的質量標準要求。但是,按照實驗大綱進行教學和實驗,學生的實際編程能力和動手能力卻沒有得到很大的提高,學生的軟件系統開發能力與社會的要求相差較遠。為此,我們對現有的實驗教學質量標準和實驗教學大綱進行研究分析,發現目前的實驗教學質量標準大都是學校層面制訂的,用于對實驗教學進行宏觀指導和管理的文件,而課程實驗教學的質量標準卻不多見。目前,普遍的做法是以實驗教學大綱代替實驗教學質量標準來實施,但實驗大綱僅起到實驗指導以及提出簡單的、模糊的實驗要求的作用,沒有明確的、具體的、量化的指標。因此,我們從提高學生編程能力和動手能力出發,對計算機程序設計課程的實驗教學質量標準進行研究,用明確的、量化的、具體的指標對學生的實驗提出具體的目標要求,構建程序設計課程實驗教學的質量標準。有了實驗教學質量標準,使學生明確實驗時要完成的任務,教師在實驗教學過程中所承擔的具體責任,學校教學管理部門的質量監控更加具體、規范和科學,對提高學生編程能力和動手能力起到保障和促進作用。
1計算機程序設計課程實驗教學的作用
計算機程序設計課程實驗教學的作用主要體現以下幾個方面:(1)通過驗證性實驗,上機輸入程序代碼、運行、調試和修改等操作,達到掌握各種語句、語句結構、語法和規則;逐步掌握各種出錯提示的含義和修改程序的辦法;加深對程序語句的理解,熟悉簡單程序的設計方法,提高學生的讀程能力。驗證性實驗僅能體現出學生對本課程各種語句的基本掌握和對簡單程序的理解。(2)通過設計性實驗,使學生掌握利用計算機來求解一個具體問題的步驟,它可以體現一個學生編程能力與水平的高低。設計性實驗的步驟包括:第一步,分析問題;第二步,建立數學模型,學生充分運用所學的數學、物理等知識來建立數學模型;第三步,學生運用計算機中的算法策略對數學模型進行分解,得出求解問題的步驟,即算法;第四步,學生按照算法,運用程序設計語言編寫源程序;第五步,上機調試,得出結果。通過設計性實驗,使學生掌握解決問題的步驟和方法,培養學生分析和解決某一個具體問題能力,培養學生的創新精神和嚴謹的科學態度。(3)綜合性實驗一般是指軟件系統的設計與開發,要求學生綜合運用所學知識、數據庫、本語言工具來解決一個實際的綜合性問題,它能夠體現一個學生的軟件系統設計與開發的能力與水平。軟件系統開發包括系統的需求分析、系統的總體框架設計、系統的模塊設計、系統的詳細設計(功能設計)、系統的調試等幾個階段。通過需求分析,可以確定系統必須具備的操作功能以及數據的存儲功能,從而確定系統的總體框架,系統界面所包含的模塊數和后臺數據庫;系統的模塊設計是對每一個模塊進行子模塊的設計和功能模塊的設計;系統的詳細設計即對每一個功能子程序進行編程實現;系統調試就是對系統的各功能進行調試驗證。綜合性實驗是多門計算機課程(語言工具、數據庫、軟件工程等)的綜合運用,也是軟件系統所屬應用領域多種知識的綜合運用,更是程序設計課程自身基本知識、各種語句、基本結構、設計方法、設計技巧等編程技術的綜合運用。通過綜合性實驗進一步培養學生分析和解決問題的綜合能力、創新精神,是提高學生動手能力和軟件系統開發能力的有效方法。(4)通過實驗使學生掌握算法的實現過程,程序的運行、調試和修改過程,掌握系統開發的基本方法、基本操作和基本技能,獲得獨立編程和開發系統、書寫實驗報告的能力,增強學生的感性認識,加深學生對專業理論的理解。
2計算機程序設計課程實驗教學的特點
實驗教學是教學過程的一個重要的環節,它從實踐的角度來驗證專業理論的正確性,增強學生的感性認識,加深學生對專業理論的理解;通過實驗使學生掌握實驗的基本原理、基本方法、基本操作和基本技能,獲得獨立測量、觀察、處理實驗數據、分析實驗結果、書寫實驗報告等能力。通過設計性和綜合性實驗,提高學生分析問題、解決問題的能力,培養學生的創新精神和嚴謹的科學態度。計算機程序設計課程的實驗教學和其他理工科課程的實驗教學一樣,但是,它有其自身的特點,主要表現在以下幾個方面。
(1) 實驗設備準備比較簡單或可以省略。程序設計課程的實驗教學使用的實驗設備是計算機,所使用的系統軟件安裝一次后,可以長期保存并重復使用,準備階段或可以省略。
(2) 學生實驗的大部分工作,可以在進入實驗室之前完成,進入實驗室只進行編輯與程序的調試運行。在進入實驗室之前,學生預先可以進行程序的分析、設計、程序代碼的編程等工作。實驗時,學生直接進行源程序的輸入、編輯運行和調試,若得不到結果,請求指導教師進行指導。
(3) 利用計算機強大的存儲功能與快捷方便的網絡,實驗可以分階段完成。如果一個程序較大,一時完不成,可以將其保存起來,待有時間再接著編寫和運行調試。
(4) 實驗可以隨時隨地進行。現在計算機的普及率相當高、網絡快捷方便,學生可以隨時隨地完成實驗室中沒有完成的程序或設計與編寫新的程序。
(5) 實驗的對象具有重用性。程序設計過程中,具有相同功能或相近功能的算法,其代碼可以重用,大大提高學生的編程速度和編程技巧。
(6) 實驗結果可復制性和不易監控性。由于程序的可復制性和實驗過程的不易監控性,使得教師對學生所編寫的程序的原創性和真實性難以判斷。基于以上特點,程序設計課程的實驗教學具有很大的靈活性和學生獨立完成實驗難于判斷性,從客觀上要求我們必須建立程序設計課程的實驗教學質量標準,用以衡量學生必須具備的編程能力和基本要求。
3實驗課程形式與實驗類型
目前,高校實驗教學有課程內實驗教學和獨立開設的實驗課程兩種形式。其中,獨立開設的實驗課程為單獨設置的實驗性課程,其教學活動以獨立的課程形式組織,單獨計算學分,單獨考核與登記學習成績。課程內實驗教學通常是一門課程中的實驗教學內容,與理論教學一起構成一門課程,其成績歸入課程成績。計算機程序設計課程的實驗教學大都屬于課程內實驗教學形式。課程由理論教學和實驗教學兩部分組成,教學課時的分配大約為3∶1,課程的成績和學分的也基本由3∶1比例構成。
實驗類型分為驗證性實驗、設計性實驗和綜合性實驗。驗證性實驗是指學生在一個設計完整的實驗框架重新驗證是否達到原理所描述的結果,學生通過觀察和操作鞏固和加強有關知識內容、培養實驗操作能力的重復性實驗。程序設計課程的驗證性實驗一般是指由教材或實驗指導書提供的完整程序,學生通過編譯系統編輯代碼并運行得到正確的結果。其目的是驗證原理的正確性或程序設計正確性。學生通過實驗鞏固和加強對所學語句、語法、簡單算法設計的理解。設計性實驗是指給定實驗目的要求和實驗條件,由學生自行設計實驗方案、選擇或制作儀器并加以實現的實驗。開設設計性實驗的目的在于激發學生學習的主動性和創新意識,培養學生獨立思考、綜合運用知識、提出問題和解決復雜問題的能力。程序設計課程的設計性實驗要求學生掌握被解決問題的分析、算法設計、算法實現、調試運行等編程的每一個步驟,提高學生的程序設計能力。綜合性實驗是指在學生具有一定基礎知識和基本操作技能的基礎上,運用某一門課程或多門課程的綜合知識對學生實驗技能和實驗方法進行綜合訓練的一種復合性實驗。開設綜合性實驗的目的是對學生的實驗技能進行綜合訓練,培養學生的綜合分析能力、實驗動手能力、數據處理以及查閱資料的能力。程序設計課程的綜合性實驗就是要求學生掌握軟件系統開發的方法、步驟,提高學生軟件系統開發能力。
4計算機程序設計實驗教學的現狀
實驗教學在培養學生實踐能力和創新精神中起著越來越重要的作用,特別是隨著本科院校第二輪教學工作水平評估工作的完成,各院校的專業建設、課程建設都取得了明顯的成效,每個專業都制訂了完善的人才培養方案,每門課程也制訂了完整的教學大綱和實驗教學大綱等相關的材料,制訂了規范、科學的質量監控措施,這些都很好地促進了高校教學質量的提高。在計算機程序設計課程的實驗教學大綱中,增加了設計性實驗和綜合性實驗的個數,對提高學生的編程能力有了很大的促進作用。但是,大部分程序設計課程都缺少實驗教學的質量標準,實驗教學環節對提高學生的編程能力和軟件系統開發能力還存在諸多不足,主要體現以下幾個方面。
(1) 學校一般都制訂了實驗教學質量標準,這個質量標準是學校從宏觀層面對各類課程的實驗教學準備、教學過程、教學效果等提出的目標管理,比如,教學文件是否齊備、實驗課表是否齊全、教師備課是否認真、實驗準備是否規范等等,它不是具體課程的質量標準。從目前的調查情況來看,大部分的程序設計課程都沒有實驗教學質量標準。但是,對于程序設計課程的實驗教學來說,有明確的、具體的、量化的質量標準尤為重要。
(2) 用實驗教學大綱替代實驗教學質量標準,學生的實驗效果沒有衡量的尺度,沒能真正體現出學生的編程能力。實驗大綱主要包括課程名稱、實驗目標與要求、實驗教材、考核方式、實驗項目內容等,從其所包含的項目看,不包含明確的、具體的、量化的指標。但是,往往卻以實驗大綱作為質量標準來看待,實驗教學只要按照實驗大綱完成實驗,學生寫完實驗報告就算完成實驗教學,學生的編程能力無法衡量。
(3) 實驗教學大綱中增加了設計性和綜合性的實驗數量,對于提高學生的編程能力有了一定的促進作用。但是,沒有具體的、量化的指標來規范設計性和綜合性的實驗項目,任課教師執行起來隨意性大,學生實驗完成的任務偏少,學生編程的效果、編程能力的提高都沒有評判的標準。
(4) 教師對學生實驗教學成績的評定,大都以學生撰寫的實驗報告為依據,這樣的成績評定比較單一,不能真正體現出學生的編程能力。應該制訂出實驗教學質量標準,從多方面考核學生的實驗效果與編程能力。
(5) 沒有課程的實驗教學質量標準,學生不明確需要完成實驗數量、教師也無法知道學生要做實驗多少才會達到要求,學校教學管理部門對教師實驗教學的教學質量監控也無法落到實處。
(6) 學生在實驗過程之中,做的大都是驗證性的實驗,對于設計性和綜合性的實驗完成達不到目標要求,這里雖有教師要求不嚴的原因,也有學生畏難的成份。但主要還是任務、目標不明確所致。
(7) 學生預習與準備不足,實驗前不做算法設計和編程,而是到實驗時才忽忙對題目進行分析、算法設計、輸入與編輯源代碼,運行調試,往往一次實驗課只能完成1~2個簡單的程序設計或調試,浪費寶貴的實驗時間,實驗效率低。
5實驗教學質量標準的研究
計算機程序設計課程是應用性很強的課程,這些課程的教學質量和教學效果主要體現在學生的實際編程能力和軟件系統開發能力上。而學生編程能力的培養除了要求學生掌握扎實的基本語句、語法、規則外,還要通過實驗教學來培養學生的編程能力和軟件系統開發能力。所以,程序設計課程的實驗教學顯得尤為重要,而要使實驗教學取得良好的效果,必須制訂科學、規范的質量標準,用以檢驗和考核學生的實驗效果,確保學生編程能力和軟件系統開發能力的提高。為此,我們主要從構成學生的編程能力和軟件系統開發能力的各要素出發,對程序設計課程的實驗教學過程所必須達到的質量標準進行研究,作為制訂計算機程序設計課程實驗教學質量標準的依據和指導。
5.1構成學生編程能力的要素
構成學生編程能力的要素有很多,概括起來主要有:
讀程能力程序由語句、語法、規則構成,就像一篇文章由文字、詞組按照一定的語法組成語句,若干語句按照描述的內容組成文章。要讀懂一篇文章,首先要認識字,懂得每個語句的意思,才能讀懂文章的內容。讀程序也有同樣的道理,要讀懂一個程序,必須弄懂程序設計語言的每一個關鍵詞、語句的結構、語句的語法規則、語句的作用。但是,讀程序與讀文章還有本質的區別,程序是一個算法的標準語言描述,算法復雜,則相應的程序代碼就復雜,閱讀起來就較困難。但在很多實際問題中,要實現的功能卻相同或相近,它們的程序代碼也相同或相近。所以,要培養學生的讀程能力,必須要求學生多讀程序,從讀懂簡單的程序開始,到讀懂較為復雜的程序,達到閱讀較為復雜的程序時,能很快知道程序所實現的功能以及還原出程序所實現的算法。
算法設計能力算法設計是指設計求解某一特定問題的一系列步驟,這些步驟可以通過計算機的基本操作來實現。算法設計能力是學生編程能力高低的主要標志,是提高學生編程能力的關鍵,是構成學生編程能力的關鍵因素。所以,要培養學生良好的算法設計思想,對算法設計過程嚴格訓練,使學生對算法設計的步驟:(1)問題分析;(2)數學建模;(3)數據結構設計;(4)算法設計;(5)算法表示等能夠形成良好的算法設計的習慣,并按照這些步驟和思路進行設計。此外,還要培養學生掌握算法設計的方法和一些基本的策略。
編寫代碼能力編寫代碼就是算法實現。如果算法設計過程完成得比較好,具有良好的算法表示方式,則將其用程序設計語言來描述會變得相對容易。編寫代碼的能力主體現在對算法表示方式的理解以及程序設計語言各語句的實際應用。編寫代碼的能力可以通過對基本結構的算法描述和各種不同的算法描述進行編碼來培養。
程序調試與改錯能力程序的調試能力包括掌握常用的調試方法,能讀懂程序出錯提示以及修改出錯的程序,能較快地發現出錯的原因和作出正確的修改。
5.2實驗教學質量標準包含的指標
從構成學生編程能力的各要素來看,它們有些可以通過理論教學來培養,但有些必須在實驗教學過程中培養。因此,我們認為,在制訂實驗教學質量標準時,應該包括以下指標:
(1) 掌握程序設計語言編譯系統的安裝。達標要求,獨立成功安裝一次以上。
(2) 掌握編譯系統各菜單的命令及常用命令按鈕,并熟練使用它們進行相關的操作。達標要求,用具體的程序來檢驗每一個命令的實際操作,弄清每一個操作所產生的結果,在實驗3~5次后進行考核。
(3) 掌握編譯系統出錯提示的具體內容、出錯標志及位置、修改的方法。達標要求,教師通過舉例,將編譯程序時經常出現的出錯提示進行示范;學生編譯程序時隨機出現的一條或多條出錯提示,能夠指出它的內容、程序出錯的位置以及改錯的辦法。
(4) 掌握源程序的編輯、編譯、運行、調試及改錯、源文件及相關文件的存盤和調用。達標要求,源文件及其相關文件的創建、編輯,正確存盤和正確調用;編譯、運行、調試過程、生成可執行文件正確。
(5) 實驗大綱中規定的每一個編程實驗項目,學生要完成的驗證性實驗個數不少于5個,要求學生在編輯完成后,先閱讀程序,試運行后得到一個結果,然后再通過運行程序、調試程序得到正確的結果,最后比較這兩個結果的一致性。達標要求,教師現場出2~3個程序,讓學生編輯后,先由學生讀程序,給出一個結果,然后再通過運行程序,比較讀程得到的結果與計算機運行結果,通過這樣的實驗來提高學生的讀程能力。
(6) 實驗大綱中規定的每一個編程實驗項目,學生要完成的設計性實驗個數不少于10個。達標要求,每一個實驗項目完成后,任課教師現場考核學生設計性實驗2~3個,學生現場進行設計、編程、運行調試,得出正確的結果。
(7) 與數據庫連接實驗操作。要求學生掌握該語言源程序1~2種連接數據庫的方法。達標要求,學生現場用該語言編寫代碼連接數據庫或手動連接數據庫,運行程序調用數據庫,并對其進行相關操作。
(8) 程序設計課程,要設置1~2個綜合實驗項目。其中,1個實驗項目由任課教師預設題目,要求包含整個課程的相關編程內容,如菜單、工具欄、狀態欄、功能命令等模塊及功能程序,使學生得到綜合的訓練和應用;另一個實驗項目可以由學生自己選題,實現學生自己感興趣的領域。
5.3實驗教學質量標準的分析與試驗
我們提出的質量標準中,第(1)~(4)項指標主要是考核學生對實驗環境、程序調試運行的能力。在多年的教學實踐中,我們發現這些指標也是構成學生編程能力的不可缺少的要素。一般編程能力強的學生,他們都能熟練使用編譯系統的各種命令、命令按鈕、各種出錯提示以及調試程序的各種方法,反之,編程能力低的學生,這些方面的操作不夠熟練,有些菜單中的命令甚至沒有使用過,對出錯提示不知何意,程序出錯了,不能獨立修改或排除。所以,設立實驗環境和程序調試的質量標準是必須和可行的。第(5)~(8)項指標主要考核學生的讀程能力、編程能力、數據庫操作能力、綜合編程能力。目前,實驗教學大綱中,雖然包含了實驗項目、實驗目的和實驗內容,但是,大部分都寫得簡單,要求和目的不夠明確,沒有量化的標準。我們設立的指標就是根據不同的實驗項目、實驗方法,對它們進行量化和強度的拓展,給學生和任課教師有一個明確的要求。使學生明確自己要完成的任務,教師在實驗教學過程中必須承擔的具體責任,學校教學管理部門可以根據這些具體的指標對實驗教學過程進行質量監控。這些指標的設立,可以避免目前由于缺乏具體的質量標準,任課教師在實驗教學過程中要求學生完成的任務隨意性大,學生讀程、編程普遍偏少,編程能力普通不高的情況。
目前,我們正在“高級語言程序設計”課程的實驗教學中實施這一質量標準,實驗的效果較為明顯。在經過試驗總結和不斷完善后,將在計算機程序設計課程中逐步地實施這一具有量化指標的質量標準。
6結束語
實驗教學環節是培養應用型人才的重要一環,根據社會對人才的需求以及編程能力的要素,確定實驗教學質量標準,用量化的形式來強化實驗教學目標。實驗教學質量標準的建立,將給程序設計課程構建起理論質量標準和實驗質量標準,改變目前理論強實踐動手能力弱的局面,變成兩手都要硬,切實提高學生的編程能力和軟件系統開發能力。
參考文獻:
[1] 何欽銘,姚青. 軟件工程人才培養的實踐與思考[J]. 計算機教育,2004,(10).
[2] 呂國英. 算法設計與分析[M]. 北京:清華大學出版社,2006.
[3] 周榮輝,郝曉楓,趙宏宇. 學生程序設計能力培養的思考[J]. 吉林大學學報:信息科學版,2005,23.
Research on the Quality Standards of Computer Programming Course Experimental Teaching
LI Wen-jing,LIAO Wei-zhi,BI Ying-zhou
(College of Computer Science and Information Engineering, Guangxi Teachers Education University, Guangxi, Nanning 530001, China)
Abstract: The paper introduces the features of computer programming course experimental teaching and its status, roles on enhance student programming and system development capacity.The constituent elements of students programming and software systems development capabilities was studied. Put forward the quality standards of computer programming course experimental teaching. Necessary and the feasibility of its indicators were analyzed. Preliminary experiments show that the implementation of the quality standards has received a certain degree of effectiveness.
Key words: programming course; experimental teaching; quality standards; programming capacity