楊力
摘要:數(shù)據(jù)結(jié)構(gòu)是電子信息類專業(yè)的核心課程,傳統(tǒng)的教學(xué)與最新的技術(shù)發(fā)展脫節(jié),難以激發(fā)學(xué)生的學(xué)習(xí)興趣。將數(shù)據(jù)結(jié)構(gòu)教學(xué)與目前廣泛使用的智能終端應(yīng)用相結(jié)合,在新的軟件開(kāi)發(fā)平臺(tái)上開(kāi)展數(shù)據(jù)結(jié)構(gòu)的創(chuàng)新教學(xué)改革,對(duì)提高學(xué)生的算法設(shè)計(jì)、編程能力等方面起到了很好的效果。
關(guān)鍵詞:數(shù)據(jù)結(jié)構(gòu);Android編程;項(xiàng)目驅(qū)動(dòng)教學(xué)
中圖分類號(hào):G642.0 ? ? 文獻(xiàn)標(biāo)志碼:A ? ? 文章編號(hào):1674-9324(2015)44-0108-02
移動(dòng)互聯(lián)網(wǎng)和智能終端設(shè)備深刻地改變著人們的生產(chǎn)和生活方式。近幾年,智能手機(jī)出貨量已經(jīng)數(shù)倍于傳統(tǒng)微型計(jì)算機(jī),并成為人們?cè)L問(wèn)互聯(lián)網(wǎng)的最常用設(shè)備。移動(dòng)智能終端包括手機(jī)、平板電腦、智能手表等,幫助人們完成了絕大多數(shù)過(guò)去依賴電腦才能進(jìn)行的任務(wù)。
數(shù)據(jù)結(jié)構(gòu)是電子信息專業(yè)的軟件類核心課程,注重理論和編程實(shí)踐相結(jié)合[1]。傳統(tǒng)的教學(xué)實(shí)踐以C/C++作為編程描述語(yǔ)言,以Windows或Linux系統(tǒng)作為算法編程實(shí)踐平臺(tái)[2]。這種教學(xué)方式的好處是能專注于培養(yǎng)學(xué)生的算法設(shè)計(jì)和編程等基本能力,但缺點(diǎn)也很明顯,學(xué)生很難將課堂所學(xué)與實(shí)際應(yīng)用聯(lián)系起來(lái)。數(shù)據(jù)結(jié)構(gòu)課程有一定的難度,內(nèi)容略顯枯燥,如果課堂教學(xué)不能與實(shí)際應(yīng)用和軟件技術(shù)發(fā)展趨勢(shì)緊密結(jié)合,則很難激發(fā)學(xué)生的學(xué)習(xí)興趣,教學(xué)效果不理想。
軟件開(kāi)發(fā)類課程需要引導(dǎo)學(xué)生接觸新的軟件開(kāi)發(fā)技術(shù)和項(xiàng)目實(shí)踐,讓學(xué)生體會(huì)到學(xué)有所用,增強(qiáng)學(xué)習(xí)興趣和信心。目前國(guó)內(nèi)已有很多研究者開(kāi)展了以工程項(xiàng)目實(shí)踐為導(dǎo)向的數(shù)據(jù)結(jié)構(gòu)教學(xué)[3],使學(xué)生將算法設(shè)計(jì)與工程實(shí)踐結(jié)合起來(lái)。但在實(shí)際教學(xué)實(shí)踐中,還有很多難點(diǎn)。一方面,工程實(shí)踐要求學(xué)生具備較好的編程基礎(chǔ),而學(xué)生在先修的編程語(yǔ)言課程中基礎(chǔ)參差不齊[4];另一方面,在有限的學(xué)時(shí)內(nèi),學(xué)生很難兼顧工程實(shí)踐和算法設(shè)計(jì)的學(xué)習(xí)。
本文基于新的實(shí)踐開(kāi)發(fā)平臺(tái),以解決上述問(wèn)題為出發(fā)點(diǎn),進(jìn)行了數(shù)據(jù)結(jié)構(gòu)課程的創(chuàng)新改革實(shí)驗(yàn)。
一、數(shù)據(jù)結(jié)構(gòu)編程實(shí)踐平臺(tái)
在當(dāng)前移動(dòng)互聯(lián)網(wǎng)帶來(lái)深刻變革、智能終端普及、個(gè)人電腦產(chǎn)業(yè)萎縮的背景下,傳統(tǒng)的基于PC編程開(kāi)發(fā)環(huán)境的數(shù)據(jù)結(jié)構(gòu)教學(xué)已經(jīng)與實(shí)際應(yīng)用脫節(jié)。數(shù)據(jù)結(jié)構(gòu)是一門注重編程實(shí)踐的課程,基于目前廣泛使用的智能手機(jī)、平板電腦、智能手表等智能終端進(jìn)行教學(xué),不僅可以激發(fā)學(xué)習(xí)興趣,而且非常容易地為學(xué)生的后續(xù)深入學(xué)習(xí)和接觸產(chǎn)業(yè)打下基礎(chǔ)。
我們選擇Android作為教學(xué)實(shí)驗(yàn)編程平臺(tái)。Android是目前各種智能終端中使用最廣泛的操作系統(tǒng),主要支持Java/C++編程語(yǔ)言。基于新的教學(xué)實(shí)驗(yàn)平臺(tái),以Java/C++作為編程描述語(yǔ)言,設(shè)計(jì)新的實(shí)踐教學(xué)方案。
二、實(shí)踐教學(xué)設(shè)計(jì)特點(diǎn)
我們針對(duì)智能終端平臺(tái),對(duì)實(shí)踐教學(xué)環(huán)節(jié)進(jìn)行了重新設(shè)計(jì),遵循以下特點(diǎn):首先,始終以數(shù)據(jù)結(jié)構(gòu)基本算法的理解和實(shí)現(xiàn)為重點(diǎn),在此基礎(chǔ)上,讓學(xué)生根據(jù)自身興趣,對(duì)應(yīng)用開(kāi)發(fā)有不同程度的了解;其次,實(shí)踐教學(xué)的設(shè)計(jì)既適合課堂講授,也適合實(shí)驗(yàn)教學(xué),便于不斷加深學(xué)生的理解;最后,以完成實(shí)際項(xiàng)目作為學(xué)習(xí)任務(wù),注重項(xiàng)目功能模塊細(xì)分,使學(xué)生容易跟隨教學(xué)進(jìn)度。
采用實(shí)際項(xiàng)目進(jìn)行教學(xué)會(huì)導(dǎo)致知識(shí)點(diǎn)龐雜,學(xué)生學(xué)習(xí)難以抓住重點(diǎn)。因此,對(duì)教學(xué)知識(shí)點(diǎn)的取舍和重難點(diǎn)劃分至關(guān)重要。在教學(xué)知識(shí)點(diǎn)方面,我們采取的原則是,以基本算法設(shè)計(jì)和面向?qū)ο蟮木幊趟枷氲膽?yīng)用為重點(diǎn),以智能手機(jī)為主要的應(yīng)用平臺(tái)進(jìn)行教學(xué),把編程語(yǔ)法和平臺(tái)相關(guān)的知識(shí)點(diǎn)放在次要位置。
三、實(shí)踐教學(xué)項(xiàng)目案例
(一)基于Android的學(xué)生信息管理程序
項(xiàng)目涉及線性表、查找、排序等知識(shí)點(diǎn)。具體要求為,輸入學(xué)生姓名、學(xué)號(hào)、分?jǐn)?shù)等信息,按照不同的關(guān)鍵字對(duì)學(xué)生信息進(jìn)行排序,并顯示結(jié)果。教案設(shè)計(jì)采取循序漸進(jìn)、分模塊講解的原則,引導(dǎo)學(xué)生把重點(diǎn)放在算法的理解與實(shí)現(xiàn)上。項(xiàng)目分為三個(gè)可獨(dú)立運(yùn)行的模塊,可在不同章節(jié)講授,敘述如下。
1.信息的輸入和顯示,涉及線性表的創(chuàng)建、添加、刪除。要求采用順序表或鏈表實(shí)現(xiàn),輸入學(xué)生信息,點(diǎn)擊添加,將信息逐個(gè)插入到線性表并顯示。Android控件相關(guān)知識(shí),僅作簡(jiǎn)單介紹,提供參考代碼。
2.信息的查找,涉及線性表的查找。要求按某個(gè)關(guān)鍵字查找,列出符合條件的學(xué)生。
3.信息的排序,涉及內(nèi)部排序。要求學(xué)生采用指定算法實(shí)現(xiàn)基于任意關(guān)鍵字的排序。作為選做題,要求學(xué)生用Java中的泛型編程實(shí)現(xiàn)基于任意指定關(guān)鍵字的排序,以及用comparable接口實(shí)現(xiàn)學(xué)生對(duì)象的比較。
(二)圖的應(yīng)用(拯救007)
項(xiàng)目改編自浙江大學(xué)計(jì)算機(jī)學(xué)院數(shù)據(jù)結(jié)構(gòu)公開(kāi)課中的一道例題,通過(guò)基于Android的可視化編程,使項(xiàng)目變成游戲開(kāi)發(fā)任務(wù),讓學(xué)生獲得更加直觀的理解和感受,大大提高了學(xué)習(xí)興趣。項(xiàng)目具體要求為,“007”被困在湖中心一個(gè)正方形的小島上,湖上有很多鱷魚在游動(dòng),請(qǐng)幫助“007”來(lái)判斷,在某個(gè)時(shí)刻,能否通過(guò)鱷魚背,連續(xù)跳躍到湖岸上。
項(xiàng)目引導(dǎo)學(xué)生在經(jīng)典的深度優(yōu)先搜索算法基礎(chǔ)上編程求解。湖的寬度、鱷魚的數(shù)目、“007”一次可以跳躍的最大距離等作為參數(shù)輸入,鱷魚的初始狀態(tài)可隨機(jī)產(chǎn)生。對(duì)應(yīng)用程序涉及到的Android繪圖知識(shí)僅作簡(jiǎn)單講解,并提供參考代碼。
(三)最優(yōu)二叉樹的應(yīng)用
最優(yōu)二叉樹是二叉樹的經(jīng)典應(yīng)用。項(xiàng)目要求根據(jù)輸入的權(quán)值,創(chuàng)建最優(yōu)二叉樹,并將二叉樹繪制到屏幕上。項(xiàng)目可分為兩個(gè)模塊,分階段講授。
1.二叉樹的建立和繪制。要求學(xué)生按指定的順序建立二叉樹,并繪制在屏幕上。
2.最優(yōu)二叉樹的建立。要求學(xué)生根據(jù)輸入權(quán)值建立最優(yōu)二叉樹。
通過(guò)本項(xiàng)目,使學(xué)生對(duì)二叉樹章節(jié)的算法有全面的理解。應(yīng)用程序中涉及的Android繪圖知識(shí),僅作簡(jiǎn)單講解。
(四)五子棋游戲的應(yīng)用
項(xiàng)目要求學(xué)生設(shè)計(jì)一個(gè)基于Android的簡(jiǎn)單的五子棋游戲,提供基本的參考代碼,引導(dǎo)學(xué)生完成棋局的判定勝負(fù)等算法。項(xiàng)目涉及二維數(shù)組的基本操作。
四、教學(xué)實(shí)踐分析
通過(guò)對(duì)連續(xù)兩年教學(xué)對(duì)比實(shí)驗(yàn)結(jié)果分析,統(tǒng)計(jì)了學(xué)生的實(shí)驗(yàn)到課率、實(shí)驗(yàn)完成率(獨(dú)立完成實(shí)驗(yàn)的學(xué)生比例)和實(shí)驗(yàn)平均分,結(jié)果如表1所示。從表1可以看出,在實(shí)驗(yàn)難度略有增加的情況下,2015年的三項(xiàng)統(tǒng)計(jì)結(jié)果均比2014年有所提高。
五、結(jié)語(yǔ)
本文開(kāi)展了以手機(jī)等智能終端為實(shí)驗(yàn)平臺(tái)的數(shù)據(jù)結(jié)構(gòu)教學(xué)改革探索,通過(guò)對(duì)實(shí)踐教學(xué)環(huán)節(jié)的重新設(shè)計(jì),以基本算法為教學(xué)重點(diǎn),注重功能模塊劃分。教學(xué)實(shí)踐表明,新的教學(xué)方案容易激發(fā)學(xué)生的興趣,提高教學(xué)效果,能夠引導(dǎo)學(xué)生了解實(shí)際工程項(xiàng)目。
參考文獻(xiàn):
[1]嚴(yán)蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)[M].北京:清華大學(xué)出版社,2011.
[2]孔兵,陳紅梅,袁國(guó)武.數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)中指針相關(guān)問(wèn)題[J].教育教學(xué)論壇,2014,(04):110-112.
[3]趙立雙,王麗君,孫蕾.以“工程實(shí)踐”能力培養(yǎng)為導(dǎo)向的《數(shù)據(jù)結(jié)構(gòu)》課程實(shí)踐教學(xué)體系的構(gòu)建[J].電子設(shè)計(jì)工程,2013,(02):7-9.
[4]王作為,鄒曉健.分類培養(yǎng)目標(biāo)下的數(shù)據(jù)結(jié)構(gòu)教學(xué)方法的研究探索[J].中國(guó)電力教育,2013,(4):58-59.