2015年12月12日

用python分析 moodle 活動完成報表

事情要從讓九年級作個別化學習課程開始,當初是暑輔的時候開始進行,學生一週有兩節生物課,所以一週一單元的進度算是恰當。可是開學之後的課程是兩週一節,有的時候還會因為國定假日、段考等放掉,就變成一個月上一次課,最久的一次是一個半月上一次課。

所以大家的進度就會差很多,快得很快,慢得很慢,活生生的差異化。於是乎我得用不同的方式來掌握學生進度,moodle有個外掛Gismo大大幫助了我,只要選好人名之後,就可以即時產出報表,有紅色方塊的就是那個小單元有達到100分的。可是這樣會有一個缺點,有些同學如果當節怠慢沒作,我從這樣的圖表裡是看不到的。









還好還好,Gizmo可以調整時間區間,我可以看到在這段時間裡誰做了多少,於是我就可以規定每個學生該節都要通過五個或六個測驗。但是啊,還是有個缺點,我得上下來回捲動畫面,才能知道一個學生完成了多少。上課就變成我得常常作在電腦前捲來捲去,幫學生檢視他完成度有多少,畢竟學生可能不太記得啊。我心想,我應該把時間用在學生身上啊,怎麼可以在那邊捲來捲去的。





於是乎,開始想要自己寫一個程式來抓進度,一開始是想自己改寫Gismo的外掛,不過打開來看之後,根本就看不懂。還是乾脆自己動手寫好了。

這段時間剛好都在看大數學堂的大數據分析教學影片,就發現可以用python來解決問題,分析的對象就從moodle本身的「活動完成進度」報表來作。

我要作到能從這張報表產出橫條圖,而且我能改變統計的起始區間,還有橫條圖的顯示模式、班級類別...。更重要的是,要能不斷更新,讓我不被綁在電腦前面,只要螢幕投出來,師生都可以同時看到進度。




既然目標定好了,就是開始執行的時候。我覺得熟python的人,應該是一兩下就可以弄出來了,不過我是初學者,寫得差點想放棄。


好朋友美芳去參加論壇聽到的話,我覺得很棒
「不要因為做不到而說沒辦法,要為可能作得到而想辦法。」

雖然寫得很久,但是最後也做出來了,喔耶。


python的程式碼在這
https://drive.google.com/folderview?id=0Bzwhi7Oh9a5ZMHd5aVY2VFJnaTg&usp=sharing

用python每隔幾秒就去抓一次活動完成報表,分析之後做出一個會自動整理頁面的html檔,而那個檔就是呈現橫條圖。所以我只要python開了,瀏覽器也開啟那個檔案,它就會一直更新一直更新。

學生抬頭看螢幕,就會知道自己目前有沒有達標,也可以知道自己和其他人的進度差別在哪。



產出html檔還有好處,我可以任意改變圖呈現方式,像是用天線寶寶當橫條。
「那個OOO有8個天線寶寶了,我一定要超過他」
「耶,我有5個天線寶寶了」





也可以同時呈現該節課的完成進度,還有從以前到現在的完成進度,然後學生就會被激勵。
「什麼!我差三個就會被後面追上了,我要衝一下」當晚就看到學生會自己上線衝進度了