范立新 黃龍軍 唐開山
(紹興文理學院 計算機系,浙江 紹興312000)
基于OJ的《數(shù)據(jù)結(jié)構(gòu)》探究式實驗教學探索
范立新 黃龍軍 唐開山
(紹興文理學院 計算機系,浙江 紹興312000)
討論以自主開發(fā)的Online Judge(OJ)為實驗平臺,在數(shù)據(jù)結(jié)構(gòu)實踐教學過程中,引入學習團隊和分層次教學,運用探究式教學模式,以O(shè)J上的問題為核心與載體,在課堂內(nèi)、外的自主探究與合作探究中凸現(xiàn)學生學習的主體性、實踐性,提高學生的實踐能力,以及改革實驗考核方式來提高教學質(zhì)量.若將這些教學方法融入課程質(zhì)量標準,可長期保障教學質(zhì)量.
探究式教學;分層次教學;學習團隊;Online Judge;課程質(zhì)量標準
《數(shù)據(jù)結(jié)構(gòu)》課程是計算機科學與技術(shù)專業(yè)的核心課程之一,理論性和實踐性都很強.《數(shù)據(jù)結(jié)構(gòu)》課程的理論知識具有內(nèi)容多、抽象性強等特點,不容易被學生理解和掌握,必須配備實驗教學來使學生加深理解和鞏固理論知識;而《數(shù)據(jù)結(jié)構(gòu)》的教學目標就是讓學生在扎實掌握理論知識的基礎(chǔ)上選擇并設(shè)計合理的數(shù)據(jù)結(jié)構(gòu),應(yīng)用相關(guān)算法去解決問題.在傳統(tǒng)的《數(shù)據(jù)結(jié)構(gòu)》實驗教學中,很多學生習慣于從教材或課件中抄寫源程序或翻譯偽代碼,對學生的能力培養(yǎng)作用不大,學生在學完相關(guān)知識甚至整門課程后,并不能靈活運用數(shù)據(jù)結(jié)構(gòu)的知識求解具體問題.郭嵩山、琚生根等人[1]提出以ACM國際大學生程序設(shè)計競賽[1,2](ACM/ ICPC,Association of Computing Machinery International Collegiate Programming Contest)為契機,推進教學改革;陶影[3]認為《數(shù)據(jù)結(jié)構(gòu)》實驗教學應(yīng)該重視培養(yǎng)算法設(shè)計與分析能力;李月軍[4]在實踐教學中引入程序設(shè)計競賽內(nèi)容,并將來源于ACM/ICPC的競賽問題為主要練習題目,但其所用的平臺是其他學校的(北京大學),不便于各校進行特色實踐教學.賈銀江[5]則從目標分層、評價分層、分層教學法等方面討論數(shù)據(jù)結(jié)構(gòu)實驗的分層次教學,而范立新等人[6]則給出了《高級語言》課程用OJ平臺進行探究式教學的探索經(jīng)驗.
在紹興文理學院計算機科學與技術(shù)專業(yè)的《數(shù)據(jù)結(jié)構(gòu)》實驗教學過程中,以自主開發(fā)的Online Judge (在線判題系統(tǒng)[7],簡稱OJ)為教學平臺,激發(fā)學生的學習興趣;建立學習團隊進行團隊學習,降低學生的畏難情緒;引入分層教學法,對實驗內(nèi)容、實驗要求、實驗評價進行分層,盡量消除學生的畏難情緒;將探究式教學模式引入并運用到實驗教學中,以O(shè)J上的問題為核心和載體,凸現(xiàn)學生在學習過程中的主體性、實踐性,注重實驗教學過程中的自主探究和合作探究,從而加深學生對理論知識的理解、掌握并提高學生的實踐能力和創(chuàng)新能力.
我們把《數(shù)據(jù)結(jié)構(gòu)》的實驗內(nèi)容分為基礎(chǔ)性實驗、提高性實驗及綜合性實驗等三種類型.其中,基礎(chǔ)性實驗主要涉及線性表、棧與隊列、樹、圖等數(shù)據(jù)結(jié)構(gòu)及常用查找、排序方法的基本知識及其簡單應(yīng)用,如鏈表操作、進制轉(zhuǎn)換、二分查找等;提高性實驗則要求合理設(shè)計數(shù)據(jù)結(jié)構(gòu)去求解具體問題以及利用數(shù)據(jù)結(jié)構(gòu)和算法去求解ACM/ICPC競賽題;綜合性實驗則需要綜合運用多種數(shù)據(jù)結(jié)構(gòu)求解實際問題,如停車場管理、交通咨詢系統(tǒng)、教學計劃編制等,這部分內(nèi)容屬于后續(xù)課程《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計》的范疇.本文重點討論以O(shè)J為實驗教學平臺的基礎(chǔ)性實驗和提高性實驗,這兩類實驗的實驗內(nèi)容通常以問題的形式由教師預先添加到OJ系統(tǒng)上.
1.1 OJ簡介
OJ一般是指在各類大學生程序設(shè)計競賽中用來評測參賽選手的程序的正確性及其時空效率的程序和評測程序所依托的網(wǎng)絡(luò)環(huán)境[7].OJ既可以作為競賽平臺又可以作為實踐平臺,不同用戶可以同時在線提交采用C、C++等程序設(shè)計語言編寫的源代碼,OJ能對所提交源代碼進行編譯和執(zhí)行,并通過出題者預先設(shè)計的測試數(shù)據(jù)來檢驗源代碼的正確性[7].對于正確的程序,用戶能立即看到成功的狀態(tài)(Accepted);對于不正確的程序,用戶能根據(jù)所得到的錯誤狀態(tài)提示(如Wrong Answer、Time Limit Exceeded、Memory Limit Exceeded等,其中后兩個錯誤信息可以引導學生考慮所用算法的時間復雜度和空間復雜度),進行程序的修改、調(diào)試、重新提交.
紹興文理學院自主開發(fā)的OJ(SXUOJ)中,用戶分為“管理員”、“教師”、“學生”等角色.“管理員”或“教師”角色的用戶,能夠方便地在OJ添加和完善各類問題,主要包括《高級語言》、《數(shù)據(jù)結(jié)構(gòu)》、《算法分析與設(shè)計》等課程相關(guān)的題目.利用OJ為平臺,教師可以隨時查看學生實踐的情況,極大地減少了教師作業(yè)批改的負擔,提高了工作效率和準確性.
SXUOJ每天24小時都開放,為學生提供了開放式的網(wǎng)絡(luò)教學平臺.SXUOJ上的問題是學生探究式學習的核心和載體,“學生”角色的用戶擁有自己的獨立賬號,能針對SXUOJ上的實際問題進行探究,編寫、調(diào)試、修改、提交程序.以SXUOJ為實踐平臺,學生能實時得到評測結(jié)果和最新排名,學習興趣得到激發(fā),分析問題和解決問題的能力也得到提高.
1.2 以SXUOJ上的問題為實驗內(nèi)容
數(shù)據(jù)結(jié)構(gòu)實驗的內(nèi)容都是SXUOJ上的具體問題,SXUOJ上的問題由教師預先添加,且可以動態(tài)維護,這些問題構(gòu)成數(shù)據(jù)結(jié)構(gòu)實驗練習集,分為基礎(chǔ)性實驗和提高性實驗兩類,實驗內(nèi)容從實驗練習集中選擇,兩類題目所占的比例約為80%和20%,滿足數(shù)據(jù)結(jié)構(gòu)實驗內(nèi)容的分層.選定實驗練習集的一部分作為必做實驗,而其余的題目則作為選做題和備選考試題.
基礎(chǔ)性實驗是常用數(shù)據(jù)結(jié)構(gòu)及查找、排序方法的基礎(chǔ)知識與簡單應(yīng)用.圖1所示為任課教師(同時也是實驗指導教師)根據(jù)所用教材的課后習題添加到SXUOJ中的線性表這一章的部分問題,這些問題中的一部分作為數(shù)據(jù)結(jié)構(gòu)的作業(yè)題目,一部分可以作為數(shù)據(jù)結(jié)構(gòu)實驗的基礎(chǔ)性實驗題目.
圖1 部分基礎(chǔ)性實驗題目
提高性實驗題主要由兩部分構(gòu)成:一部分來自ACM/ICPC競賽題目,包括浙江省大學生程序設(shè)計競賽真題、北京大學OJ(POJ)、浙江大學OJ(ZOJ)、杭州電子科技大學OJ(HDUOJ)等國內(nèi)知名OJ上提供的其他真題.但省級以上的程序設(shè)計競賽題目中直接使用數(shù)據(jù)結(jié)構(gòu)知識進行求解的題目數(shù)量不多,因此,提高性實驗題的第二個來源則是紹興文理學院每年的程序設(shè)計競賽題目.出于教學和競賽有機結(jié)合的目的,任課教師往往有意在校賽中提供1~2道和數(shù)據(jù)結(jié)構(gòu)相關(guān)的賽題,這些賽題也是提高性實驗題的主要組成部分.如表1所示為SXUOJ上數(shù)據(jù)結(jié)構(gòu)實驗的部分提高性實驗題目.
表1 部分提高性實驗題目
探究式教學[8]是以探究為主的教學,注重探討與研究.探究式教學在教師引導的基礎(chǔ)上,強調(diào)學生的主體地位,突出學生的自主能力.探究式教學的基本操作程序可分為四步[8]:(1)激趣引題,自學探究;(2)解疑導撥,合作探究;(3)明理強化,實踐探究;(4)激勵評價,引伸探究.
2.1 數(shù)據(jù)結(jié)構(gòu)實驗探究式教學方法
數(shù)據(jù)結(jié)構(gòu)實驗探究式教學首先需要構(gòu)建以O(shè)J為主要平臺的全天候開放的教學環(huán)境并完善OJ的相關(guān)問題,同時建立教學論壇方便交流、討論;然后,把OJ上的問題作為核心和載體,以學生為主體進行探索、研究.在開放的網(wǎng)絡(luò)環(huán)境下,學生既可以在課堂內(nèi)又可以在課堂外進行探究式學習.數(shù)據(jù)結(jié)構(gòu)實驗的課堂探究式教學的主要過程如下:
(1)設(shè)置激趣問題,引導自主探究
教師以O(shè)J上的具體問題(激趣問題)進行問題驅(qū)動,激發(fā)學生的學習興趣,刺激學生進行自主探究.學生在閱讀實驗題目后,思考求解方法,查閱、整理資料.當教師發(fā)現(xiàn)學生的自主探究遇到阻礙時,進行適當?shù)囊龑?
所選激趣問題可以是ACM程序設(shè)計競賽相關(guān)的題目、有趣的實際問題(如六度分離、迷宮求解等).由于競賽題目屬于提高性實驗,難度較大,會使程序設(shè)計能力一般的學生產(chǎn)生畏難情緒;對于這類學生,可以不要求完成提高性實驗,即在教學要求上實現(xiàn)分層,引導這類學生的題目可以是簡單的應(yīng)用性問題.
(2)引入學習團隊,強調(diào)合作探究
探究式教學強調(diào)合作探究,既包括師生之間的合作探究,又包括學生之間的合作探究.為便于學生之間在實驗教學的課堂內(nèi)外進行合作探究,參照ACM/ICPC參賽選手組隊參賽的形式,每三個學生(根據(jù)編程能力強弱及學生特點進行搭配)組建一個學習團隊,隊長具有較強的編程能力和較好的管理能力.對于有一定難度的問題,可以通過學習團隊內(nèi)部甚至學習團隊之間的討論、交流及相互學習,提高探究式學習的效率.對于學生求解過程中所遇到的問題,可以通過自主探究、學生之間的合作探究尋求解決方案,也可以通過教師適時點撥、師生之間的合作探究解決.對于同一個問題,求解的方法可以各不相同,例如“六度分離”可以考慮采用Floyd算法、Dijkstra算法、深度/廣度優(yōu)先搜索等方法求解.學習團隊內(nèi)部、學習團隊之間可以交流、討論各自的想法、結(jié)論,合作探究;教師適時參與討論、交流,為學生解惑并引導探究方向.
(3)理順探究思路,實現(xiàn)實踐探究
實踐探究是對探究效果的檢驗[8],是鞏固、擴大知識的過程,也是吸收、內(nèi)化知識[8]為能力的過程.通過自主探究和合作探究,學生深入理解了相關(guān)知識,理順了思路.這樣,學生就可以編寫程序求解激趣問題及OJ上相關(guān)的同類問題,進行實踐探究,鞏固、擴展并運用知識.如果學生在實踐探究過程中遇到新的困惑,可以就所遇困惑作進一步的自主探究和合作探究.
(4)自我總結(jié)評價,提升探究效果
在大部分學生基本完成實踐探究之后,對實驗進行總結(jié)和評價.學生或?qū)W習團隊整理出的總結(jié)報告,包括實踐經(jīng)驗與收獲、學習團隊成員貢獻率(作為考核中合作探究得分的依據(jù))等.評價包括自我評價,其他學生或?qū)W習團隊的評價,教師評價.教師進行必要的總結(jié),布置若干課外自主實驗題目,以鞏固探究效果;通過布置ACM程序設(shè)計競賽題目,引導學有余力且有志參加各類ACM程序設(shè)計競賽的學生進一步探究.例如課內(nèi)完成問題“六度分離”的探究式教學后,教師可以布置若干設(shè)計、應(yīng)用“圖”數(shù)據(jù)結(jié)構(gòu)的題目(可以在SXUOJ、ZOJ、HDUOJ、POJ等不同OJ上),供學生進一步探究式學習.
2.2 數(shù)據(jù)結(jié)構(gòu)實驗探究式教學效果
我們對三個班級的數(shù)據(jù)結(jié)構(gòu)實驗課程進行了對比,其中:A班總?cè)藬?shù)35人,進行了教學模式改革試點;B班總?cè)藬?shù)32人,未引入分層教學法和學習團隊,屬于對照平行班;C班總?cè)藬?shù)42人,僅引入OJ作為教學平臺且未進行過程考核.這三個班在SXUOJ上的實驗情況對比如表2所示,由表2可見,通過教學模式改革,學生的學習興趣、積極性、實踐能力等各方面都得到較大的提高,體現(xiàn)出數(shù)據(jù)結(jié)構(gòu)實驗教學模式改革的初步成效.
表2 計算機121班與計算機122班、111班OJ實驗情況對比表
基于OJ的數(shù)據(jù)結(jié)構(gòu)實驗探究式教學,學生應(yīng)用數(shù)據(jù)結(jié)構(gòu)知識解決OJ上的具體問題,體會到所學知識和所編程序的價值,激發(fā)了學生的學習興趣;成功解題后能得到Accepted的反饋信息,增強了學生的自信心和成功感.分層次教學與學習團隊的引入,盡量消除了學生的畏難情緒.以O(shè)J為實踐平臺,有利于培養(yǎng)學生的實踐動手能力和創(chuàng)新能力,有利于培養(yǎng)學生綜合運用所學知識解決實際問題的能力.數(shù)據(jù)結(jié)構(gòu)實驗探究式教學以學生為主體,使學生從被動學習轉(zhuǎn)變?yōu)橹鲃訉W習,調(diào)動了學生的學習積極性.學生在學習過程中進行自主探究和合作探究,培養(yǎng)了學生的探索、研究的精神和團隊合作精神.
在傳統(tǒng)的數(shù)據(jù)結(jié)構(gòu)實驗考核中,教師主要按學生的實驗報告評定實驗成績,這種考核方式,對學生來說沒有壓力,實驗報告中程序代碼抄襲現(xiàn)象嚴重,另外,考核成績存在人為因素[4],導致成績不夠公正.因此,我們的數(shù)據(jù)結(jié)構(gòu)實驗考核將不再采用單純的紙質(zhì)實驗報告的形式.
在數(shù)據(jù)結(jié)構(gòu)實驗教學中運用探究式教學,必須逐步建立起完善的評價與管理機制,才能保證教學質(zhì)量.數(shù)據(jù)結(jié)構(gòu)實驗的考核宜用實驗報告和上機考試相結(jié)合的形式,而且必須強調(diào)過程考核.實驗的總評成績=上機考試得分×40%+實驗報告成績×20%+過程考核成績×40%.
上機考試可在局域網(wǎng)內(nèi)的OJ系統(tǒng)上進行,每個學生獨立進行考試;考試題共10題,其中,40%選自要求做的基礎(chǔ)性實驗原題(C類題),40%為基礎(chǔ)性實驗題目的改編及實驗題集中的備選考題(B類題), 20%選自實驗題集的提高性實驗題目(A類題,不一定是要求做的實驗原題);學生每成功求解一道題得20分,最高解題得分為100分;根據(jù)學生解出的題包含A、B、C類題的情況確定權(quán)重系數(shù)β,所解題僅含C類題時β=0.8,所解題含B、C類題時β=0.9,所解題含A類題時β=1,最終上機考試得分為解題得分乘以權(quán)重系數(shù)β.權(quán)重系數(shù)的使用,體現(xiàn)出了評價方面的分層.
要求上交的實驗報告共2份,全部是基于學生在OJ上成功求解的實驗題目,主要目的是促使學生練習并學會撰寫實驗報告,為學生撰寫后續(xù)的數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告、軟件開發(fā)文檔打下基礎(chǔ).
過程考核成績=上機測驗得分×40%+進步排行榜得分×30%+合作探究得分×30%.上機測驗的形式與上機考試相同,題目選自基礎(chǔ)性實驗,要求在一堂課(45分鐘)內(nèi)進行求解,正確完成1道即可獲得該次測驗的分數(shù),共進行3次.數(shù)據(jù)結(jié)構(gòu)實驗安排為16周,總課時為32課時,每周2課時.為便于檢查學生實驗情況,可通過網(wǎng)站提供的查詢功能,每2周統(tǒng)計一次學生的實驗完成情況,推出8期進步排行榜,綜合8期的上榜情況進行評分.合作探究得分中學習團隊的隊長及其他隊員評定的分數(shù)占80%,教師評定的分數(shù)占20%.
對于在教學過程中表現(xiàn)優(yōu)異的學生,特別是提高性實驗完成情況好的學生,則考慮選入紹興文理學院程序設(shè)計競賽集訓隊,將有機會參加各類ACM程序設(shè)計競賽,而且在考核成績中給予一定的獎勵分.為了避免在平時的實驗過程中出現(xiàn)直接拷貝他人程序并提交的現(xiàn)象,我們引入懲罰機制,在考核成績中進行較大力度的罰分.這種考核方式,要求學生認真地完成實驗要求,深入地理解算法知識,熟練地編寫算法實現(xiàn)的代碼,能提高學生分析、解決具體問題的能力,保證教學質(zhì)量.
針對傳統(tǒng)數(shù)據(jù)結(jié)構(gòu)實驗教學過程中學生學習興趣不濃、學習積極性不高、實踐動手能力不強等情況,我們構(gòu)建以O(shè)J為主要平臺的開放教學環(huán)境,在基于OJ的數(shù)據(jù)結(jié)構(gòu)實驗探究式教學過程中,以O(shè)J上問題為載體和核心,對實驗內(nèi)容、實驗要求、考核評價進行分層,以學習團隊的方式保障探究效果,突出學生的主體地位,激發(fā)了學生的學習興趣和積極性,提高了學生的實踐動手能力,培養(yǎng)了學生的團隊合作精神,有利于應(yīng)用型人才培養(yǎng).以O(shè)J為教學平臺,采用探究式教學法,引入學習團隊,進行分層教學等改革措施適當調(diào)整后也應(yīng)用于數(shù)據(jù)結(jié)構(gòu)的理論教學.而將這些有效的方法和措施融入課程質(zhì)量標準,將對長期保障《數(shù)據(jù)結(jié)構(gòu)》課程教學質(zhì)量起到積極的作用.
[1]郭嵩山,王磊,張子臻.ACM/ICPC與創(chuàng)新型IT人才的培養(yǎng)[J].實驗室研究與探索,2007,26(12):188 -192+196.
[2]琚生根,廖勇,周剛,etal.ACM競賽與實驗教學創(chuàng)新[J].實驗技術(shù)與管理,2009,26(05):125-126 +131.
[3]陶影,張斌.數(shù)據(jù)結(jié)構(gòu)實驗教學應(yīng)重視算法設(shè)計與分析能力的培養(yǎng)[J].實驗室研究與探索,2008,27 (12):119-122.
[4]李月軍,李娟,李英玉.融入ACM/ICPC競賽內(nèi)容的數(shù)據(jù)結(jié)構(gòu)教學改革與實踐探討[J].內(nèi)蒙古師范大學學報(教育科學版),2012,25(03):137-140.
[5]賈銀江,賀莉莉,鄭萍.數(shù)據(jù)結(jié)構(gòu)實驗的分層次教學[J].計算機教育,2014,(04):60-62+72.
[6]范立新,黃龍軍.利用OJ平臺進行探究式教學模式的探索[J].教育教學論壇,2014,(15):216-217.
[7]黃龍軍,范立新.合作式教學在高級語言教學中的運用[J].紹興文理學院學報(教育教學研究),2013, 33(11):17-19.
[8]張崇善.探究式:課堂教學改革之理想選擇[J].教育理論與實踐,2001,21(11):39-42.
(責任編輯 魯越青)
G642.4
A
1008-293X(2015)07-0091-05
10.16169/j.issn.1008-293x.k.2015.07.19
2014-12-29
2013年浙江省高等教育教改項目(jg2013164);紹興市高等教育教學改革課題(紹市教高[2013]115號); 2012年紹興市高等學校精品課程《高級語言》.
范立新(1968-),男,浙江德清人,講師,研究方向:機器學習、模式識別.