宛 楠,張 義,楊 利
(1.皖南醫(yī)學(xué)院 醫(yī)學(xué)信息學(xué)院,安徽 蕪湖241002;2.皖南醫(yī)學(xué)院 健康大數(shù)據(jù)挖掘與應(yīng)用研究中心,安徽 蕪湖241002; 3.安徽工程大學(xué),安徽 蕪湖241000)
程序設(shè)計(jì)是計(jì)算機(jī)類專業(yè)學(xué)生必備的基礎(chǔ)能力,也是檢驗(yàn)計(jì)算機(jī)相關(guān)專業(yè)畢業(yè)生質(zhì)量的重要標(biāo)準(zhǔn)之一[1]。計(jì)算機(jī)專業(yè)的畢業(yè)生應(yīng)具備扎實(shí)的程序設(shè)計(jì)基礎(chǔ),并能解決實(shí)際問題,才能達(dá)到專業(yè)技術(shù)崗位的要求,因此如何有效提高計(jì)算機(jī)類專業(yè)學(xué)生程序設(shè)計(jì)能力,培養(yǎng)滿足社會(huì)需求的計(jì)算機(jī)專業(yè)人才是目前高校計(jì)算機(jī)專業(yè)教學(xué)改革的重點(diǎn)和難點(diǎn)。數(shù)據(jù)結(jié)構(gòu)是一門處于計(jì)算機(jī)學(xué)科核心地位的技術(shù)基礎(chǔ)和主干必修課,著重于培養(yǎng)學(xué)生復(fù)雜算法的設(shè)計(jì)能力、邏輯思維能力,是計(jì)算機(jī)專業(yè)創(chuàng)新應(yīng)用型人才培養(yǎng)方案中一門重要的專業(yè)課程[2]。學(xué)生通過學(xué)習(xí)《數(shù)據(jù)結(jié)構(gòu)與算法》課程,旨在掌握軟件開發(fā)過程中合理組織數(shù)據(jù),選擇最優(yōu)數(shù)據(jù)結(jié)構(gòu)以及有效甚至高效的算法設(shè)計(jì)技能,從而達(dá)到提高軟件整體質(zhì)量的目的。
傳統(tǒng)的數(shù)據(jù)結(jié)構(gòu)課程教學(xué)模式單一,學(xué)生難以理解相關(guān)知識(shí)點(diǎn),代碼實(shí)現(xiàn)困難,教學(xué)效果不理想,學(xué)生的編程能力薄弱,有的學(xué)生理論上理解算法思想,也無法正確實(shí)現(xiàn)。本文針對(duì)傳統(tǒng)數(shù)據(jù)結(jié)構(gòu)教學(xué)中存在的問題,結(jié)合教學(xué)實(shí)踐,提出有效的教學(xué)方法和教學(xué)策略,著重于對(duì)學(xué)生的程序設(shè)計(jì)能力的培養(yǎng),將算法思想引入到實(shí)際的應(yīng)用開發(fā)中,旨在提高學(xué)生的學(xué)習(xí)興趣,促使學(xué)生的數(shù)據(jù)抽象能力、邏輯思考能力、編程能力全面得到提升。
為了全面提升學(xué)生整體程序設(shè)計(jì)能力水平,數(shù)據(jù)結(jié)構(gòu)課程的理論教學(xué)和實(shí)踐教學(xué)應(yīng)該更加緊密地構(gòu)成一個(gè)整體,互相融合、相輔相成,從而幫助學(xué)生奠定扎實(shí)的理論基礎(chǔ),著力培養(yǎng)學(xué)生的動(dòng)手實(shí)踐能力、創(chuàng)新能力以及團(tuán)隊(duì)合作能力。
計(jì)算機(jī)編程語言是數(shù)據(jù)結(jié)構(gòu)課程的先導(dǎo)課程,是學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法課程的語言基礎(chǔ)[3]。數(shù)據(jù)結(jié)構(gòu)課程中的算法實(shí)現(xiàn)需要首先掌握C 語言中的數(shù)組、函數(shù)、指針、結(jié)構(gòu)體等語法知識(shí)。如果學(xué)生的程序設(shè)計(jì)基礎(chǔ)薄弱,會(huì)直接影響數(shù)據(jù)結(jié)構(gòu)的教學(xué)效果,因此數(shù)據(jù)結(jié)構(gòu)教學(xué)的理論課,應(yīng)以復(fù)習(xí)C語言相關(guān)知識(shí)為主,幫助學(xué)生回顧程序設(shè)計(jì)基礎(chǔ)知識(shí),消除語法障礙,之后的學(xué)習(xí)方可集中精力關(guān)注對(duì)算法的理解。第一堂實(shí)驗(yàn)課,教師也可相應(yīng)地布置一些指針和結(jié)構(gòu)體的程序設(shè)計(jì)實(shí)驗(yàn),在輔導(dǎo)過程中總結(jié)常見錯(cuò)誤,分析算法實(shí)現(xiàn)中出錯(cuò)的原因,讓學(xué)生熟練掌握C語言里的重要知識(shí)點(diǎn)。教師可以使用微信公眾號(hào)等方式推送相關(guān)學(xué)習(xí)內(nèi)容,布置相關(guān)的課堂練習(xí),幫助學(xué)生在課下復(fù)習(xí)和掌握C 語言的各個(gè)知識(shí)點(diǎn),為數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)打好語言基礎(chǔ),幫助學(xué)生在數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)課中能夠獨(dú)立自主地編寫調(diào)試程序。
為了將教育信息化思想融入到日常教學(xué)活動(dòng)中,進(jìn)一步提高學(xué)生的創(chuàng)新能力和實(shí)踐能力,有條件的學(xué)校應(yīng)該根據(jù)數(shù)據(jù)結(jié)構(gòu)課程的特點(diǎn),開發(fā)網(wǎng)絡(luò)課程教學(xué)平臺(tái),輔助課程的理論和實(shí)驗(yàn)教學(xué)。另外直接采用網(wǎng)絡(luò)上的免費(fèi)教學(xué)平臺(tái)輔助課程教學(xué)也不失為一個(gè)較好的選擇,如“itbegin”的院校通。數(shù)據(jù)結(jié)構(gòu)的課程教學(xué)平臺(tái)可以提供給學(xué)生學(xué)習(xí)視頻和資料,也可在線布置作業(yè)和發(fā)布實(shí)驗(yàn)內(nèi)容。教師可通過網(wǎng)絡(luò)教學(xué)平臺(tái)有效管控整個(gè)教學(xué)過程,適時(shí)掌握學(xué)生的學(xué)習(xí)情況,及時(shí)對(duì)教學(xué)側(cè)重點(diǎn)進(jìn)行調(diào)整。網(wǎng)絡(luò)教學(xué)平臺(tái)還提供師生交流和討論的版塊,實(shí)現(xiàn)學(xué)生之間和師生之間的實(shí)時(shí)交流,及時(shí)答疑解惑,幫助學(xué)生解決學(xué)習(xí)中遇到的困難,有效鞏固課程知識(shí)。
當(dāng)前很多高校都搭建了自己的OJ(Online judge在線判題)平臺(tái),用戶可以在線提交源代碼,系統(tǒng)對(duì)源代碼進(jìn)行編譯和執(zhí)行,并通過預(yù)先設(shè)計(jì)的測(cè)試數(shù)據(jù)來檢驗(yàn)程序源代碼的正確性。OJ 系統(tǒng)最初使用于ACM競(jìng)賽的自動(dòng)判題和排名,里面的題庫豐富,也包含了很多涉及到數(shù)據(jù)結(jié)構(gòu)和算法的相關(guān)題目。老師可以從眾多的題目中選擇合適的授課案例,用貼近實(shí)際應(yīng)用的案例激發(fā)學(xué)生的學(xué)習(xí)興趣。學(xué)生也可以在各個(gè)OJ網(wǎng)站上注冊(cè)賬戶,在平臺(tái)上選擇題目并且編寫程序。學(xué)生提交程序后,系統(tǒng)很快能給出評(píng)判結(jié)果,學(xué)生可以根據(jù)錯(cuò)誤提示反復(fù)修改和提交程序,直到結(jié)果完全正確為止。OJ平臺(tái)已事先設(shè)計(jì)好測(cè)試數(shù)據(jù),學(xué)生所編寫的程序要在OJ平臺(tái)上評(píng)判通過,并且所有的測(cè)試數(shù)據(jù)都獲得正確的執(zhí)行結(jié)果,就要求學(xué)生的編程基礎(chǔ)足夠扎實(shí),考慮問題足夠全面,邏輯思維更加嚴(yán)謹(jǐn)。在線題庫和評(píng)判系統(tǒng)用于數(shù)據(jù)結(jié)構(gòu)的輔助教學(xué),將有效地幫助學(xué)生更加全面和扎實(shí)地掌握和鞏固教學(xué)內(nèi)容。
實(shí)踐教學(xué)是課堂教學(xué)的重要環(huán)節(jié),學(xué)生實(shí)踐能力和創(chuàng)新能力的培養(yǎng)很大程度上取決于實(shí)踐環(huán)節(jié)的開展[4]。數(shù)據(jù)結(jié)構(gòu)的實(shí)驗(yàn)內(nèi)容應(yīng)該包括驗(yàn)證性實(shí)驗(yàn)和設(shè)計(jì)性實(shí)驗(yàn),其中驗(yàn)證性實(shí)驗(yàn)主要驗(yàn)證課堂理論教學(xué)內(nèi)容,包括基本數(shù)據(jù)結(jié)構(gòu)和基本算法的實(shí)現(xiàn),如順序表、鏈表、棧、隊(duì)列、數(shù)組、遞歸、樹和二叉樹、圖、查找、排序等基本算法,教學(xué)目的是讓學(xué)生掌握數(shù)據(jù)結(jié)構(gòu)基本概念以及算法[5]。
在完成驗(yàn)證性實(shí)驗(yàn)的基礎(chǔ)上開展設(shè)計(jì)性實(shí)驗(yàn),設(shè)計(jì)性實(shí)驗(yàn)往往是與實(shí)際應(yīng)用結(jié)合較為緊密的問題,實(shí)驗(yàn)要求學(xué)生能夠運(yùn)用所學(xué)知識(shí),進(jìn)行數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)和算法的實(shí)現(xiàn)。設(shè)計(jì)性實(shí)驗(yàn)的教育目的是培養(yǎng)學(xué)生的綜合應(yīng)用能力、分析和解決問題的能力、創(chuàng)新能力[5]。設(shè)計(jì)性實(shí)驗(yàn)可采用基于問題的項(xiàng)目驅(qū)動(dòng)式教學(xué)方法,教師提供一定數(shù)量的選題,明確任務(wù)需求。學(xué)生則結(jié)合默契度和對(duì)選題的興趣分成小組,3-5 人一組,大家圍繞任務(wù)分工合作,共同完成實(shí)驗(yàn)。設(shè)計(jì)性實(shí)驗(yàn)內(nèi)容安排如表1所示。
表1 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)性實(shí)驗(yàn)內(nèi)容安排表
筆者在C語言程序設(shè)計(jì)和數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計(jì)的課程教學(xué)實(shí)踐中,采用了itbegin 在線編程學(xué)習(xí)平臺(tái)來輔助實(shí)驗(yàn)教學(xué),取得了較好的教學(xué)效果。itbegin是一個(gè)免費(fèi)的編程教學(xué)云課堂,教師通過itbegin院校通創(chuàng)建課程并導(dǎo)入學(xué)生名單,學(xué)生即可登陸it-begin平臺(tái)進(jìn)入課程學(xué)習(xí),學(xué)生可以選擇相關(guān)知識(shí)點(diǎn)進(jìn)行復(fù)習(xí)和編碼練習(xí),并可以與教師實(shí)時(shí)互動(dòng)。itbegin 的在線布置、提交、批改作業(yè)功能為教師提供了極大便利。
教師在實(shí)驗(yàn)課前將實(shí)驗(yàn)內(nèi)容添加至教材管理模塊,并在作業(yè)管理模塊中發(fā)布實(shí)驗(yàn)內(nèi)容。通過分析實(shí)驗(yàn)報(bào)告,將本次實(shí)驗(yàn)中具有代表性的問題和需要注意的細(xì)節(jié),在理論課上進(jìn)行點(diǎn)評(píng),同學(xué)就可以及時(shí)在新的實(shí)驗(yàn)任務(wù)發(fā)布之前完成本次實(shí)驗(yàn)的所有修改和調(diào)試工作,及時(shí)進(jìn)行總結(jié)和歸納。
課程結(jié)束后,對(duì)學(xué)生進(jìn)行問卷調(diào)查,結(jié)果顯示93.4%的同學(xué)認(rèn)為itbegin 平臺(tái)對(duì)數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)大有裨益,89.88%的同學(xué)認(rèn)為通過使用itbegin 平臺(tái)可以有效地提高程序設(shè)計(jì)能力。相較于傳統(tǒng)教學(xué)模式,同學(xué)們普遍認(rèn)為基于程序設(shè)計(jì)能力培養(yǎng)的課程教學(xué)取得了較好的教學(xué)效果,提高了他們的編程能力和自主學(xué)習(xí)能力,增強(qiáng)了師生之間的交流。實(shí)踐表明基于程序設(shè)計(jì)能力培養(yǎng)的課程教學(xué)對(duì)于促進(jìn)學(xué)生自學(xué)能力、協(xié)作能力、編程能力的提升具有積極作用。
連續(xù)2 年統(tǒng)計(jì)了學(xué)生的實(shí)驗(yàn)到課率、實(shí)驗(yàn)報(bào)告提交率、實(shí)驗(yàn)完成率和實(shí)驗(yàn)平均分,結(jié)果如表2 所示。從中可以看出,采用itbegin 平臺(tái)輔助實(shí)驗(yàn)教學(xué)以后,2018年的4項(xiàng)統(tǒng)計(jì)結(jié)果均比2017年有了明顯提高。
表2 2017-2018年度數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)教學(xué)情況分析
數(shù)據(jù)結(jié)構(gòu)教學(xué)中注重程序設(shè)計(jì)能力的培養(yǎng),將網(wǎng)絡(luò)教學(xué)平臺(tái)和在線題庫引入數(shù)據(jù)結(jié)構(gòu)的實(shí)踐教學(xué),能更好地培養(yǎng)學(xué)生的團(tuán)隊(duì)合作精神,促進(jìn)良性競(jìng)爭(zhēng),營造良好的學(xué)習(xí)氛圍。通過必要的實(shí)踐訓(xùn)練,能有效地提高學(xué)生的分析問題、解決問題的能力,從而全面提高學(xué)生的編程能力、自主學(xué)習(xí)能力和創(chuàng)新能力。