李凈++郭洪禹++袁紅春
摘 要: “數(shù)據(jù)結(jié)構(gòu)與算法分析”在程序開發(fā)類課程群中有至關(guān)重要的作用。本文以課程群為背景,從教學(xué)、實(shí)踐等方面進(jìn)行研究,提出課程群框架下的自主學(xué)習(xí)、合作學(xué)習(xí)相結(jié)合的課堂教學(xué)模式、項(xiàng)目驅(qū)動(dòng)的分層實(shí)踐教學(xué)模式及分段管控的多元化實(shí)踐考核等改革措施,其研究對(duì)激發(fā)學(xué)生長(zhǎng)久的學(xué)習(xí)動(dòng)力和興趣有積極的作用。
關(guān)鍵詞: “數(shù)據(jù)結(jié)構(gòu)與算法分析” 課程群 分層實(shí)踐 分段管控
課程群是對(duì)教學(xué)計(jì)劃中有相互影響、互動(dòng)、有序、相互間可構(gòu)成完整的教學(xué)內(nèi)容體系的相關(guān)幾門課程組成一個(gè)課程間相互連接、相互配合、相互照應(yīng)的課程群體[1]。2014年提出建設(shè)程序開發(fā)類課程群,包括C語(yǔ)言程序設(shè)計(jì)、C++程序設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)與算法分析、JAVA程序設(shè)計(jì)、web程序設(shè)計(jì)、組件開發(fā)技術(shù)、軟件設(shè)計(jì)模式七門課程。其中“數(shù)據(jù)結(jié)構(gòu)與算法分析”課程在整個(gè)課程群具有承上啟下、舉足輕重的地位,決定程序開發(fā)類課程群的成效。
一、“數(shù)據(jù)結(jié)構(gòu)與算法分析”課程的現(xiàn)狀
1.課程理論性強(qiáng),難度大。
調(diào)研發(fā)現(xiàn):非計(jì)算機(jī)專業(yè)近80%的學(xué)生都感覺課程難,即使計(jì)算機(jī)專業(yè)的有近50%的學(xué)生,感覺該課程難學(xué),這種畏懼思想影響學(xué)習(xí)興趣。
2.先導(dǎo)課程掌握不扎實(shí),課程推進(jìn)困難。
教學(xué)計(jì)劃中C++程序設(shè)計(jì)、實(shí)踐和該課程分別安排在第2和第3個(gè)學(xué)期。暑假將兩門課割裂了,造成是否介紹先導(dǎo)課的困境。
3.學(xué)生動(dòng)手水平參差不齊,單一的實(shí)踐安排難以滿足不同的需求。
目前,課程的實(shí)踐安排對(duì)所有的學(xué)生相同,對(duì)于動(dòng)手強(qiáng)的學(xué)生可能在寢室就完成題目,而對(duì)編程能力不強(qiáng)的學(xué)生可能根本不知該如何下手,久而久之學(xué)生就失去開發(fā)熱情。
4.課程管控不足,課程考核不能反映學(xué)生的真實(shí)水平。
目前課程的評(píng)定以卷面成績(jī)?yōu)橹?,?shí)踐證明有些學(xué)生根本不會(huì)寫代碼但他卻能拿到很高的分?jǐn)?shù)。
二、教學(xué)改革措施
1.課程群中相關(guān)課程開課時(shí)間的精細(xì)化安排。
(1)開課時(shí)間安排。
C++程序設(shè)計(jì)包括64上課課時(shí)和16實(shí)踐課時(shí),將C++課程實(shí)踐調(diào)整到第3學(xué)期第1周上,而數(shù)據(jù)結(jié)構(gòu)與算法分析課程從第2周以后開始上,這樣就將兩門課緊密地銜接起來。這種一門課程一分為二的方法促進(jìn)了C++課程,同時(shí)也保證“數(shù)據(jù)結(jié)構(gòu)與算法分析”課程的順利進(jìn)行。
(2)教學(xué)內(nèi)容及學(xué)時(shí)分配。
為呼應(yīng)課程群中的后續(xù)課程,該課程內(nèi)容是貫穿程序設(shè)計(jì)、軟件設(shè)計(jì)模式的思想和觀點(diǎn)。該課程采用面向?qū)ο蠛统橄髷?shù)據(jù)類型觀點(diǎn)介紹數(shù)據(jù)結(jié)構(gòu),集中體現(xiàn)分解、抽象和信息隱蔽的基本原則,抽象數(shù)據(jù)類型是中樞,展示信息結(jié)構(gòu)轉(zhuǎn)換的三個(gè)重要階段:數(shù)學(xué)模型、抽象數(shù)據(jù)類型、數(shù)據(jù)結(jié)構(gòu)與算法。其理論教學(xué)環(huán)節(jié)的安排為:數(shù)據(jù)結(jié)構(gòu)的基本概念(2),表、棧和隊(duì)列(6),樹(8),散列(4),優(yōu)先隊(duì)列(7),排序(12),不相交集(4),圖論算法(7),算法設(shè)計(jì)技巧(4),攤還分析(4),高級(jí)數(shù)據(jù)結(jié)構(gòu)(6);課內(nèi)實(shí)踐的安排:棧和隊(duì)列(2),表達(dá)式樹(2),散列、優(yōu)先隊(duì)列(2),排序(2),不相交集(2),深度優(yōu)先搜索應(yīng)用(2),貪心、分治算法(2),AA樹、treap數(shù)(2)。
2.課堂教學(xué)模式改革
(1)注重啟發(fā)式教學(xué),建立自主學(xué)習(xí)、合作學(xué)習(xí)相結(jié)合的教學(xué)模式。
為強(qiáng)調(diào)思維訓(xùn)練,采用講、做穿插的授課方式,教師采用示例案例授課時(shí)學(xué)生采用自主學(xué)習(xí)模式,是教-做-答疑的互動(dòng)、有反饋方式。它強(qiáng)調(diào)教中實(shí)踐、實(shí)踐中思考、交流中提升;自主學(xué)習(xí)完后各小組通過“以強(qiáng)帶弱、以老帶新”的方式合作完成綜合實(shí)踐作業(yè)。
具體講解時(shí),(1)首先引入案例,然后給出C++實(shí)現(xiàn)的方法,最后詳細(xì)展開相應(yīng)數(shù)據(jù)結(jié)構(gòu)及操作實(shí)現(xiàn);(2)一題多解、一題多語(yǔ),如對(duì)同一問題采用不同的數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)方法,對(duì)比講解,多語(yǔ)言實(shí)現(xiàn)為拓展作業(yè);(3)難點(diǎn)分散,如將棧與非遞歸處理技術(shù)分別在棧、二叉樹非遞歸算法、快速排序與歸并排序的非遞歸算法等多處講解;(4)圖示講解和動(dòng)畫展示相結(jié)合。
(2)標(biāo)準(zhǔn)化教學(xué)與微課程教學(xué)模式相結(jié)合。
為了確保課程的可持續(xù)發(fā)展,課程采用項(xiàng)目組集體備課、集體討論、分頭準(zhǔn)備的方式。課程組骨干教師經(jīng)過多次討論后修訂了課程教學(xué)大綱,形成了標(biāo)準(zhǔn)教案、PPT及算法演示視頻。為充分利用學(xué)生的課余時(shí)間,采用課程微課程化,微課視頻一般10分鐘左右[2],選擇與生活比較貼近的數(shù)據(jù)結(jié)構(gòu)(比如棧、隊(duì)列等)和基礎(chǔ)實(shí)踐內(nèi)容微課化。
3.項(xiàng)目驅(qū)動(dòng)的分層實(shí)踐教學(xué)模式研究。
教育心理學(xué)家發(fā)現(xiàn):學(xué)習(xí)是累積性的,較復(fù)雜、較高級(jí)的學(xué)習(xí)是建立在基礎(chǔ)性的學(xué)習(xí)基礎(chǔ)之上的[3]。因此,課程的實(shí)踐教學(xué)以貫穿課程群的項(xiàng)目進(jìn)行驅(qū)動(dòng),提出“注重基礎(chǔ)、綜合應(yīng)用、提高創(chuàng)新”的三層次實(shí)驗(yàn)教學(xué)模式,以基礎(chǔ)、設(shè)計(jì)、綜合三個(gè)方面的實(shí)踐能力培養(yǎng)為中心,全方位地培養(yǎng)學(xué)生的動(dòng)手能力和創(chuàng)新能力。
基礎(chǔ)類實(shí)踐通常是對(duì)教材上所涉及的數(shù)據(jù)結(jié)構(gòu)及相關(guān)操作進(jìn)行上機(jī)驗(yàn)證,要求學(xué)生掌握相關(guān)數(shù)據(jù)結(jié)構(gòu),提高學(xué)生的軟件設(shè)計(jì)規(guī)范化能力。這類實(shí)踐通常在介紹完相關(guān)知識(shí)后以課程作業(yè)的方式發(fā)放,要求學(xué)生在規(guī)定時(shí)間內(nèi)完成,教師以晚自習(xí)的形式進(jìn)行個(gè)別指導(dǎo);設(shè)計(jì)類實(shí)踐要求學(xué)生對(duì)給定的題目進(jìn)行數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)及算法實(shí)現(xiàn),題目是從貫穿課程群中的項(xiàng)目案例中切割出來的。實(shí)踐中我們鼓勵(lì)學(xué)生一題多解,并分析不同解的時(shí)、空代價(jià)。這類實(shí)驗(yàn)通常是課程內(nèi)實(shí)驗(yàn)題目,要求每個(gè)學(xué)生獨(dú)自完成,教師全程指導(dǎo)、重點(diǎn)考核;綜合類實(shí)踐是對(duì)C++實(shí)踐課程中學(xué)生已完成題目的重新設(shè)計(jì),以小組為完成單位,人員分組原則上是C++實(shí)踐的人員分組。該類實(shí)踐培養(yǎng)學(xué)生分析、設(shè)計(jì)實(shí)際項(xiàng)目的能力和創(chuàng)新能力。教師對(duì)有強(qiáng)烈要求的學(xué)生通過答疑的方式進(jìn)行指導(dǎo)。各小組完成后需要進(jìn)行結(jié)題答辯,答辯中教師會(huì)對(duì)完成情況進(jìn)行評(píng)價(jià),從而引出后續(xù)課程。
4.課程考核與過程控制。
我們采用分段控制的多元化實(shí)踐考核方式:期末機(jī)考30%+基礎(chǔ)實(shí)踐20%(程序代碼+報(bào)告+隨機(jī)面試)+設(shè)計(jì)實(shí)踐40%(課前準(zhǔn)備材料+完成代碼+報(bào)告)+綜合實(shí)踐10%(報(bào)告+答辯)??己朔绞綇?qiáng)調(diào)對(duì)課程的過程監(jiān)控,基礎(chǔ)實(shí)踐的每一次完成情況能夠給教師提供重點(diǎn)監(jiān)控的學(xué)生名單,通過晚自習(xí)的重點(diǎn)指導(dǎo)確保學(xué)生弄懂相關(guān)知識(shí)點(diǎn)、順利進(jìn)行實(shí)踐課任務(wù),為保證設(shè)計(jì)實(shí)踐課的完成質(zhì)量,要求學(xué)生在課前精心準(zhǔn)備并提交準(zhǔn)備材料。綜合實(shí)踐強(qiáng)調(diào)以強(qiáng)帶弱,最后通過總結(jié)引出下一門課程,從而保持學(xué)生長(zhǎng)久的學(xué)習(xí)動(dòng)力。
三、結(jié)語(yǔ)
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計(jì)是程序開發(fā)類課程群中最重要的一門課程,其成敗直接決定整個(gè)課程群的成敗。在不影響其他課程下的課程群開課時(shí)間微調(diào)保證課程的順利進(jìn)行;創(chuàng)新的教學(xué)課堂模式激發(fā)學(xué)生自主式、探索式學(xué)習(xí);項(xiàng)目驅(qū)動(dòng)的實(shí)踐模式將課程群中的課程更緊密地結(jié)合起來;分層的實(shí)踐教學(xué)滿足不同層次學(xué)生的需求;教學(xué)過程的管控進(jìn)一步確保教學(xué)的順利推進(jìn)。該課程改革對(duì)課程群中其他課程改革有積極的作用。
參考文獻(xiàn):
[1]馬賽,李方能,吳正國(guó),卜樂平.《信號(hào)與系統(tǒng)》課程群的建設(shè)與教學(xué)改革探索[J].高等教育研究學(xué)報(bào),2010.3.
[2]梁樂明,曹俏俏,張寶輝.微課程設(shè)計(jì)模式研究—基于國(guó)內(nèi)外微課程的對(duì)比分析[J].開放教育研究,2013,19(1).
[3]哈斯.《數(shù)據(jù)結(jié)構(gòu)》課程中使用逐步演示法進(jìn)行算法教學(xué)的實(shí)驗(yàn)研究[D].呼和浩特:內(nèi)蒙古師范大學(xué),2007.
[4]李凈,多琦,袁小華.信息管理與信息系統(tǒng)專業(yè)“軟件工程”課程教學(xué)研究[J].計(jì)算機(jī)教育,2007,19.
項(xiàng)目:上海海洋大學(xué)《數(shù)據(jù)結(jié)構(gòu)與算法分析》重點(diǎn)課程建設(shè)