陳志+盧海燕+高翔



摘 要:為提高程序設計能力訓練水平,設計了一種程序設計在線自主學習模式,通過課內外自主學習和多樣化的用戶端支持,構建移動互聯網環境下普適化程序設計學習體系,并以此實現一個程序設計在線自主學習系統。該系統由系統服務平臺、Web客戶端系統、移動終端系統、普適化程序設計學習應用等構成。系統功能測試和用戶報告表明,該系統能夠有效支撐程序設計在線自主學習模式的實施,從而提高用戶學習程序設計的興趣、效率和自主性。
關鍵詞:程序設計;學習模式;在線學習;自主學習;移動終端
DOIDOI:10.11907/rjdk.162141
中圖分類號:G433
文獻標識碼:A文章編號:1672-7800(2016)012-0193-04
0 引言
當前軟件人才培養的重要目標是有效提升學生的程序設計能力,使其擁有程序設計語言、數據結構、算法、計算機理論、軟件工程等專業知識以及分析與解決實際問題的能力。常規的程序設計能力訓練以傳統課堂教學模式為主,側重于理論教學,強調應試教育,而忽視對學生學習興趣的培養,通常使學生處于被動學習狀態。近年來,隨著ACM國際大學生程序設計競賽(ACM-ICPC)的發展,程序設計能力訓練能夠利用成熟的ACM-ICPC在線評判系統,形成基于ACM-ICPC的程序設計學習模式。
該模式可激發學習者對程序設計的學習興趣,并幫助其提高程序設計水平[1]。
當前移動互聯網和移動終端設備已成為人們日常學習、工作和生活中獲取信息的重要手段,以此形成的普適化學習模式讓人們的注意力中心回歸到要完成的學習本身,構建出一個泛在的、隨時隨地可獲得的智能化教育體系[2]。本文為程序設計能力訓練設計了一種在線自主學習模式,研究將基于Web的ACM-ICPC在線評判系統[3]擴展至移動互聯網環境下的移動終端平臺,從而為學習者搭建起交流平臺,形成一種高效的普適化程序設計學習體系。
1 程序設計在線自主學習模式設計
網絡與信息技術的發展使程序設計學習可以突破時空限制,將現有的程序設計學習資源和平臺有機整合,有助于實現在線自主的學習方式。本文將程序設計在線自主學習模式劃分為課內學習、課外學習兩個階段,如圖1所示。課內學習階段主要適用于在校的程序設計學習者,要求提高實踐課時比例,增加自主學習內容,因此采用適合在線學習的程序設計練習題目;課外學習階段適用于所有程序設計學習者,要求構建課外學習在線資源,因此采用Web客戶端、移動終端等多樣化用戶端,并逐步構建形成程序設計在線自主學習社區。
程序設計在線自主學習模式融合常規學習模式的優點,利用現有移動互聯網和移動終端設備發展成果,使程序設計學習趨向于全天候在線及自主可控。課內學習階段由課堂知識傳授模式發展到包括實踐學習、自主學習、在線學習等多樣化的綜合學習模式。課內學習階段強調多樣化的用戶端,從個人自主學習模式逐步導向協作互助的社區學習模式。由此可見,程序設計在線自主學習模式為程序設計能力訓練提供了一個便捷、開放、互動的普適化程序設計學習平臺。
2 程序設計在線自主學習系統設計
程序設計在線自主學習模式的具體實施依賴于系統服務平臺、Web客戶端系統、移動終端系統以及普適化程序設計學習應用等,這些系統構成了程序設計在線自主學習系統,如圖2所示。
圖3給出了程序設計在線自主學習系統的功能。程序設計在線自主學習系統服務平臺可以使用現有的ACM-ICPC在線評判系統[1,4]。移動終端系統主要實現數據的獲取,與程序設計在線自主學習系統服務平臺進行交互,一方面利用網絡通過服務平臺獲取數據,另一方面訪問本地數據庫讀取數據。與服務平臺進行交互時,采用HTTP協議進行通信以及JSON解析[5]。下面給出幾個重點功能模塊設計。
2.1 顯示題目列表
在程序設計在線自主學習移動終端系統中,顯示題目列表功能模塊包括題目列表界面設計、與服務平臺的交互設計。圖4給出了移動終端系統的顯示題目列表功能模塊類圖。
在程序設計在線自主學習系統服務平臺中,顯示題目列表獲取移動終端系統發送來的請求后,從數據庫獲取題目列表數據,然后將這些數據以JSON對象的形式返回移動終端系統。圖5為服務平臺的顯示題目列表功能模塊類圖。
2.2 顯示代碼提交狀況功能模塊設計
移動終端系統的顯示代碼提交狀況功能模塊包括編輯代碼界面設計、提交代碼交互設計、代碼提交狀況顯示界面設計等。圖6給出了移動終端系統的顯示代碼提交狀況功能模塊類圖。
服務平臺的顯示代碼提交狀況功能模塊設計主要為獲取移動終端系統發送來的提交代碼,對這些代碼進行評判,再將評判結果保存到后臺數據庫中。圖7為服務平臺的顯示代碼提交狀況功能模塊類圖。
2.3 提示詞功能模塊設計
移動終端系統的提示詞功能模塊設計主要包括添加默認提示詞、添加自定義提示詞以及顯示提示詞。圖8為該功能模塊的類圖。
3 程序設計在線自主學習系統實現與測試
為實施程序設計在線自主學習模式,上一節詳細設計了程序設計在線自主學習系統,下面給出該系統的具體實現過程,并進行系統測試。
3.1 系統實現
在程序設計在線自主學習系統實現中,系統服務平臺采用南京郵電大學的ACM程序設計在線評判系統(NOJ)[4],移動終端平臺采用Android[6],程序設計普適化應用包括在線開放練習、在線實時比賽、訓練交流等。以下為用戶提交代碼在系統服務平臺上的執行情況示例:
1241551 [http-bio-8080-exec-12] INFO com.nuaa.Hibernate.SessionFactory - commit tx
1001
整數求和
1268658 [http-bio-8080-exec-9] INFO com.nuaa.Hibernate.SessionFactory - commit tx
1
gao
1001
GCC_prompt
1683525 [http-bio-8080-exec-9] INFO com.nuaa.Hibernate.SessionFactory - commit tx
1683637 [Thread-3] INFO com.nuaa.util.judge.JudgeWaiter-JudgeWaiter提前題目ff8080814db2ec16014 d30 5addc0001
1683795 [Thread-3] WARN com.nuaa.Hibernate.SolutionDAO-getting Solution instance with id: ff808081 4db 2ec16014d305addc0001
1683989 [Thread-3] WARN com.nuaa.Hibernate.SolutionDAO – getting Solution instance with user_name: gao
getting Solution instance with user_name: gao
1684093 [Thread-3] INFO com.nuaa.Hibernate.SessionFactory - commit tx
1684093 [Thread-3] INFO com.nuaa.util.judge.Checker-開始評判--D:\\www\\AcmJudge\\ ff8080814db2ec16014 d305addc0001 1001 1 100 33600
1685739 [Thread-3] INFO com.nuaa.util.judge.Checker-評判結束
3.2 系統測試
下面對程序設計在線自主學習系統進行功能測試和在線自主學習模式的用戶使用測試。在系統功能測試中,表1是顯示代碼提交狀況的模塊用例表,該表用于測試系統是否能夠正確提供給用戶顯示代碼的運行結果。其它測試用例與之類似,所有功能測試結果均為“通過”。此外,根據在線自主學習模式的用戶使用測試報告,用戶對程序設計在線自主學習系統及其支持的在線自主學習模式普遍持有肯定意見。其中,74%以上的用戶使用Web客戶端、移動終端等多樣化用戶端登錄系統;86%以上的用戶認為現在或未來需要在程序設計能力訓練中使用移動終端系統;近94%的用戶認為程序設計在線自主學習系統實現了隨時隨地的普適化學習;85%以上的用戶認為
在線自主學習模式提高了程序設計學習的興趣和效率;近95%的用戶認為在線自主學習模式能夠提高或有時能夠提高程序設計學習的自主性。
4 結語
本文提出了一種在移動互聯網環境下的程序設計在線自主學習模式,該模式將程序設計能力訓練劃分為課內學習和課外學習兩個階段,每一個階段都強調程序設計的在線學習、自主學習和社區協作學習,這種普適化學習體系由系統服務平臺、Web客戶端系統、移動終端系統以及具體學習應用等構成。為此,本文設計與集成開發了一個程序設計在線自主學習系統,該系統使用現有的ACM-ICPC在線評判系統作為系統服務平臺,支持包括Web客戶端、移動終端在內的多樣化用戶端,實現了程序設計在線自主學習模式,有效提高了學習者的自主化程序設計能力訓練效率。
參考文獻:
[1] 陳志, 李夢澤, 馬嫣, 等. 基于 ACM 程序設計競賽的常規教學改革[J]. 電氣電子教學學報, 2011, 33(6): 18-20.
[2] PENA-AYALA A, CARDENAS L. A revision of the literature concerned with mobile, ubiquitous, and pervasive learning: a survey[C]. Switzerland: Springer International Publishing, 2016: 55-100.
[3] 蔡崇超. 基于 Web 的在線判題系統設計與實現[J]. 軟件導刊, 2016, 15(3): 107-109.
[4] 南京郵電大學. NOJ: NJUPT ACM online judge[EB/OL]. http://acm.njupt.edu.cn.
[5] SMITH B. Beginning JSON[M]. New York: Apress, 2015.
[6] DARCEY L, DELESSIO C, CONDER S, et al. Android 應用開發入門經典[M]. 北京:人民郵電出版社, 2014.
(責任編輯:黃 健)