摘? 要: 文章基于應(yīng)用型本科人才培養(yǎng)的現(xiàn)實(shí)背景,對(duì)數(shù)據(jù)結(jié)構(gòu)課程的培養(yǎng)方案、教學(xué)方式和考核方法進(jìn)行了改進(jìn),提出了一種算法實(shí)踐能力的強(qiáng)化方法和考核方案。該方法結(jié)合數(shù)據(jù)結(jié)構(gòu)、數(shù)學(xué)的知識(shí)點(diǎn)和編程技術(shù)等,促進(jìn)學(xué)生掌握相應(yīng)的理論知識(shí),提高算法實(shí)踐能力;對(duì)應(yīng)的多樣化的考核形式也更加激發(fā)學(xué)生的學(xué)習(xí)熱情和興趣,并能夠從多個(gè)角度反饋學(xué)生的學(xué)習(xí)情況。
關(guān)鍵詞: 數(shù)據(jù)結(jié)構(gòu); 應(yīng)用型本科; 人才培養(yǎng); 算法實(shí)踐能力
中圖分類號(hào):TP311.13? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A? ? ?文章編號(hào):1006-8228(2020)11-95-03
Abstract: Based on the practical background of application-oriented undergraduate talents training, this paper improves the training scheme, teaching method and assessment method of data structure course, and proposes a method and assessment scheme to strengthen the algorithm practice ability. The method combines with the knowledge points of data structure and mathematics, and programming technology to promote students to master the corresponding theoretical knowledge and improve the algorithm practice ability; the corresponding diversified assessment forms also stimulate students' enthusiasm and interest in learning, and can also feedback students' learning situation from multiple angles.
Key words: data structure; application-oriented undergraduate; talent training; algorithm practice ability
0 引言
數(shù)據(jù)結(jié)構(gòu)課程作為一門計(jì)算機(jī)相關(guān)專業(yè)的核心基礎(chǔ)課程,與其他基礎(chǔ)課程一樣,具有理論性強(qiáng),內(nèi)容抽象,知識(shí)點(diǎn)多而復(fù)雜的特性。數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)專業(yè)教學(xué)中的關(guān)鍵課程,也是構(gòu)建高效率算法的必要基礎(chǔ),所涉及的知識(shí)在相關(guān)專業(yè)的課程系統(tǒng)中始終處于核心位置。近些年,數(shù)據(jù)結(jié)構(gòu)課程的實(shí)現(xiàn)語言不斷發(fā)展,從Pascal到C、C++、JAVA,甚至Python語言。語言越來越先進(jìn),講授的內(nèi)容越來越精簡,但是數(shù)據(jù)結(jié)構(gòu)技術(shù)應(yīng)用實(shí)踐仍然是一個(gè)令學(xué)生頭疼的事情。無論老師采用什么語言講授,對(duì)于學(xué)生而言,數(shù)據(jù)結(jié)構(gòu)的理論知識(shí)依然比較晦澀難懂,無法從抽象的理論知識(shí)向具體的代碼順利過渡,這是一個(gè)很現(xiàn)實(shí)的問題。
針對(duì)上述現(xiàn)象,很多專家和學(xué)者進(jìn)行了數(shù)據(jù)結(jié)構(gòu)課程的教學(xué)研究和改進(jìn)。主要有將數(shù)據(jù)結(jié)構(gòu)實(shí)踐教學(xué)分為七個(gè)步驟的螺旋式教學(xué)過程[1],將理論性、實(shí)踐性和娛樂性有機(jī)結(jié)合采用教輔系統(tǒng)的方式[2],在課程中引入項(xiàng)目驅(qū)動(dòng)教學(xué)方法[3],對(duì)實(shí)驗(yàn)教學(xué)目標(biāo)和內(nèi)容進(jìn)行了分層設(shè)計(jì)的教學(xué)方法[4]等等。
在應(yīng)用型本科高校轉(zhuǎn)型發(fā)展的現(xiàn)實(shí)背景下,很多高校都在由傳統(tǒng)形態(tài)大學(xué)向應(yīng)用技術(shù)型大學(xué)轉(zhuǎn)變。轉(zhuǎn)型的本質(zhì)是讓培養(yǎng)的學(xué)生更加符合社會(huì)經(jīng)濟(jì)發(fā)展的需要,而轉(zhuǎn)型的核心是人才培養(yǎng)模式的改革,培養(yǎng)真正的應(yīng)用型人才。
在原有多樣化的教學(xué)方式中,繼續(xù)改進(jìn)一種更適合應(yīng)用型人才的培養(yǎng)方案,提高學(xué)生雙向重構(gòu)的能力,既能對(duì)新知識(shí)進(jìn)行構(gòu)建,也能夠?qū)υ兄R(shí)和經(jīng)驗(yàn)進(jìn)行改造和重構(gòu)。以能力培養(yǎng)為核心,輔以基礎(chǔ)理論知識(shí),更注重知識(shí)的綜合運(yùn)用。并在此基礎(chǔ)上,設(shè)計(jì)一種針對(duì)培養(yǎng)應(yīng)用型人才的數(shù)據(jù)結(jié)構(gòu)課程的考核方案以適應(yīng)新的改革需要。改變末端考核為過程考核,改變單一評(píng)價(jià)為多元評(píng)價(jià),更加重視運(yùn)用知識(shí)解決實(shí)際問題的能力考核。
本文在參考上述相關(guān)研究后,在原有多樣化的教學(xué)方式中提出一種算法實(shí)踐能力強(qiáng)化的方法,更加適合于應(yīng)用型人才的培養(yǎng)方案和考核方案,在采用以往多元化的教學(xué)方法如啟發(fā)式教學(xué)、任務(wù)驅(qū)動(dòng)式教學(xué)、項(xiàng)目驅(qū)動(dòng)式教學(xué)等的基礎(chǔ)上,引導(dǎo)學(xué)生親歷從數(shù)據(jù)結(jié)構(gòu)到算法,從算法到程序的過程,使學(xué)生明白算法與程序不等價(jià),理解數(shù)據(jù)結(jié)構(gòu)和算法的關(guān)系, 明白算法和程序之間的區(qū)別和聯(lián)系。實(shí)現(xiàn)對(duì)新知識(shí)和新信息的構(gòu)建,重構(gòu)原有的知識(shí)和經(jīng)驗(yàn),強(qiáng)化其算法實(shí)踐能力。
1 算法實(shí)踐能力強(qiáng)化方法的提出
1.1 算法實(shí)踐能力強(qiáng)化方法
算法實(shí)踐能力的強(qiáng)化是構(gòu)建在多個(gè)條件之上的:數(shù)據(jù)結(jié)構(gòu)的非數(shù)值數(shù)據(jù)集及存儲(chǔ)結(jié)構(gòu)、數(shù)學(xué)知識(shí)、技術(shù)、閱讀和模仿、調(diào)試。
⑴ 非數(shù)值數(shù)據(jù)集及存儲(chǔ)結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)課程研究的是非數(shù)值計(jì)算的數(shù)據(jù)元素和它們之間的關(guān)系,以及運(yùn)算問題。因此,針對(duì)數(shù)據(jù)結(jié)構(gòu)算法實(shí)踐能力的培養(yǎng),在程序設(shè)計(jì)中也是以非數(shù)值數(shù)據(jù)集的運(yùn)算為主。
⑵ 數(shù)學(xué)知識(shí)。算法的編程實(shí)現(xiàn),需要有流程。這個(gè)流程與數(shù)學(xué)有關(guān),只有掌握了數(shù)學(xué)原理才能把實(shí)際問題抽象為編程算法。所以,算法實(shí)踐能力也與數(shù)學(xué)基礎(chǔ)的好壞有關(guān)。當(dāng)然,數(shù)學(xué)不好也不必灰心,因?yàn)檫@兩者可以相互促進(jìn),學(xué)好編程也可以督促和帶動(dòng)數(shù)學(xué)的學(xué)習(xí)。
⑶ 技術(shù)。算法實(shí)踐的關(guān)鍵是技術(shù),而不是知識(shí),更不是結(jié)構(gòu)和語法。但技術(shù)的實(shí)施是構(gòu)建在非數(shù)值數(shù)據(jù)集及存儲(chǔ)結(jié)構(gòu)知識(shí)基礎(chǔ)之上的。
⑷ 閱讀和模仿。提高編碼的能力,最容易想到的一個(gè)方法就是編寫更多的代碼。還有一種能提高編碼能力的方法就是閱讀別人的代碼,這個(gè)方法能讓自己的編程能力得到明顯的提升。在模仿前先分析算法,嘗試獨(dú)立編程,得不到結(jié)果也沒有關(guān)系,重點(diǎn)是促進(jìn)思考。然后再去研究經(jīng)典案例的代碼,分析其算法和實(shí)現(xiàn)方式,跟自己編寫的代碼相比孰優(yōu)孰劣。最后,再次完善自己編寫的代碼,查看運(yùn)行結(jié)果。
在學(xué)習(xí)過程中,多找經(jīng)典案例,先模仿經(jīng)典代碼編寫。一開始編寫能力也許不會(huì)明顯提高編碼,可能感覺沒有太大作用。有時(shí)候即使對(duì)照著輸入也不能得出正確的結(jié)果,這種情況,大多數(shù)是在細(xì)節(jié)上沒有做好,比如漏掉了小符號(hào)或漢英不分,標(biāo)點(diǎn)符號(hào)或者大小寫的問題等。多次模仿會(huì)逐漸地糾正編程的壞習(xí)慣,從而養(yǎng)成注意細(xì)節(jié)的好習(xí)慣。
⑸ 調(diào)試。算法實(shí)踐能力的培養(yǎng),還需要學(xué)會(huì)調(diào)試,比如最基本的斷點(diǎn),去調(diào)試代碼,然后就會(huì)發(fā)現(xiàn)自己認(rèn)為很嚴(yán)謹(jǐn)?shù)乃惴ê痛a其實(shí)存在很多問題。在此基礎(chǔ)上繼續(xù)修改,再次調(diào)試。等得出結(jié)果后,就會(huì)獲得很強(qiáng)的成就感。
本文提出的算法實(shí)踐能力的強(qiáng)化方法就是結(jié)合數(shù)學(xué)知識(shí),運(yùn)行相應(yīng)的軟件開發(fā)工具,結(jié)合通過抽象-聯(lián)想法[5]理解掌握數(shù)據(jù)結(jié)構(gòu)的理論基礎(chǔ)知識(shí),不斷的閱讀和模仿程序、調(diào)試程序,以達(dá)到解決問題的目的。
1.2 數(shù)據(jù)結(jié)構(gòu)課程考核方案的改進(jìn)
學(xué)生課程的考核是整個(gè)教學(xué)活動(dòng)中十分重要的一環(huán),對(duì)學(xué)生的教育和培養(yǎng)起著舉足輕重的作用,而且對(duì)教學(xué)發(fā)揮著指揮棒的功能。傳統(tǒng)的計(jì)算機(jī)專業(yè)基礎(chǔ)課程的考核方案一般都是受到傳統(tǒng)授課模式和考試模式的影響,以考試為主。專業(yè)基礎(chǔ)課的考核,不是為了甄別、選拔學(xué)生,而是為了促進(jìn)學(xué)生在專業(yè)技能上的全面發(fā)展。以考試為主的傳統(tǒng)評(píng)價(jià)方式,容易讓學(xué)生養(yǎng)成開學(xué)松懈,期末緊張,突擊復(fù)習(xí)的狀態(tài)。而這遠(yuǎn)遠(yuǎn)達(dá)不到應(yīng)用型人才的培養(yǎng)目標(biāo)。
考核方案的設(shè)置必須由專業(yè)教師在課程建設(shè)過程中商討來確定。課程考核要求盡早告知學(xué)生,讓學(xué)生有一定的心理準(zhǔn)備,讓他們從一開始就能夠意識(shí)到該課程的考核不是“一考定終身”,而是全方位的考核。如此學(xué)生就可以在課程學(xué)習(xí)的開始就注意自己在各個(gè)方面的學(xué)習(xí)和表現(xiàn)??己诵问胶头椒ǖ亩鄻踊梢约ぐl(fā)學(xué)生的學(xué)習(xí)熱情和興趣,并從多個(gè)角度反饋學(xué)生的學(xué)習(xí)情況。我們對(duì)學(xué)生在該課程的成績評(píng)定過程中實(shí)行綜合的評(píng)定方法。如表1所示。
調(diào)整之后的考核方案中,平時(shí)成績包括考勤、課堂表現(xiàn)、回答問題考核、作業(yè)考核、平時(shí)上機(jī)實(shí)驗(yàn)考核、上機(jī)學(xué)習(xí)態(tài)度等;期末考試由閉卷筆試完成,主要以考查知識(shí)點(diǎn)的理解和運(yùn)用為主;上機(jī)考核以實(shí)際的情景題引入問題,考查學(xué)生如何利用所學(xué)的理論知識(shí)解決實(shí)際問題。
在該方案中可以明顯的看出應(yīng)用型人才的培養(yǎng)更加看重學(xué)生上機(jī)實(shí)踐的訓(xùn)練。表面上看僅僅是增加了上機(jī)的比重,但是經(jīng)過前期的大量調(diào)研,參與數(shù)據(jù)結(jié)構(gòu)課程建設(shè)小組的老師多次討論并修改了教學(xué)大綱,在授課過程中強(qiáng)調(diào)算法的重要性,增加算法的講解和練習(xí)。針對(duì)應(yīng)用型本科人才的培養(yǎng)方案,最終形成了多樣化的考核模式。
2 算法實(shí)踐能力強(qiáng)化方法的實(shí)施與效果分析
2.1 算法實(shí)踐能力強(qiáng)化方法的實(shí)施
在數(shù)據(jù)結(jié)構(gòu)課程中涉及的知識(shí)點(diǎn)較多,數(shù)據(jù)元素相互之間的關(guān)系分為一對(duì)一、一對(duì)多、多對(duì)多,涉及到線性表、棧、隊(duì)列、樹、圖,以及對(duì)這些結(jié)構(gòu)的各種操作,如創(chuàng)建、插入、刪除、查找、求長度等。在講授過程中,這些信息都是逐漸被學(xué)生所接收和理解的,對(duì)于掌握不是很好的學(xué)生而言很難將這些信息串聯(lián)起來,形成一個(gè)系統(tǒng)的知識(shí)體系。因此,要求專業(yè)教師在平時(shí)的授課過程中采用各種教學(xué)方法和手段將所有的知識(shí)點(diǎn)進(jìn)行系統(tǒng)講解,使學(xué)生能夠面對(duì)實(shí)際問題進(jìn)行分析時(shí),能條件反射似的運(yùn)用數(shù)據(jù)結(jié)構(gòu)課程里的知識(shí)點(diǎn)。然后以程序員的設(shè)計(jì)思路對(duì)問題進(jìn)行總體結(jié)構(gòu)分析,甚至于設(shè)計(jì)相應(yīng)的用戶界面。這個(gè)過程本身也是軟件設(shè)計(jì)的綜合訓(xùn)練。
在算法實(shí)踐能力強(qiáng)化方法實(shí)踐的過程中,要求學(xué)生進(jìn)行下面一系列的學(xué)習(xí)步驟。
Step1:問題分析和任務(wù)定義;
Step2:數(shù)據(jù)類型設(shè)計(jì)和系統(tǒng)設(shè)計(jì);
Step3:編碼實(shí)現(xiàn)和靜態(tài)檢查;
Step4:上機(jī)準(zhǔn)備和代碼調(diào)試;
Step5:總結(jié)任務(wù)、整理實(shí)驗(yàn)報(bào)告。
上述學(xué)習(xí)步驟實(shí)施后,效果均可以在解決實(shí)際問題中得以體現(xiàn),這些實(shí)際問題包括學(xué)生信息管理、航班信息查詢與購票、銀行排隊(duì)、回文數(shù)猜想、約瑟夫問題、停車場管理、魔方陣、本科生導(dǎo)師制問題、家族關(guān)系查詢、地鐵建設(shè)、校園導(dǎo)航等。
授課老師在講授數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)知識(shí)之前,會(huì)依據(jù)學(xué)生的具體情況進(jìn)行分析和討論,有針對(duì)性的調(diào)整方案和實(shí)驗(yàn)內(nèi)容,以符合當(dāng)前學(xué)生的實(shí)際情況。在學(xué)習(xí)過程中,授課老師會(huì)在課堂里依據(jù)學(xué)生不同的學(xué)習(xí)狀態(tài)采用合適的教學(xué)方法,如“引導(dǎo)式”、“啟發(fā)式”、“項(xiàng)目代入法”、“抽象-聯(lián)想法”、“情景案例”等。一般對(duì)于理論基礎(chǔ)型的課程,我們建議采用自底向上的方式進(jìn)行學(xué)習(xí),但是對(duì)于算法實(shí)踐能力的培養(yǎng),我們建議采用相反的方向即自頂向下的方式進(jìn)行學(xué)習(xí):先了解前沿技術(shù)和發(fā)展方向,讀取經(jīng)典的優(yōu)質(zhì)開源學(xué)習(xí)資源和優(yōu)質(zhì)代碼,參考最佳實(shí)踐,總結(jié)各自學(xué)習(xí)內(nèi)容作為知識(shí)輸出。以實(shí)例驅(qū)動(dòng)學(xué)習(xí),只關(guān)注編寫的代碼能夠做什么能夠?qū)崿F(xiàn)什么。堅(jiān)持下來,就可以在算法實(shí)踐能力的強(qiáng)化方面有長足的進(jìn)步。
2.2 算法實(shí)踐能力強(qiáng)化方法實(shí)施的效果分析
以我校作為二本院校實(shí)施的應(yīng)用型人才培養(yǎng)為例,2018年-2020年期間對(duì)17級(jí)、18級(jí)本科近千名計(jì)算機(jī)學(xué)院學(xué)生的數(shù)據(jù)結(jié)構(gòu)課程進(jìn)行了算法實(shí)踐能力強(qiáng)化方法的教學(xué)建設(shè)和改進(jìn),也以此對(duì)該課程的考核方式進(jìn)行了調(diào)整。經(jīng)過三年的嘗試,學(xué)生在學(xué)習(xí)過程中也遇到很多瓶頸和疑惑,我們對(duì)出現(xiàn)的問題進(jìn)行分析和討論,及時(shí)調(diào)整方案和考核方式的具體實(shí)施細(xì)節(jié),使得學(xué)生在數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)效果和算法設(shè)計(jì)和編寫能力上得到了顯著的提高。在2017年未實(shí)施算法實(shí)踐能力的方法和考核方案,學(xué)生的編程能力普遍比較薄弱。2018年開始實(shí)施后,雖然學(xué)生的整體水平與往年相比不占優(yōu)勢,仍然取得了一定的效果,如表2所示。
從表2可以看出,在對(duì)已有的教學(xué)方法改進(jìn)之初,所取得的成績沒有很明顯的變化。和編寫程序一樣,只有根據(jù)學(xué)生的具體情況不斷的調(diào)整調(diào)試,不斷地改進(jìn),才會(huì)使學(xué)生更加容易掌握理論知識(shí),進(jìn)而提高其編程能力。
3 結(jié)論
本文針對(duì)數(shù)據(jù)結(jié)構(gòu)課程的算法實(shí)踐能力強(qiáng)化方法進(jìn)行了研究和實(shí)施,完成了以下工作:
⑴ 對(duì)數(shù)據(jù)結(jié)構(gòu)涉及的知識(shí)點(diǎn)和相關(guān)算法進(jìn)行了相應(yīng)的教學(xué)方法的完善和改進(jìn);
⑵ 提出了一種數(shù)據(jù)結(jié)構(gòu)課程的算法實(shí)踐能力強(qiáng)化方法和對(duì)應(yīng)的考核方案;
⑶ 數(shù)據(jù)結(jié)構(gòu)課程組的教師用三年的教學(xué)實(shí)踐,摸索出提高計(jì)算機(jī)專業(yè)學(xué)生的算法實(shí)踐能力的教學(xué)經(jīng)驗(yàn)。
重視算法設(shè)計(jì)考核模式,不僅有利于培養(yǎng)學(xué)生的優(yōu)良學(xué)風(fēng),減輕學(xué)生畏懼學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)、畏懼編程的心理,而且由于考查的知識(shí)點(diǎn)多且知識(shí)面寬,對(duì)學(xué)生的總評(píng)成績更客觀。這種考核模式學(xué)習(xí)既能體現(xiàn)專業(yè)基礎(chǔ)知識(shí)的重要性,也能體現(xiàn)出綜合能力培養(yǎng)的重要性,同時(shí),對(duì)任課教師也提出了更高的要求。專業(yè)教師不僅要對(duì)專業(yè)內(nèi)容要有很深的理解,同時(shí)還需要緊隨社會(huì)、行業(yè)的需求,精心準(zhǔn)備專業(yè)內(nèi)容,有針對(duì)性地對(duì)學(xué)生進(jìn)行綜合訓(xùn)練和培養(yǎng)。
參考文獻(xiàn)(References):
[1] 張玉華.數(shù)據(jù)結(jié)構(gòu)課程實(shí)踐的螺旋式教學(xué)[J].計(jì)算機(jī)教育,2019.8:98-102
[2] 張瑞霞,周婭,唐麟.基于數(shù)據(jù)結(jié)構(gòu)教輔系統(tǒng)的實(shí)驗(yàn)課程改革[J].計(jì)算機(jī)教育,2016.4:68-70
[3] 陳娟,殷鵬.數(shù)據(jù)結(jié)構(gòu)與算法綜合實(shí)踐教學(xué)設(shè)計(jì)與實(shí)施[J].辦公自動(dòng)化,2018.23(23):18-20
[4] 張華,張淼,張巖,初佃輝,鄭宏珍,張策.數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)教學(xué)研究與實(shí)踐[J].實(shí)驗(yàn)技術(shù)與管理,2018.35(5):218-221
[5] 肖璞,葉傳標(biāo).抽象-聯(lián)想法教學(xué)模式的探索與實(shí)踐[J].三江高教,2013.4:15-18