劉玉秀 李奕
摘? 要: 在“以學生為中心”的教學理念下,分析目前“數(shù)據(jù)結(jié)構(gòu)與算法”課程實踐問題,提出“線上線下結(jié)合、課內(nèi)課外互補、基礎綜合配套、自主分組并行”的全方位全過程課程實踐設計思路,闡述了對應于過程性考核方式的實踐教學的實施過程,在教學實踐中取得了較好的效果。
關鍵詞: 數(shù)據(jù)結(jié)構(gòu)與算法; 實踐教學; 以學生為中心; 過程性考核
中圖分類號:TP311.1? ? ? ? ? 文獻標識碼:A? ? ?文章編號:1006-8228(2023)09-155-04
Student-centered practice teaching exploration for "Data Structure and Algorithm" course
Liu Yuxiu, Li Yi
(Naval University of Engineering Department of Computer and Data Engineering, Wuhan, Hubei 430033, China)
Abstract: Under the teaching concept of "student-centered", the current curriculum practice problems of "Data Structures and Algorithms" course are analyzed, and an all-round course practice design idea of "combining online and offline, complementing in-class and extra-class, basic and comprehensive supporting, autonomous and grouping in parallel" is proposed. The implementation of the process assessment method corresponding to practical teaching is elaborated. It has achieved good effect in teaching practice.
Key words: data structure and algorithm; practical teaching; student-centered; process assessment
0 引言
1952年著名心理學家卡爾.羅杰斯提出“以學生為中心”的教育理念,引起了有關教育的討論[1]?!耙詫W生為中心”強調(diào)了學生在學校里的主體地位,要求教師站在學生的角度,了解、理解、尊重、關心學生,一切以學生的發(fā)展、學習和效果為中心[2]。
數(shù)據(jù)結(jié)構(gòu)與算法課程是計算機相關專業(yè)的核心基礎課程,其為后續(xù)計算機專業(yè)課程做有力支撐[3,4]。本課程是一門實踐性很強的課程[5],為理解數(shù)據(jù)結(jié)構(gòu)和算法原理并靈活運用,需要不斷實踐。傳統(tǒng)教學以理論講授為主,對實踐重視不夠,學生編程實現(xiàn)和實際運用時無從著手,學習效果不佳[6]。如何站在學生的角度,充分考慮學生的現(xiàn)實基礎,更好地設計課程實踐教學環(huán)節(jié),提高學習效果,需要深入思考和研究。
為了提高數(shù)據(jù)結(jié)構(gòu)與算法實踐效果,已有研究者提出多種課程改革思路[4,6,7]。本文在分析數(shù)據(jù)結(jié)構(gòu)與算法實踐環(huán)節(jié)基礎上,提出一套“線上與線下結(jié)合、課內(nèi)與課外互補、基礎與綜合配套、自主與分組并行”的課程實踐設計思路。
1 數(shù)據(jù)結(jié)構(gòu)與算法課程實踐實施環(huán)節(jié)現(xiàn)狀分析
數(shù)據(jù)結(jié)構(gòu)與算法課程是計算機相關專業(yè)的核心課程,其對算法思維和編程實踐能力要求較高,學生學習會感到吃力,實踐中無從著手,容易產(chǎn)生挫敗心,效果不佳,究其原因,主要如下:
⑴ 重理論、輕實踐。教師偏重各種數(shù)據(jù)結(jié)構(gòu)和算法的原理講解,而對于其實踐應用則輕描淡寫,實踐占比少[8]。學生被動灌輸理論知識,缺乏充分實踐鞏固,對數(shù)據(jù)結(jié)構(gòu)和算法的原理理解浮于表面,容易遺忘,實際運用無從下手,學習效果較差。
⑵ 理論實踐脫節(jié)。傳統(tǒng)教學,通常在整個章節(jié)理論學完后再進行實驗,理論實驗間隔較久。學生的理論知識未及時得到實踐鞏固和深入理解,實驗課上,學生理論印象模糊,動手實踐吃力,理論實踐脫節(jié)。
⑶ 難度缺乏梯度。實驗學時少,內(nèi)容單一,難度缺乏梯度。學生思維能力和編程基礎不一,單一難度實驗無法適應所有學生?;A差的學生獨立完成實驗較困難,挫敗感強,學習積極性不高;基礎好的學生沒有機會深入拓展,課程高階性和挑戰(zhàn)度不夠。
⑷ 實踐形式單一。傳統(tǒng)教學實驗僅限課內(nèi)單人單組,實驗內(nèi)容常常是從零開始完成編程實現(xiàn),形式單一。實驗過程閉塞,學生無互相交流,也無課外參考資料,知識局限在書本中和課堂上,學習能力未得到很好培養(yǎng)。
2 全方位全過程實踐教學探索
2.1 實踐設計思路
針對以上問題,本文秉承“以學生為中心”理念,充分考慮學生現(xiàn)實情況,提出“線上線下結(jié)合、課內(nèi)課外互補、基礎綜合配套、自主分組并行”的全方位全過程課程實踐設計思路,以此加強學員實踐力度、補充實踐梯度、豐富實踐形式,達到提升實踐能力、提高教學效果目的。設計思路見圖1。
⑴ 線上線下結(jié)合
線上實踐,依托EduCoder實踐教學平臺[9]。線上實踐主要分兩大塊:①對于簡單實驗,布置線上作業(yè),依托EduCoder自動評測、統(tǒng)計過程數(shù)據(jù)等功能,教師充分了解學生實驗情況,及時進行輔導答疑;②對于綜合實驗,借助EduCoder平臺闖關式實驗設計功能,拆解成多個小關卡,層層遞進,步步引導,幫助學生逐步突破難點。
線下實驗,依托VisualStudio集成編程環(huán)境。對于復雜算法,要求學生學會調(diào)試程序[10],借助工具跟蹤、分析程序運行過程。線下實踐主要分兩大塊:①作為線上實踐的輔助手段,線下調(diào)試算法;②對于項目式課程大作業(yè),線下查閱文獻、分析問題,設計算法,編程實現(xiàn),調(diào)試運行。
⑵ 課內(nèi)與課外互補
課內(nèi)實踐分理論課和實驗課。理論課上,在知識點理論原理學習完后,教師通過提問啟發(fā)、程序填空等方式,引導學生推導關鍵代碼。講解完冒泡排序算法原理后,引導學生思考冒泡排序需要幾重循環(huán)來推出算法框架,并啟發(fā)學生根據(jù)算法原理演示過程推導循環(huán)邊界。讓學生從整體到細節(jié)逐步填充代碼,逐步實現(xiàn)代碼。理論課內(nèi)實踐,縮短了理論實踐的間隔,降低了實踐難度,理論學習更扎實。有了理論課實踐的基礎,實驗課實踐可設置兩個目標:①驗證算法代碼,鞏固理論知識;②將基礎實驗拓展提升,將多個理論知識點綜合,如冒泡排序的基本實現(xiàn)、改進、應用綜合。
課外實踐,通過課后作業(yè)形式,對課上的實踐進一步擴展、補充,將學習從課內(nèi)延伸到課外。課內(nèi)解決基礎的,核心的算法,課外調(diào)動學生的開創(chuàng)思維,培養(yǎng)學生利用知識解決實際問題的能力。課內(nèi)課外互補,既幫助學生夯實基礎,又引導學生創(chuàng)新挑戰(zhàn)。
⑶ 基礎與綜合配套
在實踐內(nèi)容上,基礎和綜合實踐配套,由淺入深,層層遞進。理論課上和線上作業(yè),安排基礎實驗,幫助學生消化鞏固理論知識。實驗課上,安排中等難度的綜合實驗,達到對理論知識綜合理解和簡單應用的目的。大作業(yè)上,安排和實際貼近的項目式實踐,達到學以致用,創(chuàng)新進取的目的。通過基礎和綜合實踐配套,幫助學生夯實基礎、突破難關、挑戰(zhàn)高度、銳意創(chuàng)新。
⑷ 自主與分組并行
在實踐形式安排上,自主和分組并行。對于基礎的、簡單的實驗,學生獨立自主完成,培養(yǎng)學生獨立思考的能力。對于融合多個知識的貼近實際應用的項目式大作業(yè),以3~5人一組,分組進行綜合實踐,要求每組提交設計思路、分工安排、程序講解、運行演示和組內(nèi)人員貢獻度互評。綜合實踐實現(xiàn)方法多樣,解決方案不一,不僅能培養(yǎng)學生查閱資料、分析問題、算法設計、編程實現(xiàn)等能力,還能培養(yǎng)學生團體意識、職業(yè)道德和溝通表達能力。
各章節(jié)線上線下、課內(nèi)課外、基礎綜合、自主分組實踐具體安排見表1。
2.2 課程考核設計
課程考核是課程實施的重要一環(huán),在學生學習過程中起著指揮棒的作用,實踐教學思路能否真正落地實現(xiàn),能否達到預設目標,課程考核方式起著至關重要作用。本文根據(jù)實踐教學思路,設計了圖2過程性課程考核方式。
學生最終成績由三部分構(gòu)成:平時、實驗和期末成績。平時成績占10%,主要考核點為學生課堂表現(xiàn)和作業(yè),其中課堂表現(xiàn)重點考查課內(nèi)啟發(fā)式編程的活躍程度。實驗成績占30%,考核點為課內(nèi)線上實驗和分組實踐。課內(nèi)實驗依托EduCoder平臺統(tǒng)計得分,統(tǒng)計數(shù)據(jù)包含學生實驗關卡成功與否、關卡所用時間、算法運行時間、代碼查重情況、測試次數(shù)等。分組實踐考評學生實踐作品的算法設計思路、代碼質(zhì)量、運行結(jié)果、總結(jié)匯報情況,其中同一組中每個成員得分差異主要考慮組內(nèi)人員貢獻度排名。終結(jié)性考核占60%,形式為半開卷筆試。學生可將經(jīng)典算法原理,過程抄寫到紙上帶進考場,以此側(cè)重學生對算法理解、應用、編碼實現(xiàn)的考核,而不是算法記憶的考核,在筆試中,加大算法編程實現(xiàn)的比例,注重學生實踐能力考核。
3 實踐教學實施過程及效果
3.1 全方位實踐教學實施
數(shù)據(jù)結(jié)構(gòu)與算法課程知識點多而雜,如果沒有從整體高度引導,學生學習容易管中窺豹,對自身的學習目標和當前達成程度沒有明確定位。針對這個問題,為落實實踐教學的效果,實施時采用了能力達成梯度模式,將能力達成和教學實施環(huán)節(jié)一一對應,使學生能明確定位自己學習情況和提升方向,實施過程如表2所示。
以線性表章節(jié)為例,前導知識為數(shù)組、指針。課前布置EduCoder基礎作業(yè),推送相關慕課,學生自行完成;理論課上,學習順序表和鏈表存儲原理,課上引導學生完成線性表的添加、刪除、定位、創(chuàng)建等基本操作關鍵代碼;理論課后布置作業(yè),讓學生根據(jù)課上學習的各個操作代碼,寫出完整的順序表和鏈表結(jié)構(gòu),并補全實現(xiàn)課上未講的操作,學生通過作業(yè)可以從整體上掌握順序表和鏈表的實現(xiàn);實驗課安排鏈表反轉(zhuǎn)、線性表合并等基礎應用題目,這些題目代碼可以借鑒課上學習的代碼,適當修改即可,避免學生從零開始實現(xiàn)算法產(chǎn)生的畏難情緒,同時讓學生在掌握線性表后能做到一定程度擴展、應用;在整個章節(jié)學習完后安排一元多項式相加或手機通訊錄等實際案例的分組綜合實踐,鍛煉學生對已學知識的綜合應用能力。
3.2 實踐教學實施效果
數(shù)據(jù)結(jié)構(gòu)和算法課程在2022年實施全過程全方位實踐教學設計,與2021年對比發(fā)現(xiàn),學生學習積極性提高,動手實踐能力增強,基礎自主實驗完成度好,綜合實踐匯報體現(xiàn)出學生對數(shù)據(jù)結(jié)構(gòu)和算法的深刻理解和靈活運用。與2021年相比,學生期末考試成績平均分由76.77上升到79.77分,提升了3.9%。其中,兩次考試編程實踐題均占30分,此部分得分,2022年均分較2021年提高了25%,教學效果提升明顯。
4 結(jié)束語
數(shù)據(jù)結(jié)構(gòu)與算法課程,理論性強,對編程實踐能力要求高。本文貫徹落實“以學生為中心”的教學理念,從學生實踐角度分析出此課程的問題。為解決學生編程基礎差、實踐開展難的問題,提出“線上線下結(jié)合、課內(nèi)課外互補、基礎綜合配套、自主分組并行”的全方位全過程課程實踐思路,幫助學生更好筑牢理論知識,更順利地將理論知識應用到實際問題中。從實施的結(jié)果看,此思路調(diào)動了學生學習積極性,提高了學生學習興趣,加強了學生的實踐編程能力,對教學效果提升較明顯。
參考文獻(References):
[1] 李嘉曾.“以學生為中心”教育理念的理論意義與實踐啟示[J].中國大學教學,2008(4):54-56.
[2] 趙炬明,高筱卉.關于實施“以學生為中心”的本科教學改革的思考[J].中國高教研究,2017(8):36-40.
[3] 張銘,耿國華,陳衛(wèi)衛(wèi),等.數(shù)據(jù)結(jié)構(gòu)與算法課程教學實施方案[J].中國大學教學,2011(3):56-60.
[4] 劉莞玲,吳英杰,傅仰耿,等.新工科背景下算法與數(shù)據(jù)結(jié)構(gòu)實踐教學改革探索[J].計算機教育,2021(7):73-76.
[5] 陳仕軍,陶茂虎,王前.基于python語言版“數(shù)據(jù)結(jié)構(gòu)與算法”的教學改革與實踐[J].湖北工程學院學報,2022,42(3):58-62.
[6] 付菊,孫連山,趙曉,等.基于能力培養(yǎng)的數(shù)據(jù)結(jié)構(gòu)與算法實驗教學模式探索和實踐[J].計算機教育,2021(3):99-103.
[7] 梁冰,馮林,杜猛,等.數(shù)據(jù)結(jié)構(gòu)與算法課程面向?qū)嵺`的教學方法研究[J].計算機教育,2019(11):73-76.
[8] 張儉鴿,侯雪梅,楊奎武.數(shù)據(jù)結(jié)構(gòu)與算法線上線下混合教學模式探索[J].計算機教育,2022(6):74-78.
[9] 尹剛,王濤,余躍,等.EduCoder:大規(guī)模開放在線實踐教學探索與應用——疫情防控下的在線實踐教學新途徑[J].軟件導刊,2020,19(10):1-7.
[10] 肖璞.數(shù)據(jù)結(jié)構(gòu)課程算法實踐能力強化方法的研究[J].計算機時代,2020(11):95-97,102.