袁輝勇 羊四清 易葉青 劉澤平
(湖南人文科技學(xué)院計算機科學(xué)技術(shù)系,湖南婁底417000)
摘要:針對C語言程序設(shè)計、數(shù)據(jù)結(jié)構(gòu)、算法分析與設(shè)計三門課程與程序設(shè)計競賽所涉及知識密切相關(guān)的特點,將程序設(shè)計競賽與這三門課程實踐教學(xué)改革相結(jié)合,并在多年的課程教學(xué)中加以實踐,取得了很好的效果。
關(guān)鍵詞:教學(xué)改革;實踐教學(xué);程序設(shè)計競賽
中圖分類號:G642 文獻標識碼:A 文章編號:1009-3044(2012)34-8230-02
C語言程序設(shè)計、數(shù)據(jù)結(jié)構(gòu)、算法分析與設(shè)計這三門課程是計算機學(xué)科的核心課程,也是實踐性很強的專業(yè)課。在傳統(tǒng)的教學(xué)中,C語言程序設(shè)計、數(shù)據(jù)結(jié)構(gòu)、算法分析與設(shè)計三門課程的分開授課,課程知識沒有整合,實踐教學(xué)存在重疊內(nèi)容、實踐教學(xué)深度不夠,理論教學(xué)與實踐教學(xué)結(jié)合不夠緊密,造成學(xué)生動手能力差。
大學(xué)生程序設(shè)計競賽是近年來國內(nèi)各大學(xué)越來越重視的學(xué)科競賽,參加大學(xué)生程序設(shè)計競賽能使學(xué)生將程序設(shè)計系列課程所學(xué)知識充分應(yīng)用于競賽中,將理論轉(zhuǎn)化為實踐,用實踐驗證及加強理論知識。
1具體改革措施
針對傳統(tǒng)教學(xué)存在的問題,我校從2010年開始對這三門課程進行教學(xué)改革,理論教學(xué)改變了以往C語言程序設(shè)計、數(shù)據(jù)結(jié)構(gòu)、算法分析與設(shè)計分開授課的模式,而是將這三門課程的知識進行整合,采用同一教師授課,做到了前導(dǎo)課、后續(xù)課的有機銜接,并重新制定了三門課程的教學(xué)計劃。為深化理論教學(xué)、提高學(xué)生實踐能力,考慮到大學(xué)生程序設(shè)計競賽所涉及的很多知識與這三門課程緊密相關(guān),我們依托湖南省大學(xué)生程序設(shè)計競賽,將這三門課程的實踐教學(xué)改革與程序設(shè)計競賽緊密結(jié)合,并重新編寫了實驗指導(dǎo)書,要求學(xué)生在每個章節(jié)的理論教學(xué)后必須完成有針對性的上機實踐,具體措施主要有以下幾個方面。
1.1精心設(shè)計實踐教學(xué)內(nèi)容
實踐內(nèi)容的設(shè)計是實踐教學(xué)改革的核心。我們以知識點為單元,結(jié)合這三門課程來設(shè)計實踐教學(xué)內(nèi)容。在C語言程序設(shè)計課程中,我們以C語言為主線,適當穿插數(shù)據(jù)結(jié)構(gòu)中的相關(guān)內(nèi)容,使C語言程序設(shè)計與數(shù)據(jù)結(jié)構(gòu)兩門課程有機地結(jié)合在一起,如將C語言程序設(shè)計中的數(shù)組和數(shù)據(jù)結(jié)構(gòu)中的直接插入排序、冒泡排序、簡單選擇排序、順序查找、折半查找放在一個知識單元中。在數(shù)據(jù)結(jié)構(gòu)課程教學(xué)中,穿插了算法分析與設(shè)計的有關(guān)知識,如在講述哈夫曼樹和圖的最小生成樹時,穿插講述了貪心算法,在講述圖的最短路徑時介紹了動態(tài)規(guī)劃算法。算法設(shè)計與分析課程主要內(nèi)容包括算法效率分析基礎(chǔ)、分治法、貪心法、動態(tài)規(guī)劃、分支限界、回溯、近似算法、概率算法等常見的算法設(shè)計策略,也覆蓋了排序、搜索、圖論、幾何、組合、數(shù)值計算等問題,我們將其中的排序、搜索和圖論中的相關(guān)內(nèi)容安排在數(shù)據(jù)結(jié)構(gòu)單元中。
我們借鑒大學(xué)生程序設(shè)計競賽題目規(guī)范、背景描述有趣和輸入輸出明確等特點,將訓(xùn)練題目描述成競賽題的形式。以應(yīng)用為主線、以方法與能力培養(yǎng)為出發(fā)點,精心設(shè)計了這三門課程的實踐教學(xué)內(nèi)容近300道訓(xùn)練題目,并上傳到在線評測系統(tǒng)。為了激發(fā)學(xué)生的學(xué)習(xí)興趣,在設(shè)計題目時,我們不僅考慮了題目內(nèi)容的新穎性等,更重要的是要創(chuàng)造一種與現(xiàn)實應(yīng)用緊密結(jié)合的環(huán)境,每道題目均提供一定規(guī)模的測試數(shù)據(jù),以測試程序的正確性與效率。另外,考慮到學(xué)生水平的差異,在每個知識單元中設(shè)計了不同難度的題目。這些題目有些側(cè)重提高動手能力、訓(xùn)練編程感覺,有些側(cè)重算法設(shè)計、訓(xùn)練思維能力,有些就是國際國內(nèi)各種程序設(shè)計比賽的原題。
教師根據(jù)教學(xué)進度在評測系統(tǒng)上布置作業(yè),對于能力強的學(xué)生,在完成基本要求的基礎(chǔ)上,再增加一些有難度的題目,并引導(dǎo)學(xué)生自主研究新的解決方法,激發(fā)學(xué)生的創(chuàng)新能力。學(xué)生除了完成教師布置的作業(yè)外,還可以根據(jù)自己的實際情況選擇其它訓(xùn)練題目。
1.2采用在線評測系統(tǒng)提交作業(yè)
程序設(shè)計在線評測系統(tǒng)是一個程序設(shè)計練習(xí)和競賽平臺,可以提供大量的程序和算法設(shè)計題目。在線評測系統(tǒng)除了能用于程序設(shè)計競賽外,還可以廣泛用于輔助程序設(shè)計類課程的教學(xué),為學(xué)生提供一個開放的、自主學(xué)習(xí)的實驗環(huán)境。
學(xué)生通過我們開發(fā)的程序設(shè)計在線評測系統(tǒng)提交這三門課程的作業(yè)。評測系統(tǒng)可以實時評測學(xué)生提交的作業(yè)是否正確,對錯誤提交還提供相應(yīng)的提示信息。學(xué)生可以根據(jù)提示信息對程序進行修改再提交,直到程序正確為止。教師通過分析學(xué)生提交的程序代碼,可以及時掌握學(xué)生做題的數(shù)量、類型和教學(xué)中存在的問題,并將評測結(jié)果作為學(xué)生的平時成績在網(wǎng)站上公布。通過公布成績,促使作業(yè)成績不理想的學(xué)生改進學(xué)習(xí)方法、加強平時訓(xùn)練,自覺利用在線評測系統(tǒng)預(yù)習(xí)和復(fù)習(xí)課程教學(xué)內(nèi)容。通過在線評測系統(tǒng)提交作業(yè),形成了良好的學(xué)習(xí)氛圍,加強了師生之間、學(xué)生之間的交流,學(xué)生有了在課余時間自主進行本學(xué)科知識鉆研的機會和環(huán)境。
1.3交流解題心得
學(xué)生可以使用在線評測系統(tǒng)中的論壇互相討論、交流解題心得,找到很多志同道合的伙伴?;谠诰€評測的實踐環(huán)節(jié)提供了仿真的任務(wù)環(huán)境和公正及時的評價,在激發(fā)學(xué)生學(xué)習(xí)興趣、培養(yǎng)競爭意識和主動學(xué)習(xí)意識等方面起到了較好的推動作用。
1.4組織各種程序設(shè)計競賽
程序設(shè)計競賽具有開放性、綜合性和評判客觀性等特征,可以有效檢驗學(xué)生綜合應(yīng)用所學(xué)知識來分析和解決問題的能力,它不僅可以培養(yǎng)學(xué)生的創(chuàng)造力和團隊合作精神,還能檢測學(xué)生在壓力下進行創(chuàng)新思維和實踐動手能力。通過組織各種比賽,可以有效提高學(xué)生的程序設(shè)計能力、形成積極向上的自主學(xué)習(xí)氛圍。
我們組織了年級、系級和校級等各種形式的程序設(shè)計競賽。通過組織同年級相同課程的競賽可以檢驗不同專業(yè)的學(xué)生對同一課程的掌握情況;系級競賽是全系性的賽事,校級競賽是全校性的賽事,不同專業(yè)、不同年級的學(xué)生均可參加。如果高年級的學(xué)生在競賽中輸給低年級學(xué)生,計算機專業(yè)的學(xué)生輸給非計算機專業(yè)的學(xué)生,他們將會感到不光彩,因此系賽和校賽給計算機專業(yè)的學(xué)生帶來了無形的壓力,將促使他們在平時中投入更多的時間和精力。
1.5改革考核與評分標準
考試作為課程教學(xué)的一個重要環(huán)節(jié),對學(xué)生的學(xué)習(xí)具有明顯的導(dǎo)向作用。這三門課程原來的平時成績主要來源于課后作業(yè)與出勤,這樣的考核方式很難考察學(xué)生的實踐能力,導(dǎo)致大部分學(xué)生只注重理論而忽略上機實踐,很難有效提高學(xué)生的創(chuàng)新能力和實踐能力。我們認為這三門課程的考核應(yīng)著重考核學(xué)生的程序設(shè)計能力,而不是死記硬背一些基礎(chǔ)知識。為此,我們對課程的考核進行了大膽改革,評分標準也作了修改,將評測系統(tǒng)中的評測結(jié)果作為學(xué)生平時成績的主要依據(jù),并提高了平時成績在總評成績中的比重,以此來引導(dǎo)學(xué)生認真對待上機實驗。
2結(jié)束語
C語言程序設(shè)計、數(shù)據(jù)結(jié)構(gòu)、算法分析與設(shè)計是計算機專業(yè)的核心課程。從近幾年的改革實踐來看,經(jīng)過這三門課程的學(xué)習(xí)與實踐訓(xùn)練,大部分學(xué)生能夠在規(guī)定的時間內(nèi)使用C語言、選擇合適的數(shù)據(jù)結(jié)構(gòu)和算法設(shè)計策略完成相應(yīng)問題的求解。以計算機專業(yè)學(xué)生組成的學(xué)校程序設(shè)計代表隊,也在最近三年的湖南省大學(xué)生程序設(shè)計競賽中共獲得了5個二等獎和3個三等獎。
參考文獻:
[1]羊四清,易葉清.C語言程序設(shè)計[M].北京:中國水利水電出版社,2012.
[2]吳永輝,王建德.數(shù)據(jù)結(jié)構(gòu)編程練習(xí)[M].北京:機械工業(yè)學(xué)出版社,2012.
[3]趙端陽.算法設(shè)計與分析[M].北京:清華大學(xué)出版社,2012.