作者:Svan.聲明:未經(jīng)本人允許,不得對(duì)本文中的任何內(nèi)容、數(shù)據(jù)進(jìn)行轉(zhuǎn)載,本人(作者)已經(jīng)對(duì)本文內(nèi)容申請(qǐng)撰寫(xiě)了論文,隨意轉(zhuǎn)載使用本文任何內(nèi)容的,要追究其法律責(zé)任?。?!
成績(jī)分析報(bào)告
一、數(shù)據(jù)來(lái)源
過(guò)程數(shù)據(jù)來(lái)源于兩個(gè)班級(jí)(大約60人)《C語(yǔ)言程序設(shè)計(jì)》課程期間學(xué)習(xí)過(guò)程的真實(shí)記錄,主要是對(duì)平時(shí)作業(yè)以及測(cè)驗(yàn)的收集;問(wèn)卷數(shù)據(jù)來(lái)源于整個(gè)年級(jí)選該課程的同學(xué)(大約170人)的匿名回答,包括同學(xué)對(duì)該課程的看法以及學(xué)習(xí)該課程的一些建議。
1.1 問(wèn)卷數(shù)據(jù)分析
1.1.1數(shù)據(jù)讀取
創(chuàng)建數(shù)據(jù)讀取的功能函數(shù),通過(guò)對(duì).csv文件相對(duì)路徑的鎖定讀取對(duì)應(yīng)檢索欄名稱(chēng)的數(shù)據(jù)列表,并儲(chǔ)存。返回提前創(chuàng)建好的字典里,每個(gè)欄目分別對(duì)應(yīng)所需要的數(shù)據(jù),下圖為.csv文件的示例數(shù)據(jù)集:
1.1.2 matplotlib.pyplot畫(huà)圖
讀取存入字典中對(duì)應(yīng)鍵的數(shù)據(jù),創(chuàng)建一個(gè)空的列表,將其存入新建的列表中,設(shè)置字體屬性參數(shù),通過(guò)計(jì)算畫(huà)出每部分所占餅圖的比例大小,使用label進(jìn)行標(biāo)注。如下圖所示:
通過(guò)上圖發(fā)現(xiàn),進(jìn)入大學(xué)前,有超過(guò)一半的人很少有機(jī)會(huì)接觸計(jì)算機(jī),只有不到10%的人有過(guò)編程的經(jīng)歷。對(duì)學(xué)習(xí)過(guò)編程的同學(xué)進(jìn)行調(diào)查,發(fā)現(xiàn)學(xué)習(xí)C語(yǔ)言編程用時(shí)2-10小時(shí)的學(xué)生占主要部分,而學(xué)習(xí)地點(diǎn)主要集中在寢室,且大多借鑒別人的成果,這反映出目前的教育方式仍需改進(jìn),學(xué)生并沒(méi)有學(xué)到真正的知識(shí),沒(méi)有理解編程原理,導(dǎo)致近一半的同學(xué)集中在考試前幾天去復(fù)習(xí),考的成績(jī)以及整體及格率的下降。
1.2 創(chuàng)建詞云
讀取文本數(shù)據(jù),讀取“9.對(duì)于課程教學(xué),您認(rèn)為哪些地方需要改進(jìn)”這一欄數(shù)據(jù),存入新創(chuàng)建的字符串內(nèi),設(shè)置存入字符串的參數(shù),設(shè)置詞云展示的背景屬性,將生成的詞云圖保存指定的路徑下,最終展示詞云。如下圖所示:
通過(guò)詞云圖可以發(fā)現(xiàn),大多數(shù)同學(xué)對(duì)目前的教學(xué)方式并沒(méi)有任何建議,表示很認(rèn)同當(dāng)前的教學(xué)方式,有小部分人提出老師需要講習(xí)題,還有人表示編程有難度。可以看出目前的教學(xué)方式仍有改進(jìn)的地方。
二、過(guò)程數(shù)據(jù)分析
2.1 數(shù)據(jù)讀取
2.2 數(shù)據(jù)存儲(chǔ)
創(chuàng)建一個(gè)名為stu的學(xué)生類(lèi),可以存儲(chǔ)學(xué)生如下數(shù)據(jù):編程題通過(guò)率[0]、編程題平均用時(shí)、編程題平均提交次數(shù)[1]、代碼的圈復(fù)雜度[2]、第一次測(cè)驗(yàn)成績(jī)、第二次測(cè)驗(yàn)成績(jī)、期末成績(jī)。讀取存儲(chǔ)數(shù)據(jù)的csv文件,將收集的數(shù)據(jù)分別讀入,以字典類(lèi)型存儲(chǔ),字典的鍵為學(xué)生的名字,值為一個(gè)學(xué)生類(lèi),存儲(chǔ)了該學(xué)生的相關(guān)數(shù)據(jù)。最后把所用到的數(shù)據(jù)存入到DataFrame類(lèi)型的表格中,方便對(duì)其進(jìn)行處理。
2.3 平均值計(jì)算
平均值的計(jì)算依靠在學(xué)生類(lèi)中添加一個(gè)迭代次數(shù)的紀(jì)錄,第一次記錄該學(xué)生,則此次輸入的值就為相應(yīng)的值,第n次記錄該學(xué)生(n>1),記第n次記錄的平均值為avg(n),平均值可由如下算式得:
為了節(jié)省存儲(chǔ)空間,不把每次的值都記錄下來(lái),只記錄上一次的平均值和迭代的次數(shù),可對(duì)式子做如下變化:
2.4異常值處理
異常值的來(lái)源主要是兩個(gè)方面,第一個(gè)方面就是部分?jǐn)?shù)據(jù)來(lái)源于問(wèn)卷,此類(lèi)數(shù)據(jù)的可信度不高,可能存在與主觀不符的回答,因此在本次預(yù)測(cè)中,只會(huì)選取部分有意義的數(shù)據(jù)作為參考分析。另一方面是系統(tǒng)所收集的課堂記錄以及平時(shí)作業(yè)的情況,會(huì)出現(xiàn)一些記錄與事實(shí)明顯不符的值,例如學(xué)生的答題時(shí)長(zhǎng),是否在此時(shí)間內(nèi)答題,或是打開(kāi)答題系統(tǒng)未答題但系統(tǒng)依然在計(jì)時(shí),這樣記錄的時(shí)間并不是實(shí)際答題時(shí)間,通常數(shù)值會(huì)比較大,基于這一特點(diǎn),我們將這類(lèi)數(shù)據(jù)予以刪除。
2.5 相關(guān)度作圖分析
對(duì)于過(guò)程數(shù)據(jù)的各參量,分別研究其與期末成績(jī)的相關(guān)性,相關(guān)度的圖中,橫坐標(biāo)為成績(jī),分為五個(gè)等級(jí)(差[0-30]、不及格[30-60]、及格[60-70]、中等[70-80]、良好[80-90]、優(yōu)秀[90-100])該分析會(huì)結(jié)合相關(guān)實(shí)際,對(duì)于各類(lèi)因素詳細(xì)說(shuō)明:
2.5.1 圈復(fù)雜度
圈復(fù)雜度可以用來(lái)衡量一個(gè)模塊判定結(jié)構(gòu)的復(fù)雜程度,其數(shù)量上表現(xiàn)為獨(dú)立路徑的條數(shù),也可理解為覆蓋所有的可能情況最少使用的測(cè)試用例個(gè)數(shù)。一般來(lái)講,復(fù)雜度大于10的代碼出錯(cuò)率很高。
圈復(fù)雜度 | 代碼狀況 | 可測(cè)性 | 維護(hù)成本 |
---|---|---|---|
1-10 | 清晰 | 高 | 低 |
10-20 | 復(fù)雜 | 中 | 中 |
20-30 | 非常復(fù)雜 | 低 | 高 |
30 | 不可讀 | 不可測(cè) | 非常高 |
觀察圖2,可以看出圈復(fù)雜度多數(shù)分布在3到5之間,對(duì)于初學(xué)者不會(huì)寫(xiě)出過(guò)于復(fù)雜的代碼也吻合該結(jié)果。通過(guò)定義結(jié)合實(shí)際,該參量事實(shí)上是學(xué)生對(duì)題目的各種情況的綜合考慮情況,比如對(duì)于這樣一個(gè)題目:給定三角形的三條邊,求出該三角形的面積(三邊求面積公式:p=(a+b+c)/2 S=sqrt[p(p-a)(p-b)(p-c)](海倫公式))。因?yàn)闇y(cè)試的數(shù)據(jù)輸入的三個(gè)數(shù)據(jù)是滿(mǎn)足三角形的三條邊構(gòu)成定理的,因此不對(duì)輸入做出相關(guān)判斷,直接運(yùn)算得出來(lái)的結(jié)果是與答案吻合的,但是對(duì)于部分編程和數(shù)學(xué)思維稍強(qiáng)的學(xué)生,可能就會(huì)加入對(duì)是否滿(mǎn)足三角形構(gòu)成的判斷,或者輸入是否為正的判斷,加的這些判斷就會(huì)使圈復(fù)雜度變大,對(duì)于初學(xué)者而言,更加慎密的思維無(wú)疑是好的,因此該參量值偏大的同學(xué)的最終成績(jī)會(huì)偏好一些??聪驁D表1中的另一個(gè)極端,代碼復(fù)雜度過(guò)低,很多學(xué)生的成績(jī)都是很差的,不是因?yàn)閮?yōu)化好,而是對(duì)于代碼不知如何構(gòu)思,從而寫(xiě)出的代碼量小,效果未完全達(dá)到。
2.5.2 編程題提交次數(shù)
該參量與成績(jī)的相關(guān)度是比較好的,多次提交可以看出在學(xué)習(xí)過(guò)程中花更多時(shí)間,研究問(wèn)題更為透徹。最終的成績(jī)也與理想接近。
2.5.3 代碼通過(guò)率
該參量可理解為編程題的滿(mǎn)分率,數(shù)據(jù)來(lái)源是學(xué)生提交代碼之后會(huì)系統(tǒng)自動(dòng)批改的結(jié)果,可以看出多數(shù)成績(jī)較差的同分布在通過(guò)率的兩個(gè)極端,出現(xiàn)這種數(shù)據(jù)的原因是作業(yè)會(huì)有拷貝抄襲的情況出現(xiàn),為了證實(shí)這一結(jié)論我會(huì)在下文做出解釋?zhuān)D(zhuǎn)過(guò)來(lái)看通過(guò)率在0.8到0.9這段區(qū)間的數(shù)據(jù),就顯得符合正常,通過(guò)率高成績(jī)偏好,反之偏差。
接下來(lái)說(shuō)明一下抄襲作業(yè)的情況:
這里選取了提交次數(shù)和通過(guò)率的關(guān)系圖,兩個(gè)參數(shù)結(jié)合分析,一般得到完全通過(guò)都會(huì)提交多次,除非是題目過(guò)于簡(jiǎn)單,排除這一占比較小的可能,對(duì)其分析,可以發(fā)現(xiàn)有一批學(xué)生的通過(guò)率很高的同時(shí)提交次數(shù)也只有2次及以下,這種情況極大可能就是代碼拷貝的現(xiàn)象。
2.5.4 編程做題時(shí)長(zhǎng)
這個(gè)參量與提交次數(shù)很類(lèi)似,但有一點(diǎn)不同的是該參量有不理想的值,因?yàn)樽鲱}時(shí)長(zhǎng)是打開(kāi)答題界面的時(shí)間,因?yàn)槠綍r(shí)題目不會(huì)有這方面的限制,那么就會(huì)出現(xiàn)打開(kāi)界面忘記關(guān)閉而且沒(méi)有做題的現(xiàn)象,或者是多人共同做題參看一個(gè)人的題目,也會(huì)影響該參量綜合看來(lái)大于1500的數(shù)據(jù)可以作廢。500-1500之間的數(shù)據(jù)有參考價(jià)值,小于500的部分,也可以進(jìn)一步分析拷貝代碼的情況,類(lèi)似上文做出如下分析圖:
可以看到圖中有部分學(xué)生編程用時(shí)較短但卻有較高的通過(guò)率,大概率即為拷貝。因此在教學(xué)活動(dòng)的安排中應(yīng)改進(jìn)方案避免此現(xiàn)象。
2.5.5 兩次測(cè)試成績(jī)
兩次測(cè)試放在一塊分析,可以看出兩次測(cè)試與最終成績(jī)的相關(guān)度很相似,而且平時(shí)成績(jī)較好期末成績(jī)也會(huì)不錯(cuò),因?yàn)閮纱纹綍r(shí)測(cè)試與期末考試一樣,都是獨(dú)立完成,作弊與抄襲因素可忽略,擬合效果最佳,可綜合前部分因素預(yù)測(cè)期末成績(jī)。
- [0]:編程題通過(guò)率,提交的代碼在系統(tǒng)自動(dòng)批改之后是否全對(duì)會(huì)給出是否通過(guò)的記錄,通過(guò)為1,沒(méi)通過(guò)為0,通過(guò)對(duì)所有記錄的加和求平均值可以得出系統(tǒng)批改的編程題正確率。
- [1]:編程題平均提交次數(shù),做平時(shí)作業(yè)題過(guò)程中,提交之后系統(tǒng)會(huì)立馬給出自動(dòng)批改的結(jié)果,同學(xué)可以通過(guò)此結(jié)果評(píng)判后決定是否對(duì)代碼進(jìn)行改進(jìn)而重復(fù)提交新的代碼,每一題都會(huì)有該記錄,把所有題的次數(shù)加起來(lái)平均就為該參量。
- [2]:軟件源碼某部分的圈復(fù)雜度就是這部分代碼中線性無(wú)關(guān)路徑的數(shù)量。對(duì)于此處分析,考慮到學(xué)生均為初學(xué)者,可將此參量理解為代碼中的判斷分支數(shù)量,這方面看來(lái),此參量不一定是越小越好。
三、結(jié)論
從數(shù)據(jù)分析上來(lái)看,主要表現(xiàn)在以下幾點(diǎn):
- 學(xué)生背景差異顯著:
- 報(bào)告指出,超過(guò)一半的學(xué)生在進(jìn)入大學(xué)前很少有機(jī)會(huì)接觸計(jì)算機(jī),不到10%的學(xué)生有過(guò)編程經(jīng)歷。這表明學(xué)生在入學(xué)時(shí)對(duì)計(jì)算機(jī)和編程的了解存在顯著差異。
- 學(xué)習(xí)習(xí)慣和環(huán)境影響學(xué)習(xí)效果:
- 學(xué)習(xí)C語(yǔ)言編程的學(xué)生中,大多數(shù)用時(shí)在2-10小時(shí)之間,且學(xué)習(xí)地點(diǎn)主要集中在寢室。這可能意味著學(xué)生缺乏有效的學(xué)習(xí)環(huán)境和資源,依賴(lài)于他人的成果,這可能影響了他們的學(xué)習(xí)效果和編程原理的理解。
- 學(xué)習(xí)方式需改進(jìn):
- 報(bào)告中通過(guò)詞云圖分析發(fā)現(xiàn),大多數(shù)學(xué)生對(duì)當(dāng)前的教學(xué)方式表示認(rèn)同,但也有小部分人提出需要老師講解習(xí)題,以及反映編程難度較大。這表明教學(xué)方式仍有改進(jìn)的空間,以更好地滿(mǎn)足學(xué)生的學(xué)習(xí)需求。
- 學(xué)生學(xué)習(xí)投入與成績(jī)正相關(guān):
- 報(bào)告分析了編程題提交次數(shù)與成績(jī)的關(guān)系,發(fā)現(xiàn)多次提交的學(xué)生在學(xué)習(xí)過(guò)程中投入更多時(shí)間,研究問(wèn)題更為透徹,這與最終成績(jī)的提高正相關(guān)。
- 作業(yè)抄襲現(xiàn)象存在:
- 通過(guò)分析提交次數(shù)與通過(guò)率的關(guān)系,報(bào)告指出存在一部分學(xué)生通過(guò)率很高但提交次數(shù)很少,這可能表明有抄襲作業(yè)的現(xiàn)象。
- 編程做題時(shí)長(zhǎng)與成績(jī)相關(guān):
- 報(bào)告中提到,編程做題時(shí)長(zhǎng)與提交次數(shù)類(lèi)似,但存在不理想的值,如長(zhǎng)時(shí)間未關(guān)閉答題界面的情況。在合理的時(shí)間范圍內(nèi),編程用時(shí)與成績(jī)存在一定的相關(guān)性。
- 測(cè)試成績(jī)與期末成績(jī)相關(guān):
- 第一次和第二次測(cè)試成績(jī)與期末成績(jī)的相關(guān)度較高,表明平時(shí)成績(jī)較好的學(xué)生期末成績(jī)也傾向于較好,這可能是因?yàn)檫@些測(cè)試都是在獨(dú)立完成的情況下進(jìn)行的,排除了作弊和抄襲的影響。
- 圈復(fù)雜度與學(xué)生思維慎密性相關(guān):
- 報(bào)告分析了圈復(fù)雜度與成績(jī)的關(guān)系,發(fā)現(xiàn)圈復(fù)雜度較高的學(xué)生往往成績(jī)較好,這可能是因?yàn)樗麄儗?duì)題目的各種情況考慮得更為全面。
綜上所述,報(bào)告通過(guò)對(duì)學(xué)生的學(xué)習(xí)過(guò)程數(shù)據(jù)和問(wèn)卷數(shù)據(jù)的分析,揭示了學(xué)生的學(xué)習(xí)背景、學(xué)習(xí)習(xí)慣、作業(yè)提交行為和測(cè)試成績(jī)等多個(gè)方面與最終成績(jī)的關(guān)系,為教學(xué)改進(jìn)提供了數(shù)據(jù)支持。
同時(shí),報(bào)告也指出了教學(xué)過(guò)程中存在的問(wèn)題,如學(xué)生學(xué)習(xí)環(huán)境的不足、作業(yè)抄襲現(xiàn)象等,這些問(wèn)題需要通過(guò)教學(xué)改革和支持措施來(lái)解決。
希望你喜歡這個(gè)項(xiàng)目,并在構(gòu)建過(guò)程中找到樂(lè)趣!如果你有任何問(wèn)題或需要幫助,歡迎在評(píng)論區(qū)交流。
作者:Svan.
注意:本博文為不得在未經(jīng)本人同意進(jìn)行轉(zhuǎn)載或者二次創(chuàng)作,違者必究?。?!
博客主頁(yè):https://blog.csdn.net/weixin_51141489,需要源碼或相關(guān)資料實(shí)物的友友請(qǐng)關(guān)注、點(diǎn)贊,私信吧!