dc.contributor.advisor | 陳正佳 | zh_TW |
dc.contributor.advisor | Chen, Cheng-Chia | en_US |
dc.contributor.author (Authors) | 顏碩亨 | zh_TW |
dc.contributor.author (Authors) | Yen, Shuo-Heng | en_US |
dc.creator (作者) | 顏碩亨 | zh_TW |
dc.creator (作者) | Yen, Shuo-Heng | en_US |
dc.date (日期) | 2018 | en_US |
dc.date.accessioned | 10-Aug-2018 10:41:35 (UTC+8) | - |
dc.date.available | 10-Aug-2018 10:41:35 (UTC+8) | - |
dc.date.issued (上傳時間) | 10-Aug-2018 10:41:35 (UTC+8) | - |
dc.identifier (Other Identifiers) | G0103753027 | en_US |
dc.identifier.uri (URI) | http://nccur.lib.nccu.edu.tw/handle/140.119/119294 | - |
dc.description (描述) | 碩士 | zh_TW |
dc.description (描述) | 國立政治大學 | zh_TW |
dc.description (描述) | 資訊科學系 | zh_TW |
dc.description (描述) | 103753027 | zh_TW |
dc.description.abstract (摘要) | 學習程式設計已經蔚為全世界的潮流,無論是針對一般大眾的網路平台,或是針對一般學生的正規學校,均提供確來越多的各種程式語言學習課程。然而由於程式作業是程式設計課程不可或缺的一環,隨著修課人數的遽增,無可避免的將產生排山倒海的作業量,這將為授課老師或助教造成沉重負擔,因為手動批改作業需要冗長的時間,此外也無法給予學生及時的回饋。此時,我們需要用更好、更有效率的方式,來自動化的管理與批改程式作業。本研究提出的程式作業管理工具,相較於其他類似工具,例如:Moodle VPL、Jupyter nbgrader等,除了提供程式作業的發佈、編輯和繳交功能之外,更重視程式作業的題目測試生成、程式評量,以及作業回饋等。本系統的主要特色之一是具備能力,可以從單一程式作業解答,產生對應的程式作業,以及測試與評分程式,因此可節省課程教師準備題目時間。出題者僅需提供一完整Java 程式解答檔,指定其中部分方法為作業題目,再事先備齊每一題目的測試輸入資料以及計分方式,即可利用本系統的人機介面操作,以Java註記(annotations)的方式為每一題目注入測試數據與評分資訊,後續系統操作即可經由解答程式分析,萃取相關資訊,再經由樣板程式而產生所有相關作品,例如分發給學生的程式作業,可結合作業解答與學生交來作業的整合測試與評分程式等。我們的系統透過Gradle自動化所有程式作業的建構與理。自動產生的測試與評分程式使用Spock測試框架進行測試與評分。最後系統不但能提供每位學生整份程式作業的評量結果,可回饋給學生供其做為釐清盲點以及改進錯誤的參考,也同時提供報告,協助授課老師快速掌握學生的學習情況。而在儲存部分,我們使用了Nexus 做為所有相關資料的集中倉儲,例如教師提供的作業解答、自動生成的作業題目、測試與評分碼,所有學生的繳交作業,以及最後的測試與評分報告等。 | zh_TW |
dc.description.abstract (摘要) | 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. | en_US |
dc.description.tableofcontents | 摘要 IIABSTRACT III目錄 V圖目錄 VII表目錄 IX第1章 序論 11.1 研究背景與動機 11.2 實現方式 21.3 論文貢獻與特色 3第2章 相關研究探討 52.1自動化建構工具 52.1.1 Maven 62.1.2 Gradle 72.2儲存庫簡介 82.2.1 Nexus Repository 82.3輔助工具介面 82.3.1 JavaFX 82.4 程式測試工具簡介 92.4.1 Junit 92.4.2 Spock 102.5 模板引擎框架 122.5.1 Apache Velocity 132.6 應用程式框架 132.6.1 Spring framework 142.6.2 Spring Boot 142.7 相似系統的分析與簡介 152.7.1 Moodle VPL(Virtual Programming Lab) 152.7.2 Jupyter nbgrader 18第3章 系統架構與實作 243.1系統架構 243.2系統實作 283.2.1輔助作業發佈介面 283.2.2程式作業發佈平台 343.2.3輔助作業測試介面 36第4章 介面操作流程與展示 384.1介面操作流程 384.2介面操作展示 404.2.1輔助作業發佈介面 404.2.2程式作業發佈平台 474.2.3輔助作業測試介面 55第5章 結論與未來研究方向 595.1 結論 595.2 未來研究方向 60參考文獻 61 | zh_TW |
dc.format.extent | 2257752 bytes | - |
dc.format.mimetype | application/pdf | - |
dc.source.uri (資料來源) | http://thesis.lib.nccu.edu.tw/record/#G0103753027 | en_US |
dc.subject (關鍵詞) | 程式作業 | zh_TW |
dc.subject (關鍵詞) | 自動作業收發 | zh_TW |
dc.subject (關鍵詞) | 自動作業批改 | zh_TW |
dc.subject (關鍵詞) | 作業處理系統 | zh_TW |
dc.subject (關鍵詞) | 測試架構 | zh_TW |
dc.subject (關鍵詞) | Gradle | en_US |
dc.subject (關鍵詞) | Spock | en_US |
dc.subject (關鍵詞) | Assignment processing | en_US |
dc.subject (關鍵詞) | Java programming | en_US |
dc.title (題名) | 以Gradle與Spock為基礎的Java程式作業自動收發與批改系統 | zh_TW |
dc.title (題名) | An Assignment Processing System for Java Programming Based on Gradle and Spock | en_US |
dc.type (資料類型) | thesis | en_US |
dc.relation.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 | zh_TW |
dc.identifier.doi (DOI) | 10.6814/THE.NCCU.CS.007.2018.B02 | - |