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