English  |  正體中文  |  简体中文  |  Post-Print筆數 : 27 |  Items with full text/Total items : 112721/143689 (78%)
Visitors : 49521558      Online Users : 862
RC Version 6.0 © Powered By DSPACE, MIT. Enhanced by NTU Library IR team.
Scope Tips:
  • please add "double quotation mark" for query phrases to get precise results
  • please goto advance search for comprehansive author search
  • Adv. Search
    HomeLoginUploadHelpAboutAdminister Goto mobile version
    政大機構典藏 > 資訊學院 > 資訊科學系 > 學位論文 >  Item 140.119/119294
    Please use this identifier to cite or link to this item: https://nccur.lib.nccu.edu.tw/handle/140.119/119294


    Title: 以Gradle與Spock為基礎的Java程式作業自動收發與批改系統
    An Assignment Processing System for Java Programming Based on Gradle and Spock
    Authors: 顏碩亨
    Yen, Shuo-Heng
    Contributors: 陳正佳
    Chen, Cheng-Chia
    顏碩亨
    Yen, Shuo-Heng
    Keywords: 程式作業
    自動作業收發
    自動作業批改
    作業處理系統
    測試架構
    Gradle
    Spock
    Assignment processing
    Java programming
    Date: 2018
    Issue Date: 2018-08-10 10:41:35 (UTC+8)
    Abstract: 學習程式設計已經蔚為全世界的潮流,無論是針對一般大眾的網路平台,或是針對一般學生的正規學校,均提供確來越多的各種程式語言學習課程。然而由於程式作業是程式設計課程不可或缺的一環,隨著修課人數的遽增,無可避免的將產生排山倒海的作業量,這將為授課老師或助教造成沉重負擔,因為手動批改作業需要冗長的時間,此外也無法給予學生及時的回饋。此時,我們需要用更好、更有效率的方式,來自動化的管理與批改程式作業。
    本研究提出的程式作業管理工具,相較於其他類似工具,例如: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.
    Reference: [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
    Description: 碩士
    國立政治大學
    資訊科學系
    103753027
    Source URI: http://thesis.lib.nccu.edu.tw/record/#G0103753027
    Data Type: thesis
    DOI: 10.6814/THE.NCCU.CS.007.2018.B02
    Appears in Collections:[資訊科學系] 學位論文

    Files in This Item:

    File SizeFormat
    302701.pdf2204KbAdobe PDF2214View/Open


    All items in 政大典藏 are protected by copyright, with all rights reserved.


    社群 sharing

    著作權政策宣告 Copyright Announcement
    1.本網站之數位內容為國立政治大學所收錄之機構典藏,無償提供學術研究與公眾教育等公益性使用,惟仍請適度,合理使用本網站之內容,以尊重著作權人之權益。商業上之利用,則請先取得著作權人之授權。
    The digital content of this website is part of National Chengchi University Institutional Repository. It provides free access to academic research and public education for non-commercial use. Please utilize it in a proper and reasonable manner and respect the rights of copyright owners. For commercial use, please obtain authorization from the copyright owner in advance.

    2.本網站之製作,已盡力防止侵害著作權人之權益,如仍發現本網站之數位內容有侵害著作權人權益情事者,請權利人通知本網站維護人員(nccur@nccu.edu.tw),維護人員將立即採取移除該數位著作等補救措施。
    NCCU Institutional Repository is made to protect the interests of copyright owners. If you believe that any material on the website infringes copyright, please contact our staff(nccur@nccu.edu.tw). We will remove the work from the repository and investigate your claim.
    DSpace Software Copyright © 2002-2004  MIT &  Hewlett-Packard  /   Enhanced by   NTU Library IR team Copyright ©   - Feedback