董 東
(河北師范大學(xué) 計(jì)算機(jī)與網(wǎng)絡(luò)空間安全學(xué)院,河北 石家莊 050024)
面向能力的學(xué)習(xí)效果評(píng)價(jià)越來(lái)越受到計(jì)算機(jī)教育領(lǐng)域的關(guān)注[1-4]。完成任務(wù)所需的知識(shí)(Knowledge)、技能(Skills)和素質(zhì)(Dispositions)合稱為勝任力(Competency)[5]。持續(xù)改進(jìn)是工程教育的基本要求,利用教育數(shù)據(jù)實(shí)現(xiàn)教學(xué)持續(xù)改進(jìn)引起越來(lái)越多教育工作者的關(guān)注[6]。對(duì)持續(xù)改進(jìn)目標(biāo)的識(shí)別一般通過(guò)任課教師的經(jīng)驗(yàn),或?qū)φn程目標(biāo)的達(dá)成度分析實(shí)現(xiàn)[7]。對(duì)知識(shí)的學(xué)習(xí)效果易于實(shí)施客觀教育測(cè)量,然而技能和素質(zhì)更多是內(nèi)隱的心理生理認(rèn)知習(xí)得成果,難以通過(guò)面向知識(shí)的客觀教育方法實(shí)施有效評(píng)價(jià)。是否可以通過(guò)對(duì)學(xué)生的技能和素質(zhì)在實(shí)操過(guò)程中認(rèn)知發(fā)展水平進(jìn)行度量,進(jìn)而實(shí)現(xiàn)對(duì)學(xué)習(xí)目標(biāo)的難度評(píng)價(jià)呢?教育與認(rèn)知心理學(xué)的相關(guān)研究給予了肯定回答[8]。
賣(mài)油翁說(shuō):“我亦無(wú)他,惟手熟爾。”[9]這意味著技能是靠實(shí)際操練才能形成,并不是依賴單純的記憶和理解等認(rèn)知行為,因此技能評(píng)價(jià)也應(yīng)在實(shí)際操練中進(jìn)行。例如,中國(guó)傳統(tǒng)武術(shù)通過(guò)打擂臺(tái)比拼功夫高低;對(duì)廚師水平的評(píng)價(jià)是通過(guò)專(zhuān)家品嘗其制作的菜品來(lái)完成;在車(chē)?yán)锲椒乓粷M杯水,通過(guò)觀察水是否溢出這一顯式特征評(píng)價(jià)駕駛員行車(chē)的平穩(wěn)性這一內(nèi)隱特征。目前對(duì)能力的度量方法包括基于課程測(cè)驗(yàn)成績(jī)和基于量表兩大類(lèi)。基于課程測(cè)驗(yàn)成績(jī)的方法通過(guò)設(shè)計(jì)面向能力度量的試題卷,按照一定評(píng)分標(biāo)準(zhǔn)判卷后得到一個(gè)分?jǐn)?shù),然后通過(guò)這個(gè)分?jǐn)?shù)評(píng)價(jià)學(xué)習(xí)者個(gè)體和總體對(duì)能力目標(biāo)的達(dá)成度;基于量表的方法通過(guò)設(shè)計(jì)量表,通常使用評(píng)分加總式的李克特(Rensis Likert)五級(jí)量表,然后讓學(xué)習(xí)者回答問(wèn)卷的項(xiàng)目,具體指出自己對(duì)該項(xiàng)陳述的認(rèn)同程度,最后對(duì)量表進(jìn)行分析。這兩種方法共同的問(wèn)題有:一是對(duì)試卷題目或李克特選項(xiàng)的設(shè)計(jì)難度較大;二是沒(méi)有體現(xiàn)實(shí)際操練。
隨著大數(shù)據(jù)可得性的提高[10-11],數(shù)據(jù)驅(qū)動(dòng)教學(xué)引起了教育工作者的興趣。例如,王樹(shù)梅等[12]基于線上討論、作業(yè)、實(shí)驗(yàn)、階段測(cè)試等各教學(xué)環(huán)節(jié)的評(píng)價(jià)數(shù)據(jù)提出數(shù)據(jù)驅(qū)動(dòng)的形成性學(xué)習(xí)效果評(píng)價(jià)方法;王莉等[13]對(duì)大學(xué)計(jì)算機(jī)公共課的“平臺(tái)+數(shù)據(jù)”線上混合式教學(xué)課前、課中、課后3 個(gè)環(huán)節(jié)中得到的學(xué)生學(xué)習(xí)數(shù)據(jù)進(jìn)行分析,闡述如何把握教學(xué)質(zhì)量。然而,如何通過(guò)學(xué)習(xí)過(guò)程中的數(shù)據(jù)發(fā)現(xiàn)課程教學(xué)改進(jìn)目標(biāo)未見(jiàn)深入論述;樊敏生等[14]對(duì)如何有效地在教學(xué)中實(shí)現(xiàn)基于數(shù)據(jù)的、動(dòng)態(tài)化的學(xué)習(xí)干預(yù)進(jìn)行了理論與實(shí)踐探索;梅鵬江等[15]通過(guò)學(xué)習(xí)通平臺(tái)收集學(xué)習(xí)行為數(shù)據(jù)對(duì)學(xué)生進(jìn)行聚類(lèi)分析,以發(fā)現(xiàn)不同類(lèi)型學(xué)生的學(xué)習(xí)行為特點(diǎn),但僅限于對(duì)學(xué)習(xí)行為方面的教學(xué)改進(jìn)目標(biāo)識(shí)別。
當(dāng)前大多數(shù)據(jù)驅(qū)動(dòng)教學(xué)改進(jìn)方法基于過(guò)程性評(píng)價(jià)數(shù)據(jù)進(jìn)行。為此,本文提出一種直接包含外顯性因素過(guò)程數(shù)據(jù)的方法,通過(guò)本科課程軟件工程項(xiàng)目實(shí)踐中對(duì)工程項(xiàng)目《學(xué)生選課系統(tǒng)》的案例研究,總結(jié)了通過(guò)文本分析技術(shù)識(shí)別持續(xù)改進(jìn)目標(biāo)的方法,即完成一學(xué)期的程序設(shè)計(jì)類(lèi)課程后,在后繼學(xué)期要求學(xué)生使用該課程所學(xué)語(yǔ)言完成一個(gè)具體的工程項(xiàng)目,然后通過(guò)分析學(xué)生在項(xiàng)目完成過(guò)程中遇到的問(wèn)題和認(rèn)知變化發(fā)現(xiàn)其能力方面的欠缺,從而得出對(duì)該課程的改進(jìn)目標(biāo)。
Java 面向?qū)ο蟪绦蛟O(shè)計(jì)課程在應(yīng)用型本科計(jì)算機(jī)類(lèi)專(zhuān)業(yè)第2 學(xué)年第4 學(xué)期進(jìn)行,學(xué)生已經(jīng)學(xué)過(guò)C 語(yǔ)言程序設(shè)計(jì)和數(shù)據(jù)結(jié)構(gòu)知識(shí)。該課程每周線下講授2 課時(shí),實(shí)驗(yàn)2課時(shí)。課堂教學(xué)以板書(shū)知識(shí)點(diǎn)+程序演示方式為主;實(shí)驗(yàn)教學(xué)以驗(yàn)證型實(shí)驗(yàn)為主,主要通過(guò)重做教師課堂演示的例子強(qiáng)化對(duì)知識(shí)點(diǎn)的理解。
該課程的目標(biāo)包括能夠通過(guò)例子解釋封裝、繼承和多態(tài)的概念;能夠?qū)崿F(xiàn)給定的類(lèi)模型;能夠使用群集框架(Collections Framework)實(shí)現(xiàn)集合、線性表等數(shù)據(jù)結(jié)構(gòu);能夠使用Java Swing 設(shè)計(jì)圖形用戶界面;能夠使用輸入輸出流讀寫(xiě)文件;能夠使用Java 程序解決綜合實(shí)際問(wèn)題等。課程評(píng)價(jià)主要根據(jù)平時(shí)作業(yè)、實(shí)驗(yàn)報(bào)告和期末考試進(jìn)行?!秾W(xué)生選課系統(tǒng)》是一個(gè)基于Java 平臺(tái)的軟件工程實(shí)踐項(xiàng)目,要求學(xué)生提交的項(xiàng)目報(bào)告包含組員分工及組內(nèi)評(píng)價(jià)、文件版本、數(shù)據(jù)庫(kù)版本、圖形用戶界面(GUI)版本、Web 版本等各個(gè)版本完成的工作(基本要求)、擴(kuò)展功能實(shí)現(xiàn)方法、遇到的問(wèn)題及解決方法、個(gè)人提高等。
通過(guò)對(duì)學(xué)生提交的項(xiàng)目結(jié)項(xiàng)報(bào)告進(jìn)行文本分析來(lái)識(shí)別課程的持續(xù)改進(jìn)目標(biāo)。從最具演繹性到最具歸納性可將文本分析分為計(jì)數(shù)和字典方法、有監(jiān)督學(xué)習(xí)和無(wú)監(jiān)督學(xué)習(xí)3 類(lèi)。演繹性使用了先驗(yàn)知識(shí),事先知道尋找什么,并假設(shè)某些規(guī)則或前提;而歸納性是指不使用先驗(yàn)知識(shí),以某種算法從文本中識(shí)別有意義的模式。計(jì)數(shù)和字典方法使用關(guān)鍵詞、布爾表達(dá)式或正則表達(dá)式來(lái)計(jì)算文本中某些詞元的出現(xiàn)頻率。如果預(yù)先確定了類(lèi)別,有監(jiān)督的方法比較合適;無(wú)監(jiān)督方法的優(yōu)勢(shì)在于發(fā)現(xiàn)未知的類(lèi)別。
選課學(xué)生結(jié)項(xiàng)報(bào)告中的“遇到的問(wèn)題及解決方法”和“個(gè)人提高”部分為能力達(dá)成度評(píng)價(jià)提供了外顯特征。通過(guò)關(guān)鍵字語(yǔ)境查詢、特征排名、用戶自定義關(guān)鍵字分類(lèi)查詢和話題檢測(cè)等技術(shù),綜合識(shí)別存在的共性特征,最后結(jié)合人工解釋和判斷,形成前驅(qū)課程目標(biāo)達(dá)成度評(píng)價(jià),得到前驅(qū)課程的持續(xù)改進(jìn)目標(biāo)。通過(guò)文本分析識(shí)別課程持續(xù)改進(jìn)目標(biāo)的技術(shù)路線如圖1所示。
Fig.1 Technology roadmap圖1 技術(shù)路線
建立語(yǔ)料庫(kù)以及后續(xù)分析均在R 4.1.2 中完成,使用的R 包包括文本數(shù)據(jù)量化分析包quanteda[16]、結(jié)構(gòu)話題模型包stm[17]以及 readtext 包等。本文使用的quanteda 包提供的功能及其實(shí)現(xiàn)函數(shù)如表1所示。
本案例中共有84 名同學(xué)參與工程項(xiàng)目,自由結(jié)合,分為21 組。首先將學(xué)生提交的Word 文件形式的結(jié)項(xiàng)報(bào)告另存為文本文件,然后刪除“完成工作”部分,僅保留“遇到的問(wèn)題及解決方法”和“個(gè)人提高”部分。通過(guò)R 包readtext導(dǎo)入這21 個(gè)文本文件,然后使用quanteda 包的corpus()函數(shù)構(gòu)造成語(yǔ)料庫(kù)。
解析詞元也稱為詞元化(tokenize),是指將文本切割為詞元的過(guò)程,這一步驟對(duì)計(jì)算文本分析至關(guān)重要,最常見(jiàn)的詞元為英文單詞、運(yùn)算符、標(biāo)點(diǎn)符號(hào)、漢字、漢字詞組、成語(yǔ)等。采用quanteda 包的summary()函數(shù)得出的語(yǔ)料庫(kù)中詞元和句子描述性統(tǒng)計(jì)如表2 所示。可以看出,21 篇文檔平均每篇有1461 個(gè)詞元,最少的有36 個(gè)詞元,最多有4618個(gè)詞元,可以進(jìn)一步進(jìn)行基于詞元的分析。
下一步是過(guò)濾停用詞。首先自定義停用詞,例如姓名、學(xué)號(hào)、任務(wù)、分工、實(shí)驗(yàn)、報(bào)告、錯(cuò)誤、代碼、進(jìn)行、GUI、Person、Teacher 等,連同英文通用停用詞、中文停用詞全部過(guò)濾,如此便得到用于進(jìn)一步分析的詞元集合?;谠~元集合,以“了解、熟悉、加深、明白、清楚、懂得”這些認(rèn)知?jiǎng)釉~作為關(guān)鍵詞,通過(guò)kwic()函數(shù)逐一查詢其出現(xiàn)的上下文。返回88 個(gè)匹配項(xiàng)目,其中有“加深final 關(guān)鍵字理解”“加深 HashMap 理解”“加 深I(lǐng)terator 接口理 解”“了解map 鍵值用法”等,說(shuō)明學(xué)生對(duì)final 關(guān)鍵字、對(duì)群集Map、迭代器以及接口等的掌握可能有所欠缺。
然后使用dfm()函數(shù)創(chuàng)建文檔特征矩陣,應(yīng)用topfeatures()函數(shù)從特征矩陣中提取前90 個(gè)特征,結(jié)果如表3 所示。文檔特征矩陣將詞元作為行,將詞元的計(jì)數(shù)作為列,例如“用戶”在語(yǔ)料庫(kù)中的計(jì)數(shù)是97。計(jì)數(shù)相同的詞元視為排名相同。從表中可以看到,學(xué)生對(duì)接口、容器、路徑、輸入、布局、窗口、框、Map、導(dǎo)入(import)等的學(xué)習(xí)目標(biāo)未達(dá)成。
接下來(lái)進(jìn)行關(guān)鍵詞分類(lèi)查詢。首先定義6 類(lèi)關(guān)鍵字,分別為異常、群集、流、接口、和圖形界面。異常類(lèi)中的關(guān)鍵字有NullPointerException、InputMismatchException、try、catch;群集類(lèi)中的關(guān)鍵字有List、Map、HashMap、key、value、equals、hashcode、Iterator、next、hasNextInterface;流類(lèi)中的關(guān)鍵字有FileReader、FileInputStream、Scanner;接口類(lèi)中的關(guān)鍵字有泛型、連接、接口;圖形界面類(lèi)中的關(guān)鍵字有JTableJScrollPane、AWT、Swing、JPanel。然后使 用tokens_lookup()函數(shù)查詢這些自定義關(guān)鍵字在每個(gè)文檔中出現(xiàn)的頻數(shù),然后按照類(lèi)別求均值,結(jié)果如表4 所示。統(tǒng)計(jì)結(jié)果表明學(xué)生對(duì)“接口”“群集”的掌握較差,而對(duì)“異?!焙汀傲鳌钡恼莆蛰^好。
Table 1 Functions and implementation表1 功能及實(shí)現(xiàn)函數(shù)
Table 2 Descriptive statistics of tokens and sentences in the project reports表2 項(xiàng)目報(bào)告中詞元和句子的描述性統(tǒng)計(jì)
Table 3 Top 90 features in the document feature matrix表3 文檔特征矩陣中排名前90的特征
Table 4 Result of aggregation by group表4 分組統(tǒng)計(jì)結(jié)果
最后識(shí)別話題。首先使用dfm_trim()剔除低頻詞元,然后使用函數(shù)dfm()識(shí)別話題。檢測(cè)出話題有“發(fā)現(xiàn),顯式,需要”“件,組,容器”“版本,功能,化”“連接,用戶”“map,類(lèi)型”“表,修改”“發(fā)現(xiàn),合作”“需求,設(shè)計(jì)”“容器,成功”“接口,元素”等,進(jìn)一步確認(rèn)了群集對(duì)象Map、接口、圖形用戶界面、合作能力是學(xué)生的弱項(xiàng),可使用plot()函數(shù)可視化識(shí)別到的話題。將特征提取結(jié)果{接口,容器,路徑,輸入,布局,窗口,框,Map,導(dǎo)入}、分組查詢結(jié)構(gòu){接口,群集}和話題模型檢查結(jié)果{Map,接口,圖形用戶界面,合作}綜合,得到Java 面向?qū)ο蟪绦蛟O(shè)計(jì)課程的改進(jìn)目標(biāo)為{Map,接口,圖形用戶界面,導(dǎo)入,合作}。隨機(jī)從84 個(gè)選課學(xué)生中選擇10 名,針對(duì)改進(jìn)目標(biāo)設(shè)計(jì)調(diào)查問(wèn)卷,結(jié)果顯示90%同學(xué)選擇完全符合,10%同學(xué)選擇部分符合。將該結(jié)果用于次年的教學(xué)改進(jìn)中,例如在Java 面向?qū)ο蟪绦蛟O(shè)計(jì)課程教學(xué)中不再讓學(xué)生使用Eclipse 自動(dòng)導(dǎo)入程序需要的包,而是改用jGrasp 設(shè)計(jì)程序,使學(xué)生手動(dòng)導(dǎo)入包。次年度按照持續(xù)改進(jìn)目標(biāo)調(diào)整了前驅(qū)課程Java 面向?qū)ο蟪绦蛟O(shè)計(jì)的教學(xué)方案。將繼續(xù)選修后繼課程——軟件工程項(xiàng)目實(shí)踐的學(xué)生的結(jié)項(xiàng)報(bào)告按照前文描述的技術(shù)路線識(shí)別出改進(jìn)目標(biāo)為:{多線程,接口,合作}。與上一輪課程的改進(jìn)目標(biāo){ Map,接口,圖形用戶界面,導(dǎo)入,合作}相比,數(shù)量上減少了40%;內(nèi)容上,“Map”“導(dǎo)入”“圖形用戶界面”等60%的改進(jìn)目標(biāo)完成。
在實(shí)際應(yīng)用本文提出的方法和工具時(shí),應(yīng)注意以下問(wèn)題:①quanteda 包對(duì)中文分詞的結(jié)果并沒(méi)有注意到特定的軟件工程和程序設(shè)計(jì)語(yǔ)言的上下文,這可能導(dǎo)致分詞結(jié)果并不理想;②應(yīng)根據(jù)課程目標(biāo)人工定義用戶自定義字典以進(jìn)行分組查詢。由于課程目標(biāo)不同,可能導(dǎo)致查詢結(jié)果不具有參考價(jià)值或可解釋性;③雖然結(jié)構(gòu)話題模型可能過(guò)多識(shí)別不被感興趣的話題,但該模型能夠在大數(shù)據(jù)無(wú)標(biāo)簽環(huán)境下實(shí)現(xiàn)自動(dòng)話題識(shí)別以及呈現(xiàn)話題網(wǎng)絡(luò),考慮到課程改進(jìn)目標(biāo)的查全率應(yīng)高于查準(zhǔn)率,因此結(jié)構(gòu)話題模型是適用的;④案例實(shí)施期間,任課教師應(yīng)通過(guò)課前告知、課上公開(kāi)表?yè)P(yáng)、線上私下批評(píng)、評(píng)分策略等方式鼓勵(lì)學(xué)生誠(chéng)實(shí)、獨(dú)立地報(bào)告自己的感受。只要輸入是完整客觀的,輸出就可解釋、可使用;⑤本案例研究中只有84 名學(xué)生分為21 組開(kāi)發(fā)同一個(gè)項(xiàng)目。雖然參與者的選擇具有隨機(jī)性,也可以視為總體,但是結(jié)果是否能夠具有更大的一般性還需要進(jìn)一步評(píng)估。本案例研究確實(shí)可以找到有意義的學(xué)生課程目標(biāo)達(dá)成弱項(xiàng),但是如果能夠在更大規(guī)模的學(xué)生參與下進(jìn)行研究結(jié)果會(huì)更好。
本文提出一種半自動(dòng)化的針對(duì)程序設(shè)計(jì)類(lèi)課程的持續(xù)改進(jìn)目標(biāo)識(shí)別方法。該方法直接使用學(xué)習(xí)過(guò)程數(shù)據(jù)而不是評(píng)價(jià)數(shù)據(jù),通過(guò)對(duì)學(xué)生的后繼項(xiàng)目結(jié)項(xiàng)報(bào)告進(jìn)行文本分析,手工導(dǎo)入數(shù)據(jù),自動(dòng)識(shí)別學(xué)生在前驅(qū)程序設(shè)計(jì)類(lèi)課程能力目標(biāo)方面的短板,適用于大規(guī)模在線課程以及線上線下混合課程。識(shí)別能力目標(biāo)達(dá)成的弱項(xiàng)可為工程教育的持續(xù)改進(jìn)活動(dòng)提供方向,還可更好地掌握學(xué)情,有針對(duì)性地改進(jìn)課程教學(xué)內(nèi)容。未來(lái)研究將在以下幾個(gè)方面展開(kāi):①增大參與學(xué)生規(guī)模;②針對(duì)不同年級(jí)連續(xù)研究;③提升查準(zhǔn)率。