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