王榮芝
(呼倫貝爾學(xué)院 計算機學(xué)院,內(nèi)蒙古 呼倫貝爾 021008)
程序設(shè)計類課程是高校計算機相關(guān)專業(yè)開設(shè)的基礎(chǔ)性課程,主要有C、C++、Java、數(shù)據(jù)結(jié)構(gòu)、算法設(shè)計與分析等,旨在培養(yǎng)學(xué)生扎實的程序設(shè)計能力、良好的邏輯思維能力和一定的研究能力和創(chuàng)新能力。程序設(shè)計能力的強弱是檢驗軟件類畢業(yè)生是否合格的重要標(biāo)準(zhǔn)。程序設(shè)計類課程實踐性非常強,傳統(tǒng)以語言語法描述為主線的教學(xué)方式、模式化的實驗內(nèi)容,使教學(xué)重點自覺或不自覺地偏向理論,降低了對學(xué)生實踐能力的有效監(jiān)管和考核,無法充分鍛煉和提高學(xué)生的程序設(shè)計能力,這一問題在后序的軟件工程實踐類課程會進一步彰顯,嚴(yán)重阻礙了學(xué)生的專業(yè)發(fā)展。
在線評測系統(tǒng)(Online Judge,簡稱OJ)是一種基于Web的軟件系統(tǒng),其主要功能包括題庫管理、在線提交和實時評測、網(wǎng)上考試、論壇、系統(tǒng)監(jiān)控和管理等。該系統(tǒng)源于國際大學(xué)生程序設(shè)計競賽(ICPC),是服務(wù)于ICPC競賽的評測和練習(xí)平臺。ICPC在國內(nèi)備受關(guān)注,每年各省區(qū)、高校都舉辦各類級別的競賽,為學(xué)生提供展示才華的舞臺,也為IT企業(yè)和計算機人才提供了對話機會[1]。該競賽要求參賽學(xué)生具有扎實的程序設(shè)計能力、良好的數(shù)學(xué)功底和數(shù)學(xué)建模能力、較強的團隊協(xié)作能力和壓力下分析、解決問題的能力。
自20世紀(jì)90年代,隨著信息技術(shù)的發(fā)展,E-Learning在教育領(lǐng)域得到迅速的應(yīng)用和推廣,促進了教育理念和教學(xué)模式的革新,打破了傳統(tǒng)課堂的時空限制,徹底改變了傳統(tǒng)教學(xué)結(jié)構(gòu)中的師生關(guān)系和地位,使教學(xué)從以教為主向以學(xué)為主轉(zhuǎn)變,在培養(yǎng)學(xué)習(xí)者自主學(xué)習(xí)能力、探究能力和創(chuàng)新能力等方面表現(xiàn)出了巨大的優(yōu)勢。然而,在E-Learning應(yīng)用實踐過程中,也存在許多不足,如網(wǎng)絡(luò)教學(xué)對動作技能類目標(biāo)教學(xué)效果不太理想,網(wǎng)絡(luò)學(xué)習(xí)受限于學(xué)習(xí)者的自控能力等。由于學(xué)習(xí)過程缺乏監(jiān)管,網(wǎng)絡(luò)評價真實性存疑,因此其學(xué)習(xí)效果無法跟傳統(tǒng)課堂教學(xué)相比擬[2]。為此,人們提出了混合學(xué)習(xí)的概念,其目的是把傳統(tǒng)學(xué)習(xí)的優(yōu)勢和E-Learning的優(yōu)勢結(jié)合起來,既要發(fā)揮教師引導(dǎo)、啟發(fā)、監(jiān)控教學(xué)過程的主導(dǎo)作用,又要激發(fā)學(xué)生作為學(xué)習(xí)主體的主動性、積極性和創(chuàng)造性。只有將這二者有機結(jié)合起來,形成優(yōu)勢互補,才能獲得最佳的學(xué)習(xí)效果[3]。在形式上,混合學(xué)習(xí)是在線學(xué)習(xí)與面對面學(xué)習(xí)的混合,但從廣義的層次來說,還包括了基于建構(gòu)主義、行為主義、認(rèn)知主義等不同教學(xué)理論的教學(xué)模式的混合、教師主體活動和學(xué)生主體活動的混合、課堂教學(xué)與在線學(xué)習(xí)不同學(xué)習(xí)環(huán)境的混合、自主學(xué)習(xí)和協(xié)作學(xué)習(xí)不同學(xué)習(xí)方式的混合、不同教學(xué)媒體和教學(xué)資源的混合等?;旌蠈W(xué)習(xí)原理的核心就是強調(diào)教師主導(dǎo)作用和學(xué)生主體地位的有機統(tǒng)一,始終關(guān)注兩者的自主性、創(chuàng)造性,在教學(xué)中根據(jù)不同情況、不同問題和要求,采用不同的教學(xué)方式來解決問題,從而有效提高學(xué)生學(xué)習(xí)的效果和效率[4]。
混合學(xué)習(xí)是一種以學(xué)習(xí)者為中心,基于一定的教學(xué)目標(biāo),把傳統(tǒng)的面對面課堂教學(xué)與現(xiàn)代的網(wǎng)絡(luò)學(xué)習(xí)有機地融合,實現(xiàn)學(xué)習(xí)目標(biāo)最優(yōu)化的教學(xué)模式[5]。隨著信息技術(shù)及移動網(wǎng)絡(luò)的飛速發(fā)展,許多高校在教學(xué)中都應(yīng)用了網(wǎng)絡(luò)課程或MOOC,課程內(nèi)容包括教學(xué)短視頻、PPT、作業(yè)提交與批閱、題庫、測試、論壇等,網(wǎng)絡(luò)學(xué)習(xí)成為課堂教學(xué)的擴展和有益補充,與課堂教學(xué)結(jié)合成為混合學(xué)習(xí)的基本形式。程序設(shè)計類課程實踐性非常強,不但要求學(xué)生掌握理論知識,更要鍛煉提高學(xué)生的編程實踐能力,但網(wǎng)絡(luò)課程不具備實訓(xùn)功能,無法達到該類課程的學(xué)習(xí)目標(biāo)。在線評測系統(tǒng)在實踐訓(xùn)練方面獨具優(yōu)勢,是開展程序設(shè)計類課程混合學(xué)習(xí)模式的最佳選擇。OJ是一種基于Web的自動判題系統(tǒng),用戶根據(jù)題目要求編寫程序,在線提交程序源代碼,由系統(tǒng)對源代碼進行編譯和運行,通過預(yù)先設(shè)定的測試數(shù)據(jù)與運行結(jié)果進行比對來檢驗源代碼編寫的正確性。為考查算法的優(yōu)劣,題目設(shè)計者可以對程序進行內(nèi)存使用、運行時間和安全等限制。系統(tǒng)將檢驗結(jié)果返回給用戶,一般包括正確、答案錯誤、編譯錯誤、超時、運行錯誤、超內(nèi)存等[6]。
OJ的優(yōu)勢主要有:①基于互聯(lián)網(wǎng)的開放性,系統(tǒng)搭建后無需人工操作,學(xué)生可以隨時登錄提交編程,系統(tǒng)自動評測,及時反饋,學(xué)生能夠立即看到結(jié)果,對錯分明;②保證評測結(jié)果的公平性,避免人為批閱出現(xiàn)的漏評、錯評;③將教師從繁重的批改作業(yè)中解放出來,可以更專注于課堂教學(xué)設(shè)計、學(xué)習(xí)指導(dǎo)及課下學(xué)習(xí)活動和任務(wù)的設(shè)計;④提高學(xué)生的學(xué)習(xí)興趣,學(xué)生通過刷題,不斷提高編程技能,解題排名隨之上升,容易產(chǎn)生成就感,進一步激勵學(xué)生完成更多的題目。
混合教學(xué)模式的設(shè)計要突破各種界限,將多項內(nèi)容有機融合,以達到有效提高學(xué)生學(xué)習(xí)效率和效果的根本目標(biāo)。程序設(shè)計類課程混合學(xué)習(xí)設(shè)計中并非因OJ的引入而拋棄其他網(wǎng)絡(luò)資源,而是將各種資源有機融合,發(fā)揮各自所長,形成促進學(xué)習(xí)的不同手段和形式。基于此,筆者設(shè)計了基于OJ的程序設(shè)計課程混合學(xué)習(xí)模式(如圖1所示)。該模式整合了傳統(tǒng)多媒體課堂教學(xué)、基于網(wǎng)絡(luò)MOOC學(xué)習(xí)和課外活動3種學(xué)習(xí)形式,同時還整合了各種教學(xué)資源和多樣化的學(xué)習(xí)模式,如課堂學(xué)習(xí)、自主學(xué)習(xí)、小組學(xué)習(xí)、任務(wù)驅(qū)動、協(xié)作項目實踐活動、第二課堂興趣小組、學(xué)科競賽等,形成了一個完整教與學(xué)活動的混合。在模式中,OJ作為重要的教學(xué)環(huán)境并非只支持課堂之外的學(xué)習(xí),還將與課程緊密結(jié)合支持課堂教學(xué)和課外活動,使混合學(xué)習(xí)成為一個有機的整體。在課堂教學(xué)中,教師通過OJ驗證教學(xué)案例,布置課堂訓(xùn)練題目;在網(wǎng)絡(luò)學(xué)習(xí)中,學(xué)生通過OJ完成課下作業(yè)和擴展訓(xùn)練;學(xué)有余力的學(xué)生還可以通過OJ組成程序設(shè)計興趣小組進行高級培訓(xùn)和開展競賽。OJ還可以進一步與MOOC資源進行整合,構(gòu)成綜合性的網(wǎng)絡(luò)課程平臺,更好地為師生服務(wù)。
圖1 程序設(shè)計類課程混合學(xué)習(xí)模式
在校園服務(wù)器中搭建OJ,根據(jù)課程知識點加入由易至難的測試題庫。將在線評測平臺與網(wǎng)絡(luò)課程或MOOC資源進行整合,提供一站式服務(wù),學(xué)生登錄系統(tǒng)可以學(xué)習(xí)課程資源也可以在線提交編程。為保證系統(tǒng)穩(wěn)定運行,教師要對系統(tǒng)進行監(jiān)管,并定期備份數(shù)據(jù)庫,保證后臺數(shù)據(jù)庫的負(fù)載和數(shù)據(jù)存儲的安全。初期加入程序設(shè)計基礎(chǔ)課程題庫,后期逐步加入數(shù)據(jù)結(jié)構(gòu)、算法設(shè)計與分析、程序設(shè)計競賽等題目。教師將課堂教學(xué)案例、學(xué)生課上課下實訓(xùn)與OJ有機結(jié)合,課堂的每個案例,在OJ平臺中都有與其知識點對應(yīng)的練習(xí)題目及大量的擴展題目,學(xué)生課上完成基本練習(xí),課下進行鞏固和擴展練習(xí),有效保證了對課程知識的掌握和應(yīng)用。
將傳統(tǒng)多媒體課堂教學(xué)、網(wǎng)絡(luò)學(xué)習(xí)和課外活動3種學(xué)習(xí)形式有機融合、統(tǒng)一設(shè)計,課堂教學(xué)內(nèi)容的組織摒棄傳統(tǒng)以語言知識講解為主的形式,教學(xué)內(nèi)容遵循兩條主線,以程序設(shè)計為主,語言知識為輔;采用多媒體機房授課,課堂教學(xué)以案例式為主。教師精心設(shè)計案例,將知識點融合于案例中,每個案例的知識點在OJ平臺都有3~5道配套練習(xí)題,題目是由易到難、由單一知識點到多個知識點的綜合;提倡教師精講學(xué)生多練,重視學(xué)生的課前預(yù)習(xí)和課下訓(xùn)練,課前可以通過MOOC學(xué)習(xí)讓學(xué)生初步了解知識,通過課堂案例進一步理解和應(yīng)用,再通過課下練習(xí)不斷鞏固和熟練掌握。學(xué)生的課下訓(xùn)練以O(shè)J平臺為主,除完成固定的作業(yè)題目外,提倡學(xué)生通過探究和協(xié)作完成更多更復(fù)雜的題目,讓學(xué)生體驗解決問題的成就感,逐步對編程產(chǎn)生興趣,形成學(xué)習(xí)的內(nèi)驅(qū)力,從而有效并長效地進行學(xué)習(xí)。成立ACM第二課堂興趣小組,聘請學(xué)院教師做導(dǎo)師,有經(jīng)驗的高年級學(xué)生擔(dān)任組長,招募和選拔成績優(yōu)異的學(xué)生加入興趣小組,組織月賽、講座和算法討論會,進一步提高學(xué)生編程的能力和解決問題的能力。每年由學(xué)校組織舉辦一次校級競賽,選拔成績優(yōu)秀的學(xué)生代表學(xué)校參加省級競賽,參賽選手通過與其他高校的參賽隊同場競爭,提高自信、增長見識,為將來的良好就業(yè)奠定了基礎(chǔ)。學(xué)校通過獎勵獲得榮譽的學(xué)生,進一步激發(fā)大家的學(xué)習(xí)興趣,鼓勵更多的同學(xué)通過OJ交流學(xué)習(xí),形成教學(xué)的良性循環(huán)。
為達到程序設(shè)計類課程的知識、能力和素質(zhì)目標(biāo),教師在教學(xué)中將多種教與學(xué)的方法有機融合,在混合學(xué)習(xí)框架內(nèi)采用的教學(xué)方法有案例式教學(xué)法、發(fā)現(xiàn)式教學(xué)法、任務(wù)驅(qū)動式教學(xué)法,自主探究式學(xué)習(xí)法、協(xié)作學(xué)習(xí)法等。課堂教學(xué)以案例式教學(xué)為主,將知識點融于生動案例中,以提出問題、分析問題、解決問題的思路調(diào)動學(xué)生學(xué)習(xí)積極性,以小結(jié)的方式總結(jié)案例的知識要點,讓學(xué)生既掌握思路方法又掌握原理;學(xué)生實訓(xùn)采用任務(wù)驅(qū)動模式,在OJ布置任務(wù)由學(xué)生獨立編程提交。在任務(wù)的驅(qū)使下,學(xué)生邊學(xué)習(xí)邊實踐,充分發(fā)揮學(xué)生的主動性和創(chuàng)造性。為保障學(xué)生對知識點的有效掌握,課程組設(shè)計了課堂案例、課堂練習(xí)及課下作業(yè)一體化的題目體系,形成由簡到難、由點到面的知識學(xué)習(xí)進程。例如,針對循環(huán)的學(xué)習(xí),課堂案例為:求sum=1+2+3+…n的和。練習(xí)題目為:①求sum=1+1/2+1/3+1/4+…+1/n;②sum=1+1/3+1/5+…的前n項之和。課下任務(wù)為:①1-1/4+1/7-1/10+1/13-1/16+…的前n項之和;②求sum= 1-2/3+3/5-4/7+5/9-6/11+…的前n項之和。學(xué)生從案例模仿入手,先了解循環(huán)語句的基本功能和結(jié)構(gòu),再通過練習(xí)題目修改循環(huán)條件、循環(huán)體語句掌握循環(huán)的知識要點,最后通過完成課下任務(wù)達到對循環(huán)知識的融會貫通。不僅讓學(xué)生親身感受認(rèn)知的過程,而且通過題目難度的不斷提高進一步激發(fā)學(xué)生的學(xué)習(xí)興趣和積極性,激發(fā)學(xué)生更加強烈的解題欲望,從而培養(yǎng)和提高學(xué)生解決實際問題能力和創(chuàng)新意識。在課下任務(wù)的完成上,既倡導(dǎo)自主探究,又贊同協(xié)作學(xué)習(xí),針對難題,同學(xué)間相互討論、相互啟發(fā)、取長補短,共同完成任務(wù)。在學(xué)習(xí)的過程中促進良好人際關(guān)系和協(xié)作精神的培養(yǎng),進而促進形成良好的班風(fēng)、學(xué)風(fēng)。
程序設(shè)計課程的學(xué)習(xí)目標(biāo)是掌握編程語言的語法規(guī)則、程序設(shè)計的基本原理與方法,培養(yǎng)扎實的程序設(shè)計能力、良好的邏輯思維模式,并具備一定的自主探究能力、合作能力和創(chuàng)新能力。為有效發(fā)揮考試的檢測作用和對教學(xué)的促進作用,以C語言程序設(shè)計課程為例,課程采用了“分階段+多種形式”的考核方式。將診斷性評價、過程性評價和總結(jié)性評價貫穿于整個課程混合學(xué)習(xí)活動過程中,以全面檢測學(xué)習(xí)者的學(xué)習(xí)水平和能力。具體課程考試方案如表1,課程總評成績由平時考核、階段考核和結(jié)課考核3部分組成:平時考核以課堂表現(xiàn)、OJ平臺月解題數(shù)量和MOOC學(xué)習(xí)效果為主,鼓勵學(xué)生課前預(yù)習(xí)、平時多做題,通過量的積累達到質(zhì)的升華;階段考核為基于OJ平臺的在線編程測試,分別安排在選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)和數(shù)組3個模塊后,針對每個模塊知識點測試4~5個題目;結(jié)課考核為整合客觀題與編程題于一體的上機綜合考試,客觀題主要包括選擇、填空、判斷類題目,課程組建立題庫,抽取考題網(wǎng)上考試,自動評分。設(shè)置該類考試的目的是為保障學(xué)生對原理知識理解掌握的系統(tǒng)化、全面化,避免過于強化OJ平臺導(dǎo)致學(xué)生對某些知識一知半解,不能全面掌握。
表1 C語言程序設(shè)計課程考試方案
基于在線評測系統(tǒng)的程序設(shè)計類課程混合學(xué)習(xí)模式在應(yīng)用后一定程度上能解決該類課程重理論輕實踐的弊端,為學(xué)生提供在線學(xué)習(xí)體驗,提高了學(xué)生的實踐動力能力,給師生提供更多教與學(xué)的自由,并提升了網(wǎng)絡(luò)時代教師的教學(xué)能力和學(xué)生的學(xué)習(xí)能力。該混合學(xué)習(xí)模式是基于目前程序設(shè)計自動評判系統(tǒng)和高校大量開發(fā)和應(yīng)用的MOOC等網(wǎng)絡(luò)課程來考慮,重點探討程序設(shè)計類課程混合學(xué)習(xí)模式的實施形式、內(nèi)容、方法和評價策略,對理科實踐類課程具有一定的指導(dǎo)性,可參照此混合學(xué)習(xí)模式,結(jié)合各課程特點,開展高?;旌蠈W(xué)習(xí)實踐。