曹芳
【摘 要】本文以應(yīng)用型本科的角度對(duì)《數(shù)據(jù)結(jié)構(gòu)與算法》課程在實(shí)際教學(xué)中的問(wèn)題進(jìn)行了總結(jié),就我校學(xué)生參加全國(guó)程序設(shè)計(jì)競(jìng)賽的經(jīng)驗(yàn)對(duì)本課程教學(xué)產(chǎn)生的意義進(jìn)行了探討。
【關(guān)鍵詞】數(shù)據(jù)結(jié)構(gòu)與算法;程序設(shè)計(jì)大賽
中圖分類(lèi)號(hào): TP311.12-4;G642 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 2095-2457(2018)14-0182-001
DOI:10.19694/j.cnki.issn2095-2457.2018.14.082
The Significance of Programming Competition to the Teaching of “Data Structure and Algorithm”
CAO Fang
(Beijing Geely College of Automotive Engineering Beijing 102202, China)
【Abstract】This paper summarizes the problems of “data structure and algorithm” in practical teaching from the perspective of application-oriented undergraduate course, and discusses the significance of this course teaching based on the experience of our students participating in the national program design competition.
【Key words】Data structure and algorithm; Programming competition
《數(shù)據(jù)結(jié)構(gòu)與算法》是我校計(jì)算機(jī)專(zhuān)業(yè)課程體系中核心的必修課程,作為學(xué)科的專(zhuān)業(yè)課,具有承上啟下的重要作用。本課程主要在培養(yǎng)學(xué)生的分析問(wèn)題的能力和研究計(jì)算機(jī)加工數(shù)據(jù)對(duì)象的能力,培養(yǎng)學(xué)生數(shù)據(jù)抽象能力和復(fù)雜程序設(shè)計(jì)能力,培養(yǎng)學(xué)生對(duì)基本常用算法的理解和應(yīng)用能力,為今后軟件開(kāi)發(fā)設(shè)計(jì)打下堅(jiān)實(shí)基礎(chǔ)。同時(shí)本課程又是如編譯原理、操作系統(tǒng)、數(shù)據(jù)庫(kù)系統(tǒng)等課程的基礎(chǔ)。
在內(nèi)容方面,該課程主要包括抽象數(shù)據(jù)模型、數(shù)據(jù)結(jié)構(gòu)、算法。它主要研究計(jì)算機(jī)所要處理的數(shù)據(jù)對(duì)象,根據(jù)對(duì)象所表示的邏輯結(jié)構(gòu)和實(shí)際使用的存儲(chǔ)方式的不同,研究其相應(yīng)的操作方法,并初步掌握算法的時(shí)間復(fù)雜度和空間復(fù)雜度衡量算法的好壞。最終的目的是使學(xué)生在分析解決具體問(wèn)題的時(shí)候能夠很自然地想到和選擇合適的數(shù)據(jù)結(jié)構(gòu)類(lèi)型。在實(shí)際教學(xué)中本課程以包括很多抽象的概念、算法和編程的思想,一向以抽象難懂、理論性強(qiáng)和學(xué)習(xí)難度大著稱(chēng)。本課程的教學(xué)效果與教師在這門(mén)課中的投入沒(méi)能獲得等值的回報(bào),尤其是在應(yīng)用型本科教育中,學(xué)生普遍反映數(shù)據(jù)結(jié)構(gòu)與算法課抽象難懂、與實(shí)踐聯(lián)系不上,繼而難以產(chǎn)生出學(xué)習(xí)興趣,所以也不到良好的學(xué)習(xí)和教學(xué)效果。
學(xué)生認(rèn)知方面,應(yīng)用型本科學(xué)生對(duì)數(shù)據(jù)結(jié)構(gòu)與算法課程的價(jià)值認(rèn)識(shí)不正確,由于應(yīng)用型本科的教學(xué)培養(yǎng)方案?jìng)?cè)重學(xué)生的動(dòng)手操作、實(shí)際應(yīng)用能力,所以計(jì)算機(jī)專(zhuān)業(yè)學(xué)生也只重視易于動(dòng)手的知識(shí),例如網(wǎng)站的開(kāi)發(fā)、流行的編程語(yǔ)言和開(kāi)發(fā)工具等。這種思想使得學(xué)生不愿意花時(shí)間去學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)這類(lèi)理論抽象的課程,以至于將這門(mén)課給孤立起來(lái)。但實(shí)際上,數(shù)據(jù)結(jié)構(gòu)課程有利于培養(yǎng)學(xué)生對(duì)問(wèn)題的抽象分析能力、數(shù)據(jù)模型的構(gòu)建、算法的應(yīng)用能力。
為推動(dòng)軟件行業(yè)產(chǎn)業(yè)的發(fā)展,促進(jìn)軟件專(zhuān)業(yè)技術(shù)人的才培養(yǎng),培養(yǎng)具有創(chuàng)新能力和實(shí)踐能力的高端人才,提升高校畢業(yè)生的就業(yè)競(jìng)爭(zhēng)力,工業(yè)和信息化部人才交流中心已成功舉辦九屆藍(lán)橋杯大賽。參賽學(xué)校超過(guò)1200余所,參賽規(guī)模已達(dá)二十萬(wàn)人次,我校學(xué)生從第二屆開(kāi)始到第九屆都有參賽,參賽項(xiàng)目為C++組和Java組程序設(shè)計(jì)大賽,每一屆我們都取得了不錯(cuò)的成績(jī),都有學(xué)生獲得北京市一等獎(jiǎng)、二等獎(jiǎng)和三等獎(jiǎng)。獲得的成績(jī)給參賽同學(xué)帶來(lái)很大的肯定和鼓舞,也激勵(lì)更多的學(xué)生參與到比賽中來(lái)。
數(shù)據(jù)結(jié)構(gòu)課程知識(shí)和賽題結(jié)合非常緊密,課程中學(xué)的線性表、查找、排序這些方面的算法在賽題中經(jīng)常出現(xiàn),學(xué)生做賽前準(zhǔn)備的時(shí)候會(huì)多加練習(xí),這樣就將所學(xué)書(shū)本知識(shí)應(yīng)用了起來(lái)。比如大賽賽題還會(huì)涉及我們平時(shí)不會(huì)多加練習(xí)和應(yīng)用的很多算法,例如廣度度優(yōu)先搜索BFS、深度優(yōu)先搜索BFS、單元最短路(下轉(zhuǎn)第202頁(yè))(上接第182頁(yè))徑?Bellman-Ford算法、最短路徑問(wèn)題?Bellman-Ford貝爾曼-福特算法、最短路徑問(wèn)題Dijkstra 迪吉斯特勒算法、最小生成樹(shù)Prim算法、最小生成樹(shù)Kruskal算法,學(xué)生參賽就要鉆研這些涉及到的算法。
程序設(shè)計(jì)大賽的題目和平時(shí)課堂教學(xué)內(nèi)容比較來(lái)說(shuō)賽題的難度大、涉及面相對(duì)廣,需要學(xué)生將自己掌握的知識(shí)和查找相關(guān)知識(shí)相結(jié)合來(lái)完成大量的查閱資料、探索資料、分析資料的工作, 在完成大賽題目的過(guò)程中還需要自學(xué)很多課外知識(shí),題目都需要?jiǎng)邮志幊躺蠙C(jī)調(diào)試,在此過(guò)程中學(xué)生不僅感受的自我價(jià)值體現(xiàn)的樂(lè)趣,也激發(fā)了學(xué)生對(duì)軟件算法的興趣,并且對(duì)自主學(xué)習(xí)的能力也得到了培養(yǎng)。
通過(guò)參加程序設(shè)計(jì)大賽,學(xué)生能將算法應(yīng)用在解決比賽題目中,使得學(xué)生立刻體會(huì)到“學(xué)有所用”,提高了學(xué)生的學(xué)習(xí)主觀能動(dòng)性,加強(qiáng)了學(xué)生的實(shí)踐能力的培養(yǎng)。為了比賽而進(jìn)行學(xué)習(xí)使學(xué)生的學(xué)習(xí)動(dòng)力增加很大,以前是老師催著學(xué)生學(xué),參加了大賽是學(xué)生追著老師問(wèn),這樣的氛圍在班級(jí)也形成了良好的循環(huán),帶動(dòng)其他沒(méi)有參加大賽的同學(xué)進(jìn)行學(xué)習(xí)。同時(shí)平時(shí)學(xué)生的學(xué)習(xí)效果老師在教學(xué)過(guò)程中也不能有效的掌握,通過(guò)程序設(shè)計(jì)大賽老師對(duì)學(xué)生掌握課程知識(shí)的程度也有了準(zhǔn)確的判斷和評(píng)判依據(jù),為老師在今后的教學(xué)設(shè)計(jì)提供了有利的依據(jù)。我們?cè)诮窈笠喙膭?lì)學(xué)生參加程序設(shè)計(jì)大賽,激勵(lì)學(xué)生在比賽的道路上越走越高。
【參考文獻(xiàn)】
[1]李倩,秦芳,李娟.程序設(shè)計(jì)類(lèi)課程教學(xué)方法探究[J].才智.2017(05).
[2]嚴(yán)蔚敏,吳偉民編著.數(shù)據(jù)結(jié)構(gòu)[M].清華大學(xué)出版社,1992.