摘要:傳統(tǒng)的數據結構教學方法存在理論與實踐脫節(jié)、學生動力不足等問題,而編程比賽作為一種具有挑戰(zhàn)性和競爭性的學習環(huán)境,為學生提供了實踐應用數據結構理論的機會。通過設計合適的教學模式,將編程比賽與數據結構課程相結合,可以激發(fā)學生的學習熱情,提高他們的編程能力和問題解決能力。本文對基于編程比賽的Java版數據結構教學模式的設計和實施過程進行了研究,并評估了其對學生學習成果的影響。研究結果表明,該教學模式能夠有效提升學生的數據結構應用能力和編程技巧,為學生參與編程比賽和實際軟件開發(fā)奠定堅實基礎。
關鍵詞:數據結構;Java;編程比賽;教學模式
引言
2021年4月,全國職業(yè)教育大會提出,要推動“崗課賽證”融通,提高教育質量;同年10月,中共中央辦公廳、國務院辦公廳在《關于推動現(xiàn)代職業(yè)教育高質量發(fā)展的意見》中又指出,要完善“崗課賽證”綜合育人機制。以編程比賽為基礎的教學模式能夠以大賽標準為課程考核標準,有效將“賽”和“課”融通[1]。
在現(xiàn)代計算機科學教育中,數據結構是一門基礎而重要的課程,為學生提供了解決復雜問題和優(yōu)化算法的基礎知識和技能。然而,傳統(tǒng)的數據結構教學方法往往偏重理論和概念的講解,學生在實踐應用方面存在挑戰(zhàn)。此外,學生的學習動力也常常受到影響,缺乏對數據結構實際應用的興趣和激情。因此,尋找一種能夠激發(fā)學生學習興趣和提高實踐能力的教學模式具有重要意義。
基于編程比賽的Java版數據結構的實現(xiàn)更加簡潔和易于管理,比如提供了集合框架(collection framework)和泛型(generics)等功能。Java采用垃圾回收機制來管理內存,不需要手動分配和釋放內存。Java擁有規(guī)模龐大、功能強大的類庫,提供了豐富的數據結構和實現(xiàn)算法,如鏈表、樹、堆、哈希表等[2]。通過將編程比賽與數據結構課程相結合,可以激發(fā)學生的學習熱情,提高他們的編程能力和問題解決能力。同時,我們也希望通過這種教學模式培養(yǎng)學生的團隊合作能力、創(chuàng)新思維和競爭意識。
1. 數據結構教學概述
數據結構在計算機科學教育中具有重要性,已得到廣泛研究和認可。有研究表明,數據結構的學習可以幫助學生發(fā)展算法設計和分析的能力,提高程序設計的效率和質量,以及應用數據結構解決實際問題。然而,教學數據結構也面臨一些挑戰(zhàn)和需求,學生對于數據結構的抽象概念可能存在理解困難。因此,研究者提出了各種教學方法和策略,如引入實際案例、問題驅動學習和編程比賽等,以提高學生的學習興趣和動力。此外,教師還需要提供適當的實踐環(huán)境和工具支持,以幫助學生應用和實踐不同的數據結構。
2. 編程比賽的作用和意義
2.1 編程比賽在學生編程能力培養(yǎng)中的作用
(1)實戰(zhàn)經驗。編程比賽提供了一個實戰(zhàn)的平臺,讓學生能夠在真實的競爭環(huán)境中應用和展示他們的編程能力。這有助于學生將課堂學習中的理論知識轉化為實際的編程實踐,加深對數據結構的理解和應用。
(2)解決問題能力。編程比賽通常涉及解決復雜的問題和算法挑戰(zhàn),要求學生能夠分析問題、設計算法,并實現(xiàn)高效的程序[3]。通過參與比賽,學生可以鍛煉和提高問題解決能力,培養(yǎng)創(chuàng)新思維和團隊合作精神。
(3)學習和分享經驗。在編程比賽中,學生可以與其他參賽者交流和分享編程經驗、優(yōu)化算法的方法等。這有助于學生從其他人的經驗中學習,拓寬視野,發(fā)現(xiàn)自己的不足,并改進自己的編程技能和策略。
2.2 編程比賽對數據結構教學的價值和意義
(1)提高學習動力。編程比賽可以激發(fā)學生對數據結構的學習興趣和動力。比賽中的挑戰(zhàn)和競爭使學生更加積極主動地學習和應用數據結構,追求更高的成績和排名,從而提高他們的學習效果和投入程度。
(2)實踐應用。編程比賽要求學生在規(guī)定時間內解決問題并提交代碼。這種實踐應用的方式可以幫助學生將數據結構的知識轉化為實際的編程實踐,加深對數據結構的理解和掌握。
(3)鍛煉綜合能力。編程比賽不僅要求學生掌握數據結構的知識,還需要他們具備分析問題、設計算法、實現(xiàn)代碼的能力。參與編程比賽可以培養(yǎng)學生的綜合能力,提高他們的問題解決能力和編程技巧。
3. 基于編程比賽的Java版數據結構教學模式設計
3.1 設計教學模式的目標和原則
設計教學模式的主要目標是通過編程比賽的形式,激發(fā)學生的學習興趣,促使他們深入理解數據結構的原理和應用。通過編程比賽的實踐,讓學生掌握數據結構的實際應用,培養(yǎng)他們解決實際問題的能力。該教學模式應當遵循以下原則[4]:
(1)實踐導向原則:注重學生的實踐能力培養(yǎng),將理論知識與實際編程相結合,使學生能夠熟練運用數據結構解決實際問題。
(2)競爭激勵原則:通過編程比賽的競爭機制,激發(fā)學生的學習動力和競爭意識,推動他們不斷提升自己的編程能力。
(3)個性化學習原則:根據學生的不同水平和需求,提供個性化的學習支持和指導,讓每個學生都能在比賽中找到適合自己的學習路徑。
(4)團隊合作原則:鼓勵學生通過組隊參與編程比賽,培養(yǎng)他們的團隊合作能力和溝通協(xié)作能力,提高整體的學習效果。
3.2 教學內容和案例的選擇
基于比賽中需要用到職業(yè)崗位任務中的知識點,教學內容應包括基本的數據結構:數組、鏈表、棧和隊列;查找和排序算法:二分查找、冒泡排序、快速排序,以及通過時間復雜度和空間復雜度來比較不同的排序算法;樹和圖的應用:二叉樹、AVL樹、圖的鄰接矩陣和鄰接表表示方式,以及圖的深度優(yōu)先搜索和廣度優(yōu)先搜索算法[5]。根據學生基礎能力,可以適當刪減部分內容,比如高職院校學生如果數學基礎較差,就可以不深入講解圖的相關知識。
案例的選擇應該兼顧內容的難易度、實用性和趣味性,使學生在逐步掌握應用數據結構知識的同時能保持學習的興趣和動力。比如讓學生利用數據結構和算法解決迷宮問題,如使用?;蜿犃袑崿F(xiàn)迷宮路徑的搜索;讓學生利用棧實現(xiàn)表達式的計算,包括中綴表達式轉后綴表達式等。
3.3 教學環(huán)境和工具的配置
合適的教學環(huán)境和工具的配置對于學生的學習和實踐非常重要,以下是一些建議:
(1)在線評測系統(tǒng):結合在線評測系統(tǒng),如HackerRank、LeetCode或Codeforces,為學生提供數據結構相關的編程題目,并自動評測學生的代碼。
(2)虛擬化環(huán)境:配置一個虛擬化環(huán)境,如VirtualBox或Docker,用于快速創(chuàng)建和管理虛擬機,為學生提供統(tǒng)一的實驗環(huán)境,并降低配置和部署的復雜性。
(3)教學平臺:使用一個教學管理系統(tǒng)(如Moodle)來組織課程內容、發(fā)布作業(yè)和獲取學生反饋。這樣可以集中管理教學資源和學生作業(yè),并為學生提供及時的反饋和評估。
(4)集成開發(fā)環(huán)境(IDE):選擇一個功能強大且易于使用的Java集成開發(fā)環(huán)境,例如Eclipse、IntelliJ IDEA。這些IDE提供了編碼、調試和項目管理等功能,方便學生進行數據結構的編程實踐。
(5)版本控制工具:配置一個版本控制工具,如Git,用于管理學生的代碼版本和協(xié)作,也可以托管代碼,可以保證學生的代碼安全,并支持多人合作開發(fā)[6]。
4. 實施和評估
4.1 教學模式的實施過程
制定明確的教學目標和計劃,確定課程的內容、教學方法和評估方式,設計合適的案例。利用案例講解數據結構的基本概念、算法和應用場景,向學生介紹Java編程語言的相關知識和技巧。選擇一些與數據結構相關的編程題目作為編程比賽的項目,將學生分為小組或團隊,每個團隊由3~4名學生組成,教師提供指導和輔導,幫助學生理解題目要求,提供解題思路和算法設計的指導,學生團隊在規(guī)定的時間內完成編程比賽項目[7]。教師對學生的編程比賽項目進行評估,并提供及時的反饋和建議。學生團隊分享他們在編程比賽中的經驗和教訓,討論解題思路、算法優(yōu)化和代碼實現(xiàn)等方面的問題。
4.2 總結學生的學習成果和反饋并評估教學模式對學生編程能力的影響
對學生完成的編程作品進行評估,包括代碼的正確性、功能的實現(xiàn)程度、算法的優(yōu)化等方面,也可以提供一個評估表或問卷,讓學生評估自己在不同方面的能力提升和學習收獲,例如編程技巧、算法設計、問題解決能力等[8]。然后通過問卷調查、小組討論或個別面談的方式收集學生的反饋,了解他們對教學模式的感受和看法。通過對學習成績的統(tǒng)計分析,可以了解學生的整體學習情況和能力提升情況。最后觀察學生在課堂上的參與度、學習態(tài)度和問題解決能力,并記錄相關的觀察結果。根據學生的學習成果和反饋,以及對教學模式的評估結果,進行教學模式的改進和調整??梢葬槍W生的需求和問題,優(yōu)化教學內容、教學方法和評估方式,以提高教學效果和學生的編程能力[9]。
5. 教學模式的優(yōu)勢和局限性
基于編程比賽的教學模式提供了一個創(chuàng)新和探索的空間,學生可以嘗試不同的算法和數據結構,挑戰(zhàn)自己的編程能力。學生通過參與比賽,追求優(yōu)秀的成績和排名,從而更加積極主動地學習數據結構和算法知識。通過實際編碼的過程,學生可以更深入地理解和掌握數據結構的原理和應用。通過解決復雜的編程問題和算法的過程,學生可以培養(yǎng)自己的問題解決能力和創(chuàng)新思維[10]。通過團體競賽項目可以培養(yǎng)學生的團隊合作能力、溝通能力和協(xié)作能力,提高他們在實際工作中的綜合能力。學生的比賽結果會被實時評估和排名,他們可以及時得到反饋和評估結果。這種實時反饋和評估機制有助于學生及時發(fā)現(xiàn)和糾正自己的問題,促進他們的學習和成長。
同時,這種教學模式也存在一定的挑戰(zhàn),編程比賽的競爭性質可能會使學生感到壓力和焦慮。他們可能過度關注比賽結果而忽視了學習過程中的深入理解和知識應用。數據結構作為一個廣泛的領域,涵蓋了多種數據結構和算法,但是編程比賽通常會著重解決特定類型的問題,缺乏全面性。編程比賽的評估和反饋通常以比賽結果和排名為主,而缺乏對學生知識和技能的全面評估??梢钥紤]引入包括作業(yè)、項目和實踐等更全面的評估方式,以提供更準確的學生反饋和個性化的指導[11]。教師的培訓和支持會帶來額外的成本,基于編程比賽的教學模式需要教師具備豐富的數據結構和編程知識,并熟悉比賽規(guī)則和評估標準。因此,對教師的培訓和支持是必要的,以確保他們能夠有效地指導學生,并提供必要的技術支持。
6. 結果與討論
基于編程比賽的Java版數據結構課程教學模式在實施過程中取得了積極的效果。
(1)通過參與編程比賽,學生得到了大量編程實踐機會,鍛煉和提升了編程能力,學會了如何將數據結構和算法知識應用于實際問題的解決中,提高了代碼的效率和質量。
(2)編程比賽要求學生解決復雜的編程問題,這促使他們深入理解不同數據結構的原理和應用。通過實踐的過程,學生加深了對數據結構的認識,并能夠選擇和應用適當的數據結構來解決問題。
(3)編程比賽通常以團隊為單位進行,學生需要與隊友合作,共同解決問題。這培養(yǎng)了學生的團隊合作精神、溝通能力和協(xié)作能力,提高了他們在團隊合作中的表現(xiàn)和貢獻。
(4)編程比賽中的問題通常具有一定難度和復雜性,學生需要通過分析、設計和實現(xiàn)來解決這些問題。這培養(yǎng)了學生的問題解決能力和創(chuàng)新思維,使他們能夠獨立思考并提出有效的解決方案。
(5)編程比賽中,學生的編程作品會被實時評估和排名,他們可以及時得到反饋和評估結果。這種實時反饋有助于學生發(fā)現(xiàn)和糾正問題,并促進他們的學習和進步。
(6)激發(fā)學習興趣和動力:編程比賽的競爭性和實踐性激發(fā)了學生的學習興趣和動力。學生通過參與比賽,追求優(yōu)秀的成績和排名,更加積極主動地學習數據結構和算法知識。
教育部鼓勵高校開展以賽促教、以賽促學的教學模式,將比賽與教學相結合,提高教學質量和學生創(chuàng)新能力?;诰幊瘫荣惖腏ava版數據結構課程教學模式,符合這一政策導向。而且這種教學模式通常需要與外部機構或企業(yè)進行合作,提供實踐機會和項目支持,這種合作可以促進高校與社會的緊密聯(lián)系,拓展學生的社會實踐機會,為他們提供更廣闊的職業(yè)發(fā)展平臺,所以這種教學模式有望得到更廣泛的推廣和應用。需要注意的是,教學模式的實施效果和學生學習成果受多種因素的影響,如教師的指導和支持、學生的學習態(tài)度和能力等。因此,在實施教學模式時,需要綜合考慮這些因素,并根據實際情況進行適當調整和優(yōu)化,以最大限度地提高實施效果和學生學習成果。
結語
高校承擔著為社會提供高質量人才的重任。為了更好地滿足軟件工程專業(yè)人才培養(yǎng)的需求,文章對軟件工程系學生的數據結構課程的課堂教學設計以及教學方法展開了討論,將各種現(xiàn)代化的教育技術手段和方式綜合應用到了教學中。以Java為基礎,構建了程序設計類課程體系,并制訂了與市場需要相匹配的培養(yǎng)計劃,這對保證軟件人才培養(yǎng)的質量有著十分重要的作用。所以,教師應該努力將這門課程逐漸打造成一門對學生有益的、能更好地幫助學生增長知識、提高能力的“金課”,為培養(yǎng)出社會所需的高品質人才而不斷改進與創(chuàng)新。
參考文獻:
[1]中共中央辦公廳 國務院辦公廳印發(fā)《關于推動現(xiàn)代職業(yè)教育高質量發(fā)展的意見》[A/OL].(2021-10-21) [2023-07-19).https://www.gov.cn/gongbao/content/2021/content_5647348.htm.
[2]陳仕軍,陶茂虎,王前.基于python語言版“數據結構與算法”的教學改革與實踐[J].湖北工程學院學報,2022,42(3):58-62.
[3]段韶鵬,溫文豪,軒春青,等.基于Java的混合數據結構教學演示系統(tǒng)優(yōu)化設計[J].信息與電腦,2019,(1):100-101.
[4]胡建華,鄢旭.基于數據結構與簡化內存模型的Java集合教學方法研究[J].計算機教育,2018,(5):30-32.
[5]丁子康,杜梅.Java教學與數據結構教學的銜接與融合[J].信息與電腦,2018,(4):202-203,206.
[6]沈靜,李陬.基于Java語言的獨立學院《數據結構》教學改革和實踐[J].福建電腦,2015,(5):58-59,14.
[7]滑亞慧,石鋒,王建.基于工程認證的“數據結構”課程教學改革實踐[J].教育教學論壇,2022,(44):54-57.
[8]路紅,劉紅英.基于OBE理念的數據結構課程教學改革研究[J].電腦與電信,2022,(4):29-32.
[9]熊回香,葉佳鑫.信息管理類專業(yè)數據結構課程教學改革探索[J].計算機教育,2022,(3):11-14.
[10]楊智明,楊天晴.工程教育專業(yè)認證背景下數據結構課程教學改革探析[J].文化創(chuàng)新比較研究,2021,5(32):82-85.
[11]陳黎黎,國紅軍.OBE理念下軟件工程專業(yè)“數據結構與算法”課程教學改革研究[J].遼寧科技學院學報,2021,23(5):38-40.
作者簡介:董劍波,本科,助教,研究方向:計算機方向課程設置。