摘要:生成式AI作為新興的人工智能模型,可生成諸如文本、圖像等新數(shù)據(jù),引發(fā)教育界的關(guān)注。本文探討了如何利用CodeGeeX這一專門輔助軟件開發(fā)的生成式AI產(chǎn)品,助力數(shù)據(jù)結(jié)構(gòu)教學(xué),提升教學(xué)效果。借助CodeGeeX的智能生成算法代碼、自動添加代碼注釋、智能解釋代碼、分析修復(fù)代碼Bug以及實時智能問答等功能,教師可以更有效地引導(dǎo)學(xué)生深入理解基本數(shù)據(jù)結(jié)構(gòu)的概念,熟練掌握其應(yīng)用,解決實際問題,有助于提高教學(xué)質(zhì)量和學(xué)生的學(xué)習(xí)效果。
關(guān)鍵詞:生成式AI;CodeGeeX;數(shù)據(jù)結(jié)構(gòu);輔助教學(xué)
引言
“數(shù)據(jù)結(jié)構(gòu)”是計算機(jī)類相關(guān)專業(yè)的核心基礎(chǔ)課程,為后續(xù)學(xué)習(xí)操作系統(tǒng)、數(shù)據(jù)庫技術(shù)等專業(yè)課程奠定基礎(chǔ)。課程重點在于培養(yǎng)學(xué)生的計算思維和數(shù)據(jù)抽象能力,要求學(xué)生掌握數(shù)據(jù)結(jié)構(gòu)基本知識后,在實際問題中靈活選用數(shù)據(jù)結(jié)構(gòu),設(shè)計高效的算法和存儲結(jié)構(gòu),并準(zhǔn)確分析算法的時間和空間復(fù)雜度。該課程不僅是學(xué)生進(jìn)一步學(xué)習(xí)計算機(jī)領(lǐng)域其他課程前必備的基礎(chǔ),更是其從事大型信息工程開發(fā)的基礎(chǔ)[1]。
生成式AI是一類新興的人工智能模型,不僅可以理解和處理現(xiàn)有數(shù)據(jù),還能創(chuàng)造全新的數(shù)據(jù),包括文本、圖像、音頻、視頻等。ChatGPT作為其代表產(chǎn)品,能以對話的方式接收輸入,并生成連貫、合乎語境的文本回復(fù),模擬人類對話。隨后,文心一言、盤古、Bard等通用生成式AI產(chǎn)品以及Github Copilot、CodeGeeX等專門輔助軟件開發(fā)的生成式AI產(chǎn)品相繼問世。生成式AI不僅可以直接生成問題答案,甚至可以撰寫課程論文和參加線上考試,在教育界引發(fā)了一場是否應(yīng)在教育教學(xué)中應(yīng)用生成式AI的討論。雖然當(dāng)前觀點不一,但在高等教育數(shù)字化轉(zhuǎn)型的大趨勢下,如何有效利用生成式AI助力高等教育更快更好發(fā)展,是未來的主流研究方向[2]。
當(dāng)前已有研究人員開展如何運(yùn)用ChatGPT促進(jìn)以知識點為核心的教學(xué)模式變革研究[3]、如何將ChatGPT用于計算機(jī)輔助教學(xué)[4]、如何將文心一言應(yīng)用于數(shù)據(jù)結(jié)構(gòu)教學(xué)的探討[5],但對如何將專門輔助軟件開發(fā)的生成式AI應(yīng)用于教學(xué)還未有相關(guān)研究。本文以“數(shù)據(jù)結(jié)構(gòu)”課程為例,探討如何利用CodeGeeX輔助教學(xué),提高教學(xué)效果。
1. “數(shù)據(jù)結(jié)構(gòu)”課程教學(xué)現(xiàn)狀
“數(shù)據(jù)結(jié)構(gòu)”課程的教學(xué)目標(biāo)主要是引導(dǎo)學(xué)生掌握數(shù)據(jù)結(jié)構(gòu)的基本概念及其實現(xiàn),并培養(yǎng)他們的計算思維和解決問題的能力,為未來的學(xué)習(xí)和職業(yè)發(fā)展打下堅實基礎(chǔ)。然而,在教學(xué)實踐中仍存在以下問題:
(1)課程內(nèi)容繁多。數(shù)據(jù)結(jié)構(gòu)涉及的知識點非常多,包括線性表、棧和隊列、樹和二叉樹、圖等結(jié)構(gòu)的原理和實現(xiàn),以及查找和排序等應(yīng)用,學(xué)生在有限的課時內(nèi)掌握這些知識面臨較大挑戰(zhàn)。
(2)抽象思維理解難度大。數(shù)據(jù)結(jié)構(gòu)是一種抽象的概念,需要學(xué)生具備一定的抽象思維能力。在教學(xué)實踐中,雖然通過交互性課件、可視化算法執(zhí)行過程等多種方式幫助學(xué)生理解,但對很多學(xué)生來說理解算法仍然很有難度。
(3)編碼基礎(chǔ)薄弱。數(shù)據(jù)結(jié)構(gòu)是一門很注重實踐的課程,學(xué)生需要具備較好的編程能力來實現(xiàn)各種數(shù)據(jù)結(jié)構(gòu)和算法。然而,在教學(xué)實踐中,雖然學(xué)生已經(jīng)在前置課程中學(xué)習(xí)過C語言,但對于數(shù)據(jù)結(jié)構(gòu)中需要用到的指針、結(jié)構(gòu)體、遞歸等內(nèi)容普遍掌握較差,不能獨立編寫完整的算法,不會通過Debug解決代碼錯誤。
如何提高教學(xué)效果,提升學(xué)生實際學(xué)習(xí)成效,為后續(xù)專業(yè)課程學(xué)習(xí)做好準(zhǔn)備,是“數(shù)據(jù)結(jié)構(gòu)”課程教學(xué)改革亟須解決的問題。
2. CodeGeeX概念
CodeGeeX是一款基于ChatGLM2-6B模型的智能編程助手,經(jīng)過600B代碼數(shù)據(jù)的預(yù)訓(xùn)練,能夠自動生成和補(bǔ)全代碼、添加注釋、進(jìn)行代碼翻譯以及提供智能問答服務(wù)[6]。
CodeGeeX支持C/C++、Python、Java等主流編程語言,并采用插件形式集成到VSCode、HBuilderX、IntelliJ IDEA等多種IDE。安裝過程非常便捷,以VSCode為例,只需在擴(kuò)展界面中搜索并安裝即可使用,無須進(jìn)行復(fù)雜配置。
3. CodeGeex輔助教學(xué)實例
3.1 智能生成并優(yōu)化算法代碼,降低課程編碼能力要求
在算法實踐時,部分編碼能力較弱的學(xué)生需要花費(fèi)大量時間在編碼上,導(dǎo)致他們不能對算法進(jìn)行深入分析,影響了教學(xué)目標(biāo)的實現(xiàn)。CodeGeeX可以一鍵生成常見的算法代碼,極大縮短編碼時間,讓編碼能力較弱的學(xué)生也能將精力聚焦在算法理解和分析上,提高教學(xué)效果。例如,在CodeGeeX對話框中輸入:“使用C語言編寫一個冒泡排序算法”,CodeGeeX自動用C語言生成了對應(yīng)的算法代碼,并給出了冒泡排序的基本原理,如圖1所示。
CodeGeeX還具備算法優(yōu)化能力,繼續(xù)與CodeGeeX對話,輸入“優(yōu)化這個算法效率”,CodeGeeX會分析原始冒泡排序算法效率不高的原因,并提供優(yōu)化思路和優(yōu)化后的算法代碼,幫助學(xué)生深入理解算法,掌握如何提高算法效率的技巧。
3.2 自動添加代碼注釋,輔助算法學(xué)習(xí)
在教學(xué)實踐中,大多數(shù)學(xué)生只有基本的編程能力,不能獨立分析課程的示例代碼。教師需要花費(fèi)很多時間逐行解釋代碼,甚至一節(jié)課只能講解1個算法,導(dǎo)致教學(xué)效率低下。
CodeGeeX可以自動為每行代碼添加注釋,通過詳細(xì)說明每個變量、每行代碼的作用,既能提高教師課堂講解算法代碼的速度,也可以提升學(xué)生自學(xué)效果。
3.3 智能解釋代碼,高效掌握算法實現(xiàn)
在學(xué)習(xí)復(fù)雜算法時,盡管教師已使用偽代碼和交互性動畫來講解算法原理及執(zhí)行過程,但部分學(xué)生仍然難以將算法代碼與算法原理建立聯(lián)系,學(xué)生產(chǎn)生了較強(qiáng)的畏難情緒,導(dǎo)致教學(xué)效果不佳。
CodeGeeX可以智能解釋代碼段在算法中的作用并說明執(zhí)行過程,就像有一位經(jīng)驗豐富的軟件工程師在實時解釋代碼。該功能可有效降低學(xué)習(xí)復(fù)雜算法的難度,消減學(xué)生的畏難情緒,提高教學(xué)效果。例如,在學(xué)習(xí)八皇后算法的時候,學(xué)生對于解決沖突的while循環(huán)代碼段的作用不理解,只需將該代碼段選中,然后在CodeGeeX對話框中輸入:“代碼含義”,CodeGeeX智能分析整個算法后給出了該代碼段的作用,如圖2所示。
3.4 智能分析修復(fù)代碼Bug,提高實驗效率
數(shù)據(jù)結(jié)構(gòu)是一門理論性和實踐性并重的課程,在教學(xué)過程中需要進(jìn)行多次實驗。學(xué)生雖然已經(jīng)學(xué)習(xí)過C語言,但對C語言的掌握普遍比較薄弱,對于實驗過程中出現(xiàn)的編譯錯誤、運(yùn)行時錯誤等Bug往往摸不著頭緒,不知如何解決,解決代碼Bug占用了實驗課的大量時間,導(dǎo)致學(xué)生在實驗課中往往無法按時完成實驗,影響了實驗教學(xué)目標(biāo)的達(dá)成。
CodeGeeX能智能分析代碼Bug,并給出修改建議。如圖3所示,在代碼段中,有一個教學(xué)中常見的代碼錯誤:if條件中的==被誤寫成了=,該問題在語法上沒有錯誤,程序可以正常編譯,但運(yùn)行結(jié)果不正確。對于這類邏輯Bug,學(xué)生往往需要耗費(fèi)大量的時間才能修復(fù)。而使用CodeGeeX分析這段代碼,CodeGeeX會直接指出有邏輯錯誤的代碼行,并詳細(xì)給出原因分析和修改建議。此時繼續(xù)輸入“修復(fù)bug”,CodeGeeX會自動生成修復(fù)后的代碼。如此可快速修復(fù)代碼Bug,有效提高實驗課效率。
3.5 智能問答,實時伴隨學(xué)習(xí)
數(shù)據(jù)結(jié)構(gòu)課程內(nèi)容多,思維抽象,學(xué)生在學(xué)習(xí)過程中,經(jīng)常會碰到難理解的知識點。由于課時有限,學(xué)生不一定能及時得到教師幫助,而在網(wǎng)絡(luò)上搜索,又很難直接找到答案,往往需要耗費(fèi)大量的時間才能解決疑問。CodeGeeX基于大模型提供的智能問答功能可以實時生成準(zhǔn)確的回答,有效提高學(xué)習(xí)效率。例如,在學(xué)習(xí)排序算法時,學(xué)生不理解為什么快速排序的時間效率比較高,此時就可以向CodeGeeX提問:“快速排序算法為什么快”,如圖4所示,CodeGeeX實時生成的答案正確回答了該算法效率高的原因。此場景下,CodeGeeX就像一位知識淵博的老師在陪伴著學(xué)生學(xué)習(xí),能夠有效提高學(xué)生學(xué)習(xí)效果。
結(jié)語
CodeGeeX展現(xiàn)出了在“數(shù)據(jù)結(jié)構(gòu)”課程輔助教學(xué)中巨大的應(yīng)用潛力,作為一種專門針對軟件開發(fā)的智能編程助手,既是教師備課的助手,又是學(xué)生學(xué)習(xí)的伙伴。通過CodeGeeX可以快速生成和補(bǔ)全算法代碼,提高編程效率,幫助學(xué)生更好地理解和掌握編程語言和編程技巧。CodeGeeX還可以智能生成算法代碼,減少手動編寫代碼的時間,將有限的實驗課時聚焦在對算法的理解和分析上。CodeGeeX還可以自動添加注釋、分析代碼和修復(fù)代碼Bug,能有效幫助學(xué)生理解代碼,提供個性化學(xué)習(xí)支持和自適應(yīng)教學(xué)。
生成式AI以其獨特的創(chuàng)造性和想象力,能夠生成新穎且有價值的內(nèi)容,為教育領(lǐng)域注入新活力。其輔助教學(xué)的優(yōu)勢:(1)快速生成文本、圖片、視頻等教學(xué)資源,提供多樣化學(xué)習(xí)方式;(2)根據(jù)學(xué)習(xí)情況提供輔導(dǎo)和學(xué)習(xí)資源推薦,進(jìn)行個性化教學(xué);(3)自動完成整理資料、批改作業(yè)等重復(fù)性工作,減輕教師工作負(fù)擔(dān)。同時,也要關(guān)注生成式AI輔助教學(xué)的挑戰(zhàn):(1)生成式AI的引入改變了教師的角色和工作方式,需要教師積極適應(yīng)變革;(2)需要引導(dǎo)學(xué)生正確使用生成式AI輔助學(xué)習(xí),避免過度依賴AI技術(shù);(3)當(dāng)前生成式AI技術(shù)仍在發(fā)展,其生成內(nèi)容的準(zhǔn)確性和質(zhì)量還有待提高;(4)生成式AI需要大量數(shù)據(jù)來訓(xùn)練和優(yōu)化,如何保障教師、學(xué)生的數(shù)據(jù)隱私和安全是一個不容忽視的問題??傊?,生成式AI輔助教學(xué)潛力巨大,未來需繼續(xù)探索其優(yōu)勢,解決問題和挑戰(zhàn),為教育進(jìn)步作出更大貢獻(xiàn)。
參考文獻(xiàn):
[1]董薇,張淑麗.持續(xù)改進(jìn)中的數(shù)據(jù)結(jié)構(gòu)實驗教學(xué)探討[J].中國現(xiàn)代教育裝備,2023(19):137-139.
[2]董艷,夏亮亮,李心怡,等.ChatGPT賦能學(xué)生學(xué)習(xí)的路徑探析[J].電化教育研究,2023,44(12):14-20,34.
[3]陳靜遠(yuǎn),胡麗雅,吳飛.ChatGPT/生成式人工智能促進(jìn)以知識點為核心的教學(xué)模式變革研究[J].華東師范大學(xué)學(xué)報(教育科學(xué)版),2023,41(7):177-186.
[4]于剛,賈志娟.關(guān)于ChatGPT用于計算機(jī)輔助教學(xué)的探討[J].互聯(lián)網(wǎng)周刊,2023(18):58-60.
[5]郭乃瑄,董琴,徐秀芳,等.基于文心一言的數(shù)據(jù)結(jié)構(gòu)課程教學(xué)方法初探[J].科教文匯,2023(21):95-100.
[6]CodeGeeX.CodeGeeX:Tab一下,代碼生成![EB/OL].(2022-11-17)[2024-02-17].https://codegeex.cn/zh-CN/bloginfo/2b34c45370a34c80a27244004f259510.
作者簡介:張華鋒,碩士研究生,助教,研究方向:物聯(lián)網(wǎng)技術(shù)、AIGC。