因應AI時代的來臨,教育部成立「推動大學程式設計教學計畫」,希望能普及大學程式設計教育。由計畫團隊成員國立臺灣師範大學資訊工程學系蔣宗哲副主任帶領的學生于子緯、莊博傑和盧昭華開發「Python創作分享平台」,除了可以自動批改與呈現程式設計課程的作業,也能讓學生交流彼此的創作思維,互相觀摩作品,進而提升學習動力。
手工批改程式設計功課效率差 教授:要數位自己創!
批改作業是一般課程中稀鬆平常的事情,但對於程式設計相關課程來說卻十分頭痛。就算使用一般數位學習平台,學生和教授仍需一來一往上傳下載作業,再進一步測試程式碼,耗費許多時間。
于子緯、莊博傑和盧昭華大一時就注意到,系上許多課程作業都仰賴教學助理一一「手動」批改,相當沒有效率。他們於是詢問系上的紀博文老師,為何不建置自動批改作業的網頁或平台,沒想到,紀老師卻回應,「要用可以,那你們自己去做出來。」
不過,三人沒有被紀老師提出的難題嚇住,反而拾起研讀資訊工程學的初衷,于子緯分享,「我們學程式設計,就是想要解決這種問題,希望以程式去自動化需要大量人工完成的任務。」幾位志同道合的同學紛紛捲起袖子,從改良常見的Online Judge系統著手,設計符合紀老師需求的程式設計教學平台。
獨創作品觀摩互動功能 盼促同儕交流進步
幾個人的行動,很快引起蔣宗哲老師的注意,邀請他們加入「推動大學程式設計教學計畫」,一同開發程式設計教學平台。三人分別負責設計介面、系統和網路機器的程式,初版成品迅速在三個月後完成,並直接應用於蔣老師的課程中,藉此亦可以汲取老師和學生雙方的使用者回饋,有利於團隊滾動修改平台設計。
不過這條路走得並沒有想像中順遂,于子緯指出,設計平台的初衷,是希望可以優化老師的教學體驗。因此,如何符合所有老師的需求,讓團隊苦惱許久。最終,他們將老師佈置的功課分為「測驗」和「主題」二種類型,前者可以自動批改並呈現學生輸入的程式碼,適用於較簡易的初階功課;後者可以搭配資料集呈現作品,讓學生學習使用程式碼分析數據、製作視覺化圖表等技巧。
此外,在「主題」類型的作業中,由於每個人的思考邏輯不同,同樣的作業,所創作出來的程式可能也會有相異之處。因此,團隊認為,平台若能促進同學間交流自己的寫法,相信有助於學生進步。所以,團隊設計讓學生的作品不再只有老師可以審閱,同學間也可以互相觀摩,還能夠留言按愛心互動。
一個班級討論完成不代表結束,考量到建置一個教材需要耗費許多心神,平台設計公開分享功能。若教師願意,可以在平台上公開課程,或使用他人設計的教材,減輕備課負擔。並且學生在平台中的一應表現,也會自動記錄,協助教師掌握學生學習進度,以作為評量標準。
于子緯分享,有同學原本使用較複雜的程式語言創作,經過熱心同學留言指點後,發現更加簡潔的創作方式。如此,以往單向的學習流程,就會變成整個班級的「學習活動」。不過這樣開放的設計,也可能導致同學間互相抄襲作業。對此,團隊認為可以在平台中加入比對「程式相似度」的功能,以杜絕抄襲。
「但這目前不是迫切需求。」于子緯指出,目前平台的問題,在於無法直接促進同學交流。未來,團隊可能會開發任務系統,老師將可以派發任務,要求學生在同學的作品底下互動分享心得等,落實在分享中學習的平台初衷。
目前,平台已經開發完成,將於下個學期開始,邀請各大專校院的老師使用。團隊也將持續維運平台,未來希望能夠開放原始碼,讓各界使用。
非本科也可學程式設計 莊博傑:結合專業增發展性
AI時代讓程式設計成為相當熱門的技能,「推動大學程式設計教學計畫」鼓勵非資訊科系學生學習程式設計,可以期待平台未來能協助更多的老師和學生。曾擔任系上大一程式設計課程教學助理的莊博傑就發現,課程有許多外系學生來修習。不過,就他觀察,外系同學可能覺得太難,棄修比例也較高。
談起給非資訊科系學寫程式同學的建議,于子緯分享,資工系的知識很廣泛,除了程式設計,也有不少人專精於機器學習、區塊鏈等領域。因此,外系同學不一定要以擁有工程師水準自許,「其實現在有很多服務都和數位結合,像是數位支付、物聯網等,同學也可以成為一個能善用工具的人,或者善用數位工具去和自身的專業領域結合。」外系同學來修習資工系的課程,除了學習程式設計,于子緯認為,「更重要的,我想是培養軟體思維」。
莊博傑則強調,「可以先想想自己為什麼要學程式設計,有目的才會帶來動機。」他表示,如果對自己的專業很有熱情,可以思考如何在其中結合程式設計技巧,例如美術專業的學生,也許能嘗試研究自動化的程式生成藝術,應用在最近很流行的NFT中。
誠如「推動大學程式設計教學計畫」總計畫主持人國立政治大學資訊科學系李蔡彥教授於聯合新聞網受訪時提到的想法(聯合新聞網/《評鑑》雙月刊第93期),培養學生運算思維及鼓勵非資訊科系學生接觸程式設計,不見得學生將來在職場上都要寫程式,而是希望學生具備與程式設計師溝通的能力、具備如何讓資訊科技協助產業轉型的想像。目前非常缺乏既懂得資訊科技又懂得各個不同專業領域,能在產業界做數位轉型的人才,所以藉由程式設計培養非資訊科系學生成為跨領域人才,將來這些人才投入產業界的時候,才會擴展整個產業未來發展的想像空間。
採訪.撰稿 / 阮珮慈