English  |  正體中文  |  简体中文  |  全文筆數/總筆數 : 81064/110492 (73%)
造訪人次 : 20979080      線上人數 : 452
RC Version 6.0 © Powered By DSPACE, MIT. Enhanced by NTU Library IR team.
搜尋範圍 查詢小技巧:
  • 您可在西文檢索詞彙前後加上"雙引號",以獲取較精準的檢索結果
  • 若欲以作者姓名搜尋,建議至進階搜尋限定作者欄位,可獲得較完整資料
  • 進階搜尋
    政大機構典藏 > 理學院 > 資訊科學系 > 學位論文 >  Item 140.119/119294
    請使用永久網址來引用或連結此文件: http://nccur.lib.nccu.edu.tw/handle/140.119/119294


    題名: 以Gradle與Spock為基礎的Java程式作業自動收發與批改系統
    An Assignment Processing System for Java Programming Based on Gradle and Spock
    作者: 顏碩亨
    Yen, Shuo-Heng
    貢獻者: 陳正佳
    Chen, Cheng-Chia
    顏碩亨
    Yen, Shuo-Heng
    關鍵詞: 程式作業
    自動作業收發
    自動作業批改
    作業處理系統
    測試架構
    Gradle
    Spock
    Assignment processing
    Java programming
    日期: 2018
    上傳時間: 2018-08-10 10:41:35 (UTC+8)
    摘要: 學習程式設計已經蔚為全世界的潮流,無論是針對一般大眾的網路平台,或是針對一般學生的正規學校,均提供確來越多的各種程式語言學習課程。然而由於程式作業是程式設計課程不可或缺的一環,隨著修課人數的遽增,無可避免的將產生排山倒海的作業量,這將為授課老師或助教造成沉重負擔,因為手動批改作業需要冗長的時間,此外也無法給予學生及時的回饋。此時,我們需要用更好、更有效率的方式,來自動化的管理與批改程式作業。
    本研究提出的程式作業管理工具,相較於其他類似工具,例如:Moodle VPL、Jupyter nbgrader等,除了提供程式作業的發佈、編輯和繳交功能之外,更重視程式作業的題目測試生成、程式評量,以及作業回饋等。
    本系統的主要特色之一是具備能力,可以從單一程式作業解答,產生對應的程式作業,以及測試與評分程式,因此可節省課程教師準備題目時間。出題者僅需提供一完整Java 程式解答檔,指定其中部分方法為作業題目,再事先備齊每一題目的測試輸入資料以及計分方式,即可利用本系統的人機介面操作,以Java註記(annotations)的方式為每一題目注入測試數據與評分資訊,後續系統操作即可經由解答程式分析,萃取相關資訊,再經由樣板程式而產生所有相關作品,例如分發給學生的程式作業,可結合作業解答與學生交來作業的整合測試與評分程式等。我們的系統透過Gradle自動化所有程式作業的建構與理。自動產生的測試與評分程式使用Spock測試框架進行測試與評分。最後系統不但能提供每位學生整份程式作業的評量結果,可回饋給學生供其做為釐清盲點以及改進錯誤的參考,也同時提供報告,協助授課老師快速掌握學生的學習情況。而在儲存部分,我們使用了Nexus 做為所有相關資料的集中倉儲,例如教師提供的作業解答、自動生成的作業題目、測試與評分碼,所有學生的繳交作業,以及最後的測試與評分報告等。
    The learning of programming has become a worldwide trend. More and more courses related to various programming languages are being offered on the Internet for the public and from various schools for the students. However, since programing assignment is an indispensable part of a programing course, the increase of students inevitably brings about a large amount of programming assignments, which will cause an extremely heavy burden on graders and teachers if all assignments are to be processed and graded manually. It would not only take a long time, but also give students no feedback in time. In order to reduce the load of assignments processing, we need to automate the management and operations of programming assignments in a better and more efficient way.
    This thesis comes up with a management and processing system of programming assignments. In addition to the functionality of editing, distribution, and submission of assignments, compared with other systems such as Moodle VPL, and Jupyter nbgrader, etc., our system pays more attention on different aspects of assignment generation and processing, such as problem generation, test code generation, assessment automation and feedback to students, etc.
    One key feature of our system is its ability to generate assignment problems and test/assessments code from a single solution file together with test input and grading information provided by the teacher. It can thus save a lot of time for the teacher. To initialize an assignment using our system, the teacher can simply designates some methods of the solution file as assignment problems. All test input as well as grading information prepared in advance for each problem can then be injected into the corresponding method as annotations via JavaFX GUI operations. The system can later apply java reflection to inspect these annotations from the annotated solution file and generate all related artifacts such as programming assignments and test/assessment code using predefined Velocity templates.
    Our system employs Gradle to automate the building and management of programming assignments. The generated test code will be executed using Spock testing framework. The result of assessment can be used as a feedback to clarify students' weakness and help correct errors. At the same time, it provides reports to help teachers quickly grasp what students have learned. Finally, our system uses Nexus as the central repository of all related artifacts such as solution code provided by teachers, automated generated assignments and test code, students' submitted assignments, as well as final assessment reports etc.
    參考文獻: [1] Hiroki Kitaya and Ushio Inoue,“An Online Automated Scoring System for Java Programming Assignments.”in International Journal of Information and Education Technology, Vol. 6, No. 4, April 2016.
    [2] Caiza J. C. and Del Alamo J. M. ,“Architecture to Support Automatic Grading Processes in Programming Teaching" in Revista Politécnica - Vol. 36, No. 1, Septiembre 2015.
    [3] Sumit Gulwani, Rishabh Singh, Armando Solar-Lezama, “Automated Feedback Generation for Introductory Programming Assignments”,in ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2013), pages 15–26, in June 2013.
    [4] Vreda Pieterse,“Automated Assessment of Programming Assignments”in ResearchGate conference paper,April 2013.
    [5] Juan C. Rodríguez-del-Pino, Enrique Rubio-Royo, Zenón J. Hernández-Figueroa, “A Virtual Programming Lab for Moodle with automatic assessment and anti-plagiarism features”, in Departament of Informática y Sistemas University of Las Palmas de Gran Canaria , Conference Paper , January 2012.
    [6] Dominique Thiébaut ,“Automatic evaluation of computer programs using Moodle's virtual programming lab (VPL) plug-in” , in Journal of Computing Sciences in Colleges , Volume 30 Issue 6, pages 145-151 , in June 2015.
    [7] Arcuri, J. Campos, and G. Fraser, “Unit Test Generation During Software Development: EvoSuite Plugins for Maven, IntelliJ and Jenkins”,in IEEE International Conference on Software Testing, Verification and Validation (ICST), 2016, pages 401-408.
    [8] Maven. Retrieved March (2018). From https://maven.apache.org/
    [9] Gradle. Retrieved March (2018). From https://gradle.org/
    [10] Ant. Retrieved March (2018). From:https://ant.apache.org/
    [11] Sbt. Retrieved April (2018). From:https://www.scala-sbt.org/index.html
    [12] Gulp. Retrieved April (2018). From:https://gulpjs.com/
    [13] SCons. Retrieved April (2018). From:https://scons.org/
    [14] CMake. Retrieved April (2018). From:https://cmake.org/
    [15] Grunt. Retrieved April (2018). From:https://gruntjs.com/
    [16] Gradle v.s. Maven Comparison:https://gradle.org/maven-vs-gradle/
    [17] Nexus Repository. Retrieved May (2018). From https://www.sonatype.com/nexus-repositor y-sonatype
    [18] NPM. Retrieved May (2018). From https://www.npmjs.com/
    [19] Docker. Retrieved May (2018). From https://www.docker.com/
    [20] NuGet. Retrieved May (2018). From https://www.nuget.org/
    [21] IntelliJ. Retrieved May (2018). From https://www.jetbrains.com/idea/
    [22] Hudson. Retrieved May (2018). From http://hudson-ci.org/
    [23] Jenkins. Retrieved May (2018). From https://jenkins.io/
    [24] JavaFX . Retrieved May (2018). From http://www.oracle.com/technetwork/java/javase/o verview/javafx-overview-158620.html
    [25] JavaFX Scene Builder . Retrieved July (2018). From https://www.oracle.com/technetwor k/java/javase/downloads/javafxscenebuilder-info-2157684.html
    [26] 單元測試Unit Testing . Retrieved May (2018). From https://en.wikipedia.org/wiki/Un it_testing
    [27] TestNG. Retrieved May (2018). From http://testng.org/doc/
    [28] Spock. Retrieved May (2018). From http://spockframework.org/
    [29] Junit. Retrieved May (2018). From:http://junit.org/junit4/
    [30] Moodle. Retrieved May (2018). From:https://moodle.org/?lang=zh_tw
    [31] Moodle VPL. Retrieved May (2018). From https://moodle.org/plugins/mod_vpl
    [32] Specification language. Retrieved May (2018). From https://en.wikipedia.org /wiki/Sp ecification_language
    [33] Execution server(vpl-jail-service) . Retrieved May (2018). From http://vpl.dis.ulpgc.es/index.php/support/2014-09-27-15-06-22/40-how-to-install-vpl-jai l-system
    [34] Jmock. Retrieved May (2018). From http://www.jmock.org/
    [35] Rspec. Retrieved May (2018). From http://rspec.info/
    [36] Groovy. Retrieved May (2018). From https://zh.wikipedia.org/wiki/Groovy
    [37] BDD(Behavior-driven development) https://en.wikipedia.org/wiki/Behavior-driven_dev elopment
    [38] C#. Retrieved May (2018). From https://en.wikipedia.org/wiki/ C_Sharp_(programming _language)
    [39] Ruby. Retrieved May (2018). From https://www.ruby-lang.org/zh_tw/
    [40] Scala. Retrieved May (2018). From https://zh.wikipedia.org/wiki/Scala
    [41] nbgrader. Retrieved May (2018). From https://nbgrader.readthedocs.io/en/stable/
    [42] Apache Velocity. Retrieved May (2018). From http://velocity.apache.org/
    [43] FreeMarker. Retrieved May (2018). From https://freemarker.apache.org/
    [44] Jamon. Retrieved May (2018). From http://www.jamon.org/
    [45] Application Framework. Retrieved May (2018). From http://www.dotspace.idv.tw/Fram eworks.htm
    [46] Vert.x. Retrieved May (2018). From https://vertx.io/
    [47] JSF(Javaserver Faces) . Retrieved May (2018). From http://www.oracle.com/ technetwor k / topics/index-090910.html
    [48] IoC ( Inversion of Control) . Retrieved May (2018). From https://en.wikipedia.org/wiki/Inv ersion_of_control
    [49] AOP ( Aspect-oriented programming ) . Retrieved May (2018). From https://en.wikipedia.org/ wiki/Aspect-oriented_programming
    [50] Spring framework. Retrieved May (2018). From https://projects.spring.io/spring-boot/
    [51] Spring Initializr. Retrieved May (2018). From https://github.com/spring-io/initializr
    [52] Spock Report . Retrieved May (2018). From https://github.com/renatoathaydes/spock-reports
    描述: 碩士
    國立政治大學
    資訊科學系
    103753027
    資料來源: http://thesis.lib.nccu.edu.tw/record/#G0103753027
    資料類型: thesis
    顯示於類別:[資訊科學系] 學位論文

    文件中的檔案:

    檔案 大小格式瀏覽次數
    302701.pdf2204KbAdobe PDF0檢視/開啟


    在政大典藏中所有的資料項目都受到原著作權保護.


    社群 sharing

    著作權政策宣告
    1.本網站之數位內容為國立政治大學所收錄之機構典藏,無償提供學術研究與公眾教育等公益性使用,惟仍請適度,合理使用本網站之內容,以尊重著作權人之權益。商業上之利用,則請先取得著作權人之授權。
    2.本網站之製作,已盡力防止侵害著作權人之權益,如仍發現本網站之數位內容有侵害著作權人權益情事者,請權利人通知本網站維護人員(nccur@nccu.edu.tw),維護人員將立即採取移除該數位著作等補救措施。
    DSpace Software Copyright © 2002-2004  MIT &  Hewlett-Packard  /   Enhanced by   NTU Library IR team Copyright ©   - 回饋