朱立軍 楊中秋 李漫紅 肖明霞 王翠青
摘? 要:針對新工科背景下高?!敖鹫n”建設(shè)教學(xué)改革的需求以及目前算法類課程教學(xué)過程中存在的問題,對算法類課程進(jìn)行了一系列改革包括:循序漸進(jìn)的教學(xué)內(nèi)容設(shè)置,先實踐后理論、線上線下相結(jié)合、以實際應(yīng)用為導(dǎo)向、分層開展教學(xué)、競賽驅(qū)動實驗教學(xué)以及形成性評價和終結(jié)性評價相結(jié)合等措施。通過這些改革,學(xué)生的學(xué)習(xí)興趣和編程水平得到了明顯的提高。
關(guān)鍵詞:金課;MOOC;形成性評價;終結(jié)性評價
中圖分類號:G642 文獻(xiàn)標(biāo)志碼:A 文章編號:2096-000X(2021)03-0096-04
Abstract: In view of the needs of the teaching reform of "golden course" construction in universities under the background of new engineering and the existing problems in the process of teaching process of algorithm courses, we have carried out a series of reforms on algorithm courses: teaching content setting step by step; through the use of practice first, then theory; online and offline combination; practical application-oriented; teaching in different levels; competition driven experiment teaching; formative evaluation and summative evaluation. Through these reforms, students' learning interest and programming level have been significantly improved.
Keywords: golden course; MOOC; formative evaluation; summative evaluation
一、概述
2017年4月,教育部公布了《新工科建設(shè)行動路線》,致力于探索建立新工科發(fā)展新模式,著力培養(yǎng)大學(xué)生的自主學(xué)習(xí)能力和實踐創(chuàng)新能力[1]。大學(xué)生能力的培養(yǎng)離不開課程建設(shè),課程是人才培養(yǎng)的基本要素,2018年11月24日,在第十一屆“中國大學(xué)教學(xué)論壇”上,教育部高等教育司司長吳巖在“建設(shè)中國金課”的報告中提出了金課的“兩性一度”標(biāo)準(zhǔn)。要建設(shè)有創(chuàng)新性、高階性和挑戰(zhàn)度的“金課”、消除“水課”的概念,“水課”是老師不用心準(zhǔn)備的課堂,“金課”是有知識、能力和素養(yǎng)的融合,不僅僅是培養(yǎng)學(xué)生獲得知識、訓(xùn)練邏輯思維,更主要的是要引導(dǎo)學(xué)生要積極向上,學(xué)會創(chuàng)新思維。而傳統(tǒng)課程教學(xué)問題諸多,需要我們探索改革完善。因此,建設(shè)順應(yīng)新工科背景、適合于這個時代學(xué)生的“金課”已成為教育改革的首要任務(wù)。其中線上線下混合式“金課”成為當(dāng)下各個高校建設(shè)的熱點,目前各個學(xué)校的做法不盡相同[2]。特別是在目前“互聯(lián)網(wǎng)+”的背景下,混合式教學(xué)呈跳躍式發(fā)展。在該背景下,我校算法類課程改革走在前列。本文就《程序設(shè)計競賽》課程的教學(xué)目的和意義、教學(xué)理念、教學(xué)模式以及形成性評價方法等問題進(jìn)行了深入的研究和探討。
二、現(xiàn)有高校計算機算法類課程教學(xué)中普遍存在的問題
算法類課程是高校計算機專業(yè)及相關(guān)專業(yè)的一門核心課,學(xué)生對算法的理解和掌握程度能客觀地反映出一所高校相應(yīng)專業(yè)的教學(xué)水平,并且直接影響學(xué)生在就業(yè)市場上的核心競爭力。而目前高校計算機專業(yè)教學(xué)普遍存在的現(xiàn)象是教師厭教、學(xué)生厭學(xué)。其主要原因如圖1所示,具體說明如下。
(一)編程思維無法建立
目前我國高校計算機相關(guān)專業(yè)的課程設(shè)置中與算法相關(guān)的課程一般包括C語言程序設(shè)計、數(shù)據(jù)結(jié)構(gòu)、算法分析與設(shè)計等。在實際的教學(xué)過程中我們發(fā)現(xiàn):大概1/3~1/2的學(xué)生在大一學(xué)完C語言程序設(shè)計后,沒有真正理解程序設(shè)計的思想,編程思維仍然沒有建立起來。這樣,在學(xué)習(xí)后序課程的時候,如數(shù)據(jù)結(jié)構(gòu)和算法分析與設(shè)計,這部分學(xué)生就會更感到吃力,越學(xué)就會越失去信心,久而久之就對學(xué)習(xí)失去興趣,從而產(chǎn)生厭學(xué)情緒。
(二)教材理論較抽象,學(xué)生理解不透徹
目前算法類教材普遍存在的問題是理論較抽象。例如,學(xué)生在學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)課程中關(guān)于樹和圖的理論的時候,教材中往往對樹和圖這種數(shù)據(jù)結(jié)構(gòu)在內(nèi)存中是如何存儲的?這些數(shù)據(jù)結(jié)構(gòu)在實際軟件項目中是如何應(yīng)用的?以及為什么能夠用遞歸實現(xiàn)等等問題缺乏相應(yīng)的解釋和說明;教師又由于授課學(xué)時的限制而無法進(jìn)行深入的講解。這樣就導(dǎo)致了學(xué)生只能靠機械的記憶來學(xué)習(xí)這些理論,無法將所學(xué)的知識融會貫通。
(三)教學(xué)內(nèi)容枯燥,學(xué)生缺乏興趣
“興趣是最好的老師”,與人文類課程不同,算法類課程教學(xué)的內(nèi)容不但抽象而且枯燥,如動態(tài)規(guī)劃、圖、分支限界、最大流、并查集等等,大部分學(xué)生很難對這些晦澀難懂的理論提起興趣。因此如何讓學(xué)生對這些枯燥、難懂的理論感興趣;讓學(xué)生能從被動學(xué)習(xí)到自己主動去學(xué)習(xí)是擺在每個授課教師面前的一個艱巨的任務(wù)。
(四)注重理論,忽視具體實現(xiàn)細(xì)節(jié),導(dǎo)致算法健壯性差
目前高校計算機專業(yè)開設(shè)的算法類課程往往重視算法如何設(shè)計,而對于在實際中如何應(yīng)用以及在實際應(yīng)用中需要注意哪些細(xì)節(jié)等方面缺乏相應(yīng)的訓(xùn)練,導(dǎo)致學(xué)生上課一聽就懂,可一調(diào)試程序卻存在很多bug。同時所設(shè)計的程序缺乏健壯性,即隨著測試數(shù)據(jù)的增加,程序運行出現(xiàn)錯誤可能性也隨之增加。而程序的健壯性差又是導(dǎo)致軟件危機發(fā)生的一個重要因素。
(五)實驗形式化,無法達(dá)到實踐教學(xué)的目的
由于學(xué)生在課堂上對所學(xué)的理論缺乏深入的理解,導(dǎo)致很多學(xué)生在上實驗的時候只是按照書本來敲代碼,如果書本上的代碼有誤,則自己無法獨立地對出現(xiàn)的錯誤進(jìn)行調(diào)試,只能“求助”于其它學(xué)的好的同學(xué)。這樣就會導(dǎo)致最后學(xué)生上交的實驗報告幾乎雷同,從而無法達(dá)到實驗教學(xué)的目的。
三、程序設(shè)計競賽課程建設(shè)的研究與探索
(一)程序設(shè)計競賽課程設(shè)置的目的和意義
一個好的程序設(shè)計類課應(yīng)該是:課上,學(xué)生能基本聽懂老師講授的內(nèi)容;課下,學(xué)生能通過對知識的再學(xué)習(xí)而完成課設(shè)作業(yè)[3]。而目前國內(nèi)高校算法類課程普遍存在“老師難教、學(xué)生難懂”的現(xiàn)象。針對這一問題,我校軟件工程專業(yè)把《算法設(shè)計及與分析》這門課程改為《程序設(shè)計競賽》,與《算法設(shè)計與分析》課程不同的是,該課程以實際應(yīng)用為導(dǎo)向;以線上、線下相混合的方式進(jìn)行課堂教學(xué);以競賽模式來驅(qū)動實驗教學(xué);以形成性評價[4]和終結(jié)性評價相結(jié)合的手段對學(xué)生的學(xué)習(xí)效果進(jìn)行更客觀、公正的評判。通過該課程的學(xué)習(xí),不但增加了學(xué)生學(xué)習(xí)算法的興趣,而且開闊了學(xué)生的視野,同時也大大提高了學(xué)生的程序設(shè)計水平,為將來更好的從事本專業(yè)相關(guān)工作打下堅實的基礎(chǔ)。
(二)程序設(shè)計競賽課程建設(shè)的主要內(nèi)容
程序設(shè)計競賽課程建設(shè)的主要目標(biāo)是以培養(yǎng)學(xué)生學(xué)習(xí)算法的興趣以及提高學(xué)生解決復(fù)雜實際問題的能力為目標(biāo),從七個方面進(jìn)行改革和建設(shè),具體如圖2所示,具體說明如下。
1. 循序漸進(jìn)的教學(xué)內(nèi)容設(shè)置
該課程是在學(xué)生學(xué)完C語言程序設(shè)計和數(shù)據(jù)結(jié)構(gòu)之后開設(shè),共96學(xué)時,分上、下兩個學(xué)期,每個學(xué)期48學(xué)時,包括理論24學(xué)時,實驗24學(xué)時。上學(xué)期的教學(xué)內(nèi)容主要包括一些基礎(chǔ)的、具有普適性的算法策略,包括:遞歸、蠻力策略、遞推策略、分治策略、模擬策略、貪心策略及動態(tài)規(guī)劃等。而下學(xué)期的教學(xué)內(nèi)容主要是一些復(fù)雜的、具有針對性的算法策略包括模板庫、回溯、搜索、最大流、二分圖、并查集和數(shù)論等。之所以分上、下兩個學(xué)期是因為與算法相關(guān)的教學(xué)內(nèi)容不但較多而且較難掌握,通過延長學(xué)生的學(xué)習(xí)時間,使學(xué)生在學(xué)習(xí)過程中能有充分的時間對這些算法進(jìn)行更好的理解、消化和吸收。
2. “先實踐,后理論”的教學(xué)思路
實踐的觀點是辯證唯物主義認(rèn)識論的首要觀點。辯證唯物主義認(rèn)識論認(rèn)為:認(rèn)識來源于實踐,又轉(zhuǎn)過來為實踐服務(wù)。實踐、認(rèn)識、再實踐、再認(rèn)識,循環(huán)往復(fù),以至無窮。程序設(shè)計競賽課程的教學(xué)思路是在講新的知識點之前,先從分析與將要學(xué)習(xí)的知識點相關(guān)的實際問題入手,學(xué)生根據(jù)以前所學(xué)的知識發(fā)現(xiàn)根本無法解決該類問題,這時就需對該類問題進(jìn)行更進(jìn)一步深入、細(xì)致的分析和研究,挖掘出該類問題具有的獨特的顯著特征,并針對這類問題再引入將要學(xué)習(xí)的新的解決策略和方法來解決它。然后再從這些新策略和新方法中抽象出相應(yīng)的理論。當(dāng)學(xué)生對所學(xué)新的理論和方法有了一定程度的理解和掌握之后,再通過訓(xùn)練類似的題目來進(jìn)一步強化對新知識點的理解。這種教學(xué)思路與傳統(tǒng)那種“先理論、后實踐”的教學(xué)思路不同,它更加符合人們認(rèn)識事物的客觀規(guī)律,能夠使學(xué)生在課堂上帶著問題去聽課,從而能充分調(diào)動學(xué)生的主觀能動性和學(xué)習(xí)的積極性。
3. 以解決實際問題為導(dǎo)向,強調(diào)學(xué)以致用
課堂例題和實驗題目的選擇能夠體現(xiàn)趣味性、科學(xué)性、挑戰(zhàn)性和實用性,教師可以在國內(nèi)知名高校的在線判題系統(tǒng)(Online Judge,OJ)上選擇一些符合上述特征的、具有中等難易程度的題目,如果選擇的題目太難,對于剛開始接觸算法的學(xué)生而言就會失去信心和學(xué)習(xí)興趣。同時,教師也可以從自己實際的科研課題中選擇一些合適的問題作為例題結(jié)合所學(xué)算法進(jìn)行分析和研究。例如,虹膜識別中的虹膜內(nèi)、外圓定位問題就可以結(jié)合并查集算法來分析和研究[5]。通過把實際科研課題引入課堂教學(xué),不但開闊了學(xué)生的視野,也提高了他們科研素養(yǎng),體現(xiàn)了“以用促學(xué),以學(xué)致用,學(xué)用結(jié)合”的教育理念。
4. 線上-線下相結(jié)合的混合式教學(xué)模式
所謂“線上-線下相結(jié)合”是指教師在上課時,為了達(dá)到更好的學(xué)習(xí)效果,利用學(xué)習(xí)通等教學(xué)輔助軟件提供的一些功能來幫助教師完成一些教學(xué)活動,如圖3所示。其中課上的時候可以使用學(xué)習(xí)通的“簽到”、“搶答”、“測驗”、“主題討論”、“評分”及“問卷”等功能進(jìn)行輔助教學(xué)。例如在上課前可以使用學(xué)習(xí)通的“簽到”功能來代替日常的課前點名,這樣不但防止學(xué)生“替答”,而且節(jié)省了時間;在每次上課結(jié)束后,教師可以使用“測驗”功能,對本次課所講主要內(nèi)容進(jìn)行一個小測驗,這樣可以對學(xué)生的學(xué)習(xí)效果隨時進(jìn)行跟蹤、監(jiān)控;為了活躍課堂氣氛,在授課過程中可以使用“搶答”功能來對學(xué)生進(jìn)行提問。借助這些線上教學(xué)工具的輔助教學(xué)功能,可以在很大程度上激發(fā)學(xué)生的學(xué)習(xí)興趣和學(xué)習(xí)動力,使學(xué)生由原來的被動學(xué)習(xí)和懶于思考變?yōu)橹鲃訉W(xué)習(xí)、勤于思考和樂于思考。線上-線下相結(jié)合還體現(xiàn)在對于一些比較難懂的章節(jié)如動態(tài)規(guī)劃、回溯等,在課前可以利用網(wǎng)上的MOOC (Massive Open Online Course)[6]資源,以“翻轉(zhuǎn)課堂”(Flipped Classroom)的形式將課堂內(nèi)與外、教與學(xué)進(jìn)行翻轉(zhuǎn)。這種教學(xué)模式是以學(xué)生為主體,學(xué)生可以通過MOOC觀看相應(yīng)教學(xué)視頻,進(jìn)行個性化學(xué)習(xí), 這種教學(xué)模式可以有效地彌補課程學(xué)時數(shù)的限制和學(xué)生個體差異[7]。另外,課后還可以在學(xué)習(xí)通的教師端,統(tǒng)計出每個學(xué)生上課期間的跳屏?xí)r間和次數(shù),如果某個學(xué)生跳屏次數(shù)過多,時間過長就可以斷定該學(xué)生上課期間利用手機在做與上課無關(guān)的事情,這樣就可以對每個學(xué)生的上課情況有個清晰的了解和掌握,統(tǒng)計的結(jié)果可以作為學(xué)生平時成績的一個重要依據(jù)。
5. 分層開展教學(xué)的教學(xué)理念
由于在一個班級中學(xué)生的水平往往會參差不齊,所以在聽課過程中,就會存在好學(xué)生“吃不飽”,差學(xué)生“吃不了”的現(xiàn)象。所謂“分層開展教學(xué)”是指對那些自學(xué)能力強的學(xué)生把他們集中在一起,采用“自主討論式”的學(xué)習(xí)形式,他們可以不來上課,這部分同學(xué)主要是針對校ACM/ICPC競賽培訓(xùn)隊的學(xué)生,因為他們的基礎(chǔ)非常好,學(xué)習(xí)的內(nèi)容已經(jīng)自學(xué)完成,無需和其他同學(xué)一起學(xué)習(xí)。而對于基礎(chǔ)特別差的學(xué)生,他們雖然學(xué)過了C語言程序設(shè)計和數(shù)據(jù)結(jié)構(gòu),但編程思維仍然沒有完全建立起來。對于這類學(xué)生,如果直接學(xué)習(xí)這門課,就會感到力不從心,學(xué)習(xí)效果就會很差。因此要求他們課后自己找時間把C語言程序設(shè)計再快速重新學(xué)習(xí)一遍,在上實驗課的時候,在前幾周會單獨給這部分學(xué)生安排一些基礎(chǔ)題目,讓他們先把基礎(chǔ)打牢,然后再來學(xué)習(xí)新的知識。對這部分學(xué)生而言,開始可能學(xué)的很慢,可到學(xué)期末的時候也能獲得較好的學(xué)習(xí)效果。
6. 以競賽模式驅(qū)動實驗教學(xué)
課程實驗部分利用我們自己的在線判題系統(tǒng),題庫里的題目主要是由我們教師自己編寫或選自其他大學(xué),如北大、清華、杭電等OJ系統(tǒng)上的經(jīng)典題目。該系統(tǒng)可以對學(xué)生提交的代碼自動進(jìn)行編譯,并通過與答案的比較,給出相應(yīng)判題結(jié)果。這樣,每次實驗就是一次程序設(shè)計競賽,根據(jù)提交的題目和所用的時間來對學(xué)生進(jìn)行排名,教師再根據(jù)排名給出學(xué)生的實驗成績。這樣不但提高了老師統(tǒng)計成績的效率,還能夠增強學(xué)生對編程的興趣、培養(yǎng)學(xué)生競爭意識以及抵抗挫折的能力。
7. 形成性評價和終結(jié)性評價相結(jié)合的考核方式
課程的考核主要包括兩部分,即形成性評價和終結(jié)性評價。形成性評價占30%,包括:課堂表現(xiàn),包括課前簽到、課中提問、課后測驗等環(huán)節(jié)的情況,該部分占總成績的10%;實驗成績,根據(jù)每次實驗的排名情況、實驗報告的完成情況等,該部分占總成績的20%。終結(jié)性評價采用期末考試的方式,該部分占總成績的70%。題型是采用全國計算機技術(shù)與軟件專業(yè)技術(shù)資格考試中的軟件設(shè)計師考試的試題形式,即給出試題描述和與之對應(yīng)的大部分代碼,然后要求學(xué)生以填空的形式對代碼進(jìn)行完善。學(xué)生只有充分理解了試題和所給代碼之后,才能夠填寫出正確答案。因為一個問題的算法有很多種,所以如果不對答案進(jìn)行限制就會給教師判卷增加了難度,從而容易造成誤判;另一方面,采用該題型可以留給學(xué)生更多的思考時間,對學(xué)生水平和能力的測試會更加精準(zhǔn)。而對于校ACM/ICPC競賽培訓(xùn)隊的學(xué)生而言,他們可以不用上課和上實驗,這部分成績是滿分,他們只需參加期末考試即可。
四、結(jié)束語
算法類課程是計算機相關(guān)專業(yè)中非常重要的專業(yè)課且具有一定的難度,既注重理論分析,又注重實踐操作[8]。我們針對程序設(shè)計競賽課程從教學(xué)內(nèi)容、教學(xué)模式、教學(xué)思路、教學(xué)手段及考核方式等多個方面進(jìn)行了改革。這些改革措施更多的是強調(diào)以學(xué)生為中心,將學(xué)生所學(xué)知識應(yīng)用于解決日常生活中的實際問題,這樣大大提高了學(xué)生的學(xué)習(xí)興趣和學(xué)習(xí)的動力,使學(xué)生在學(xué)習(xí)的過程中能夠獲得成就感和自豪感。同時,線上學(xué)習(xí)帶動線下課堂積極參與討論,這樣提高了學(xué)生的學(xué)習(xí)效率,進(jìn)一步改善了學(xué)習(xí)效果。另外,算法學(xué)習(xí)又帶動了學(xué)生積極參加競賽、參加實際科研項目,這樣,學(xué)生“學(xué)以致用”,不但提高了自己的動手能力,還增強了自己的自信心和成就感。教學(xué)實踐表明:“程序設(shè)計競賽”課程的教學(xué)方法和教學(xué)手段能充分調(diào)動學(xué)生對算法的學(xué)習(xí)興趣,學(xué)生解決實際問題的能力也有了明顯提升。這種教學(xué)模式充分體現(xiàn)了“金課”兩性一度的要求,為其他“金課”建設(shè)提供了有益的借鑒。
參考文獻(xiàn):
[1]鐘登華.新工科建設(shè)的內(nèi)涵與行動[J].高等工程教育研究,2017(3):1-6.
[2]金愛兵,趙怡晴,姜琳婧.傳統(tǒng)優(yōu)勢非熱門學(xué)科“新工科”建設(shè)[J].中國冶金教育,2019(04):58-61.
[3]宋友,李瑩,肖文磊.面向大類培養(yǎng)的程序設(shè)計“金課”建設(shè)思考[J].中國大學(xué)教學(xué),2019(11):61-65.
[4]林靜.形成性評價在高校課程評價中的應(yīng)用[J].現(xiàn)代教育管理,2011(9):66-68.
[5]朱立軍,苑瑋琦.基于并查集和邊緣檢測模板的非理想虹膜定位[J].計算機應(yīng)用研究,2018(6):1879-1882.
[6]王冠軍,周勇,江海峰,等.基于翻轉(zhuǎn)課堂與MOOC的嵌入式軟件工程實踐教學(xué)研究[J].實驗技術(shù)與管理,2016,33(4):176-178.
[7]田小霞.基于翻轉(zhuǎn)課堂/MOOC的《算法分析與設(shè)計》教學(xué)改革[J].福建電腦,2018(12):161-162.
[8]張廣斌,張潤梅,劉瑾,等.混合式教學(xué)在程序設(shè)計基礎(chǔ)課程中的應(yīng)用[J].軟件導(dǎo)刊,2019(11):176-179.