109年度 [專案]技術實作

整合自動評量方法到問題發佈學習活動用以培育產業程式設計人才-以Python程式語言為例

計畫主持人 藍友烽 副教授
服務系所 國立虎尾科技大學 資訊管理系
配合課程 程式設計(一)

計畫摘要

電腦程式已是目前各級學校在課程設計上的一個核心課程。本研究主要發展一個雲端自動評量系統用以支援學習 Python 程式設計。此外透過雲端自動評量平台,本研究進一部探討是否有助於程式設計之學習成效。實驗資料將從系統記錄檔取得並作為分析的依據。經由實驗資料的分析本研究將探討下列研究問題:一 學生利用雲端「自動評量系統」是否有助於 Python 程式設計的學習 ? 二 實驗組與控制組間,對於學生的自我效能是否達到顯著差異。

問題意識

從目前國內技職教育的現場來看,程式設計學習活動遭遇到許多的挑戰,其中原因可歸納如下:

1. 學生來源背景差異甚大:學生多元管道入學,在同一班級有商科、理工科、也有綜合高中生等,容易造成學習當下各學員其先備知識參差不齊,導致教師在教材授課難易度的掌控上相當不易。

2. 缺乏程式實作題目演練機會:程式設計首重基礎邏輯知識建構,同時更需要藉由大量程式問題演練的實務撰寫機會,以達到累積程式開發與除錯等經驗。相關研究學者指出:學生需要經常透過「做中學」來改進學習,用以提昇學員更多反思機會。反觀現實學校課程授課時間安排上,往往無法提供充裕時間讓學生進行大量程式問題的演練機會。

3. 缺乏學習狀態回饋與補救教學機制:學生大多只能依賴教師授課當下的課程講解及問題反應,若課後仍有疑問,學生無法獲得教師的輔導,教師也沒有管道了解學生學習狀態。長久下來,當學生遇到程式寫作問題時,若無法立即提供問題諮詢與解惑,學生經常導致選擇學習放棄,以及錯過補救教學之可能機會。

4. 教師教學事務負擔過重:一般修讀程式設計學生人數普遍過多,經常造成課程試卷或作業評量不易落實,致使教師是心有餘但力不足。例如:當教師針對某特定學習單元,提供程式題目讓學生加強演練,學生練習完成繳卷結束後,教師若要將每位學生的作答內容一一檢視,經常需要花費大量時間評量,導致教師只能選擇性的加強演練,亦或委由課程助教協助處理上述事務,長遠觀察此現象,可以發現容易錯失提昇教學品質的寶貴機會。

5. 學生學習動機不足:學生普遍缺乏自信心與問題解決能力,且無法獨立自主學習,在遇到問題時,往往無法運用既有知識與經驗,循序漸進的提出解決問題的演算法。

6. 教師無法掌握學生的學習歷程:學習程式設計是一項著重邏輯思考、語法嘗試、問題除錯,與觀念反思的綜合學習過程,若沒有藉助其它媒介記錄上述各學習者的學習歷程,實在不容易追蹤學習者在學習上遭遇的問題點為何?

有鑑於上述國內技職教育現場所遭遇的挑戰,本計畫規劃自行發展Python程式雲端教學輔助平台工具,在該平台上除了學生可隨時進行問題發佈分享外,教師亦可嚴謹規劃針對各教學單元同步程式出題,亦即教師與學生均可將程式題目發佈分享,全班學生可同步上線進行上述問題的演練,其間各學生的作答狀況,將全程記錄下來(含編繹錯誤的學生程式碼),以提供教師後續學生學習問題的診斷。除此之外,為了降低教師需要投入大量時間評量學生出題與作答內容的正確性,本計畫將針對學生繳交的作答內容,創新研發一個可以自動化評量程式內容正確性的功能,同時也可即時回饋給學習者其作答內容結果的正確性,以及程式執行發生錯誤原因的解說,讓學生在第一時間即時了解自身作答狀況,引導學生錯誤內容之更正。除了減輕教師在學生作答閱卷評量的人力負擔,也強化學習者在學習上的成就感及參與動機,更重要的效益是學生們在練習作答過程中,可立即獲得作答之後的回饋,藉以持續引導學生問題的修正,以及改善學生的自我效能並提昇學習成效。

教學研究設計

根據相關研究報導,有許多針對網路學習活動,提出自動化評量的方法用以改善學習者的學習表現 。具體來說,針對探究學習活動,透過學習者在網路上輸入查詢關鍵字來分析學習者對學習任務的了解程度,經由系統記錄學習活動所產生的歷程資料,用以自動化評估學習者的問題解決能力。另外,也有學者曾針對程式語言的學習活動,提出線上自動化評量方法的研究報告,例如:學者曾針對C程式語言,發展一個線上自動評量方法,該方法可針對學習者的程式作答內容,自動量化程式語意上的得分分數,用以評量學習者的程式寫作能力。另外,學者針對Java程式語言,提出一項評量工具,目的在於檢測學習者程式寫作內容的得分數並回饋檢測結果,用以引導學習者修正學習方向,不僅如此,上述工具更進一步分析學生學習記錄,統整學習成效提供給教師,做為後續教學活動的調整。最近,學者更針對學生的Java程式作答內容,強化其系統評量後的正確性,提供更佳的回饋資訊給學習者與教師,以做為後續學習活動調整的依據。

由上述研究結果可以發現,透過自動化評量程式的作法,有助於程式學習者提昇學習成效,並有效降低教師在課程活動的教學負擔,相關貢獻原因可歸納如下:

  1. 針對各別學習者提供自我學習的機制:各別學習者可利用自己的登入帳號,進行學習活動,其間系統可各別記錄其學習活動的狀態,以提供給學習者自身反思學習的依據,藉以引導後續學習的方向。尤其針對低成就的學習者,可提供適性化的輔助學習策略。
  2. 自動化評量作法提供即時回饋機制:學習者完成作答內容後,可上傳內容讓系統自動檢測正確性,其中可包含指令的正確性,以及執行結果的正確性,利用自動化評量的機制與整合系統回饋的導引學習機制,讓學習者有更明確的學習方向,以及後續修正學習的依據。
  3. 大幅降低教師教學負擔:一般修讀程式設計課程經常人數眾多,教師常常無法同時提供所有學習者課程互動支援。然而,透過線上系統的功能運作,學習者可進行個人化的學習活動,同時獲得初步的學習回饋,可大幅減輕教師在教學上的負擔。

教學研究歷程

每週共有三堂程式設計課,課程學習單元主要規劃內容為「基本變數認識」、「條件判斷式」、「迴圈」、「函數」、「串列」、及「字串」,每週在結束課程學習單元介紹後,即實施自動化評量教學活動,

  • 在第一週實施自動化評量活動前先進行10-20分鐘的系統操作介紹,接著學員登入本研究提出的自動化評量平台,活動過程中完全採用開放式學習環境,參與者可透過網際網路尋找相關課程資料,彼此間亦可相互討論或向教師提問;
  • 第二週至第六週學員們繼續使用本研究提出的自動化評量平台,教師會依據教學進度,於課前事先將演練題目彙整到相關題組,提供學員進行程式問題實作與演練。

教學實踐成果

國內目前雖然在教育市場已有自動批閱程式功能類似的平台,且對於提升同學的學習興趣與學習成效已獲得不錯的正面肯定,然而上述平台目前均需額外付費才能使用,而且授權索費每一學生授權帳號,若以常遠規畫學校課程教學活動,仍是值得商榷的問題。本計畫在查閱國內外論文報導後,似乎未發現有相關提出「整合自動評量方法到問題發佈學習活動」的研究。因此,針對現況國內外在上述相關領域的報導內容研讀、分析歸納後,本計畫除了延續目前類似付費平台的優點外,再提出改善教學現場問題的配套做法,其中創造的特色教學成果重點項目包含:

  1. 提供師生雙方均可同步發佈程式問題且平台立即自動檢測作答正確性的嚴謹判讀機制,整合上述兩項技術是目前教育現場創新教學新的應用模式,成效值得進一步驗證。
  2. 此外,平台上不單單只有教師可獲得對學生的學習狀態資訊與每位學生每道題目的演練作答詳細資訊外,學生彼此也可知道同儕在學習上的成就訊息,這類競爭性的訊息,將可激發同儕的榮譽感,同時也營造了以班級為主體的合作學習新氛圍,對於教師採取多元教學活動設計者,提供具有高度的彈性規畫新作法。
  3. 最值得一提的是,本計畫讓平台附予更具引導學習錯誤更正的回饋機制,這是目前教育市場平台中所欠缺的重要功能。本計畫平台,學生不只知道程式錯在那裡,更讓他們知道寫錯的原因是什麼,上述二項除錯過程中的重要資訊,對於程式學習者而言是最具價值的寶貴資訊,學生可以創造自主學習的新機會,教師可以看到學生積極投入學習的新氣象,是從事程式設計教學活動過程中,教師最樂見的情境之一。
  4. 計畫所發展的平台,可提供給全國教育單位測試使用,方便教師培育更多產業程式設計人才。同時針對平台教學活動,已建置諸多實作應用Python程式設計題庫,作為未來教育工作者共同分享的新教材。

教學反思與未來計畫省思

國內在程式設計課程的授課方式,傳統大多會以教師為主的講授方式,即教師投影片講解,然後命題給學生練習演練。一般而言,修讀程式設計的人數經常過多,導致教師需要投入大量時間批閱學員程式演練後的作答內容,造成教師心有餘而力不足的現象。

本研究藉由自動化評量系統的輔助,即時讓學習者了解自身作答內容的正確性,並給與適當的系統回饋,引導學生能主動投入更多的學習反思體驗與自主學習的機會,過程中特別強調以學習者為主的學習方式,該方式與目前的翻轉學習有相似之處,即學習的主體應以學生為主,讓學員在繼有的先備知識之下,能根據反思之後的想法,將所學的內容學以致用,並將學習心得與同儕一起分享,達到群體共學之成效。

另外,就本計畫案而言,特別針對以「技術實作」為教學活動執行重點,強調學生必需由做中學,循序深化反思,並將所學內容應用於未來實務產業界中。此外,申請者目前均持續與產業界有實質互動合作機會,特別感受到目前產業界急需什麼類型的資訊人才,以及需要什麼前瞻性資訊技術,身為教育現場的一份子,希望及早為學生們打好基礎,提供嚴謹程式寫作技巧與思維,讓他們在學校就能與產業提前接軌,未來進入職場時也能立即銜接產業人才技能需求行列。

執行心得分享