CN115145805A - 一种基于docker和jupyter notebook的复合类型题目在线检测方法 - Google Patents

一种基于docker和jupyter notebook的复合类型题目在线检测方法 Download PDF

Info

Publication number
CN115145805A
CN115145805A CN202110348404.XA CN202110348404A CN115145805A CN 115145805 A CN115145805 A CN 115145805A CN 202110348404 A CN202110348404 A CN 202110348404A CN 115145805 A CN115145805 A CN 115145805A
Authority
CN
China
Prior art keywords
user
evaluation
test case
file
judgment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110348404.XA
Other languages
English (en)
Inventor
李昕
孙百乐
王文婕
王志宽
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China University of Petroleum East China
Original Assignee
China University of Petroleum East China
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China University of Petroleum East China filed Critical China University of Petroleum East China
Priority to CN202110348404.XA priority Critical patent/CN115145805A/zh
Publication of CN115145805A publication Critical patent/CN115145805A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/3668Testing of software
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/3668Testing of software
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/47Retargetable compilers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Electrically Operated Instructional Devices (AREA)

Abstract

本发明公开了一种基于docker和jupyter notebook的复合类型题目在线检测方法,该方法包含:教师使用jupyter notebook出题,并编写配套的测试用例,将二者整合到docker容器中发布到在线平台;学生在线答题,更新ipynb文件;读取ipynb文件中的用户源码以及对应的测试用例;初始化评测环境;遍历每道题目,选择对应评测方法(图片判断、常规判断、文件判断、自定义判断);分析结果,得出分数。本发明在docker和jupyter notebook的环境需求下,实现了在线评测的功能,并提供了评测多种类型题目的方法。

Description

一种基于docker和jupyter notebook的复合类型题目在线检 测方法
技术领域
本发明属于计算机编程领域,涉及一种基于docker和jupyter not ebook的复合类型题目在 线检测方法。
背景技术
随着计算机、互联网技术的兴起,在线教育崭露头角,在线教学与传统教学相结合的教 学方法的优势有所体现。教师在线上布置作业,学生完成之后通过线上提交,教师线上批改, 将成绩反馈给学生,这种线上教学方式不仅利于教师统计作业完成情况,而且能给学生明确 反馈,有很好的督导作用。其中,在线评测(online judge)可以帮助教师减少评测作业的工 作量,节省时间,并且准确性高,可靠性强。还能使学生及时收到反馈,尤其适合学习编程 的同学使用。
现有的编程在线测评系统(onlinej udge)存在一些不足之处。第一,编译器灵活性差,对 于以Python为支撑语言的相关课程,不能进行试探性的编程测试。在我们的发明中,用户可 以在jupyter not ebook中进行试探性的编程,即使改变了cell的顺序,或者产生了无用的输出, 评测系统仍然可以检测最终结果正确与否。第二,功能单一。现有在线评测系统的原理通常 只是检测用户的程序返回的答案与数据库中的答案是否一致。答案的类型只能是“数字”、 “文本”,导致教师出题的类型也较为单一。另外,如果用户的答案与标准答案不一致,仅 返回“无法通过测试”,而不能针对用户的答案给出错误提示,不利于用户修正答案。本发 明内含多种检测方式,不仅可以检测“数字”、“文本”,还可以检测“图片”、“文件” 等答案类型。可以针对用户的错误答案,返回“错误类型”、“错误位置”等错误提示。有 效地解决了上述缺陷。第三,现有的在线评测系统缺少对用户源代码风格的检测机制。比如, 当教师想要检测学生对课堂所学新方法的掌握情况时,学生使用“笨拙”的解题方法虽然可 以得出正确答案,但是没有达到教师的要求。本发明可以对学生源代码风格进行检测,如果 源代码风格不符合要求,即使答案正确也无法通过测试。
Jupyter not ebook是数据分析常用工具,其优点是可以将代码分割成多个代码块(cell)运 行,特别适合做试探性的编程工作。在jupyter not ebook生成的ipynb文件中,代码块(cell) 支持多种模式(mode),如代码模式(code)、markdown模式(markdown),因此可以展现 丰富的内容。
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可 移植的镜像中,然后发布到任何流行的Linux或Windows机器上,也可以实现虚拟化。容器 是完全使用沙箱机制,相互之间不会有任何接口。这样使每个人都有独立的编程和测评环境。
在当前全国各高校纷纷开设“数据分析”、“Python程序设计”、“机器学习”以及“深度学习”课程,并广泛使用jupyter not ebook平台进行教学的前提下,迫切需要一种基于jupyter not ebook的评测方法。本发明在docker和jupyter not ebook的环境需求下,实现了在线评测的 功能。
发明内容
本发明为了克服上述缺陷,提出了一种切实可行的可以检测多种类型编程题目的方法, 本发明具体步骤如下:
S1,教师出题,并编写配套的测试用例;
S2,学生答题,更新ipynb文件;
S3,读取用户源码以及对应的测试用例;
S4,初始化评测环境;
S5,遍历每道题目,选择对应评测方法(图片判断、常规判断、文件判断、自定义判断);
S6,分析结果,得出分数;
本发明的技术方案特征和改进为:
对于步骤S1,我们采用docker将每个用户的jupyt er not ebook环境分离,这样使每个人都 有独立的编程和测评环境。测评系统独立于jupyter not ebook运行,它读取jupyter not ebook 产生的ipynb文件获取用户的源代码。测试用例由教师设定,与原题目配套使用,包括每道题 目的题目类型,标准输入输出(图片、文件等)、预置代码、关键字等。
对于步骤S2,我们让用户的答案以自定义函数的形式提交给测评系统,避免了因cell错乱 导致的测评失败,保证了jupyter not ebook编写程序的灵活性。
对于S3,我们先将S1提取到的函数运行,产生非用户能手动控制的结果,再分门别类地 将结果进行判断。
此外,我们采用输出重定向的方法,避免用户代码中非正常的输出或语法错误影响程序 运行。
判断过程有如下方法:
(一)图片判断:
读取用户产生图片和测试案例中的标准答案图片,先比较图片的尺寸(shape)是否正确, 如果尺寸相同,再逐像素比较两张图片,判断是否相同,如果相同则通过测试,更新分数。
(二)常规判断:
读取测试案例中的标准输入、输出以及用户的代码(以函数的形式),先运行代码,检 测是否有语法错误,再比较用户函数的输出类型是否与标准输出的类型(type)一致,最后 比较用户函数的输出类型是否与标准输出的内容是否一致,如果一致则通过测试,更新分数。
(三)文件判断:
读取测试案例中的标准输入、输出文件以及用户的代码(以函数形式),先将用户自己 在测试过程中产生的文件删除,再运行用户的代码,判断是否有语法错误。之后再将运行用 户代码所产生的文件与标准文件进行对比,如果文件的大小、类型、名称、内容一致,则通 过测试,更新分数。
(四)自定义判断:
由于题目的类型并不局限于以上三种类型,我们增加了自定义类型的判断。在自定义判 断中,教师可以将评测方法写入测试案例中,在评测过程中调用自定义评测方法,突破了以 上三种评测方法的局限,使评测方法更加灵活。
附图说明
图一为流程图。
图二为图片判断结构图。
图三为常规判断结构图。
图四为文件判断结构图。
具体实施方式
下面结合附图以及具体实施方式对本发明作进一步详细说明:
一种基于docker和jupyt er not ebook的复合类型题目在线测评方法,如图一所示,本发明 基于docker和jupyter not ebook的复合类型题目在线测评方法的流程图,该方法包含:
对于步骤S1,教师可利用jupyter not ebook的灵活性,在ipynb文件中编写一道或多道题 目,并附上能引导学生答题的说明,再将题目所对应的答案按照本方法规定的格式编写成测 试用例。最后将二者封装成docker容器,发布到在线测试平台网站上。
此外,我们使用json作为测试用例主体文件的格式。JSON(JavaScript Obj ectNot ation,JS 对象简谱)是一种轻量级的数据交换格式,它易于人阅读和编写,同时也易于机器解析和生 成,并有效地提升网络传输效率。测试用例的内容应当包括题目序号、预置代码、题目类型、 输入案例、输出案例等。
一般地,教师在出题的过程中,对于普通的I/O(input/out put)类型的题目,可以将其封 装在函数中,既便于编写测试用例,又方便学生作答。
对于步骤S2,学生登录学习平台,在分配给每个人的docker容器中的在线jupyternot ebook 环境中答题,更新步骤S1中的ipynb文件。
对于步骤S3,我们采用docker将每个用户的jupyter not ebook环境分离。测评系统独立于 jupyter not ebook运行在docker环境中,它由“测评程序”和“测试用例”两部分组成。“测 评程序”适用于所有的题目类型,“测试用例”与教师所出题目一一对应,前者具有通用性, 后者不具有。测试用例由教师设定,与原题目配套使用,包括每道题目应当包含和不应当包 含的关键字、题目类型、标准输入输出(图片、文件等)、预置代码等。测评程序读取用户 更新后的ipynb文件(本质上是一个json文件),以字符串的形式获取用户的源代码,并对 源代码进行“关键字”检测,如果源码中出现了测试案例中规定的不应当包含的关键字或不 存在应当包含的关键字,则记录相关错误提示。
此外,我们让用户的答案以步骤S1中所阐述的格式提交给测评系统,避免了因cell错乱 导致的测评失败,保证了jupyter not ebook编写程序的灵活性。
对于步骤S4,初始化测评的内容有:初始化分数、报错信息,运行预置代码等。其中, 运行预置代码为多种题目类型的检测做铺垫。
对于S5,我们先将S3提取到的函数运行,产生非用户能手动控制的结果,再分门别类地 将结果进行评测。
此外,我们采用输出重定向的方法,将用户的源码运行在临时文件中,避免用户代码中 非正常的输出或语法错误影响程序运行。
判断过程有如下方法:
(一)图片判断:
如图2所示,评测程序读取用户产生图片和测试案例中的标准答案图片,先比较图片的尺 寸(shape)是否正确,再逐像素比较两张图片,判断是否一致,如果一致则通过测试,更新 分数,反之则记录相关错误信息。
(二)常规判断:
如图3所示,评测程序读取测试案例中的标准输入、输出以及用户提交的代码(以函数的 形式),先运行代码,产生输出,检测是否有语法错误,再比较输出的类型是否与标准输出 的类型(type)一致,最后比较代码输出的内容是否与标准输出的内容一致。
(三)文件判断:
如图4所示,评测程序读取测试案例中的标准输入、输出文件以及用户的代码(以函数形 式),先将用户自己在测试过程中产生的文件删除,再重新运行用户的代码,判断是否有语 法错误。之后再将代码生成文件与答案的标准文件进行对比,如果文件的大小、类型、名称、 内容一致,则通过测试,更新分数。
(四)自定义判断:
由于题目的类型并不局限于以上三种类型,我们增加了自定义类型的判断。在自定义判 断中,教师可以将评测方法写入测试案例中,在评测过程中调用自定义评测方法,突破了以 上三种评测方法的局限,使评测方法更加灵活。
以上四周方法的步骤之间为均为递进关系,如果前一步有错误,后一步则不需执行。提 高了效率。
对于S6,评测系统将每道题目产生的报错信息以及获得的分数汇总,反馈给用户。
尽管本发明的内容已经通过上述优选实施例作了详细介绍,但应当认识到上述的描述不 应被认为是对本发明的限制。在本领域技术人员阅读了上述内容后,对于本发明的多种修改 和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。

Claims (4)

1.一种基于docker和jupyter not ebook的复合类型题目在线检测方法,其特征及具体步骤如下:
S1,教师使用jupyter not ebook出题,并编写配套的测试用例,将二者整合到docker容器中发布到在线平台;
S2,学生在线答题,更新ipynb文件;
S3,读取ipynb文件中的用户源码以及对应的测试用例;
S4,初始化评测环境;
S5,遍历每道题目,选择对应评测方法(图片判断、常规判断、文件判断、自定义判断);
S6,分析结果,得出分数。
2.根据权利要求1所述的一种基于docker和jupyter not ebook的复合类型题目在线测评方法,其特征在于,对于步骤S1,题目可以被封装在函数中,评测时只调用函数,保证cell无关性;使用json作为测试用例主体文件的格式。
3.根据权利要求1所述的一种基于docker和jupyter not ebook的复合类型题目在线测评方法,其特征在于,对于步骤S3,采用docker将每个用户的jupyter not ebook环境分离;测评系统独立于jupyter not ebook运行在docker环境中,它由“测评程序”和“测试用例”两部分组成;“测评程序”适用于所有的题目类型,“测试用例”与教师所出题目对应,与原题目配套使用,包括每道题目应当包含和不应当包含的关键字、题目类型、标准输入输出(图片、文件等)、预置代码等;测评程序读取用户更新后的ipynb文件,获取用户的源代码,以及读取对应的测试案例。
4.根据权利要求1所述的一种基于docker和jupyter not ebook的复合类型题目在线测评方法,其特征在于,对于步骤S5,我们先将S3提取到的函数运行,产生非用户能手动控制的结果,再分门别类地将结果进行评测;采用输出重定向的方法,将用户的源码运行在临时文件中,避免用户代码中非正常的输出或语法错误影响程序运行。
判断过程有如下方法:
(一)图片判断:
评测程序读取用户产生图片和测试案例中的标准答案图片,先比较图片的尺寸(shape)是否正确,如果尺寸相同,才将两张图片相减(subtract),判断是否相同,如果相同则通过测试,更新分数;其中,步骤之间为递进关系,如果前一步有错误,后一步则不需执行。
(二)常规判断:
评测程序读取测试案例中的标准输入、输出以及用户的代码(以函数的形式),先运行代码,检测是否有语法错误,再比较用户函数的输出类型是否与标准输出的类型(type)一致,最后比较用户函数的输出类型是否与标准输出的内容是否一致;其中,步骤之间为递进关系,如果前一步有错误,后一步则不需执行。
(三)文件判断:
评测程序读取测试案例中的标准输入、输出文件以及用户的代码(以函数形式),先将用户自己在测试过程中产生的文件删除,再运行用户的代码,判断是否有语法错误;之后再将运行用户代码产生的文件与标准文件进行对比,如果文件的大小、类型、名称、内容一致,则通过测试,更新分数;其中,步骤之间为递进关系,如果前一步有错误,后一步则不需执行。
(四)自定义判断
将评测方法写入测试案例中,在评测过程中调用自定义评测方法。
CN202110348404.XA 2021-03-31 2021-03-31 一种基于docker和jupyter notebook的复合类型题目在线检测方法 Pending CN115145805A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110348404.XA CN115145805A (zh) 2021-03-31 2021-03-31 一种基于docker和jupyter notebook的复合类型题目在线检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110348404.XA CN115145805A (zh) 2021-03-31 2021-03-31 一种基于docker和jupyter notebook的复合类型题目在线检测方法

Publications (1)

Publication Number Publication Date
CN115145805A true CN115145805A (zh) 2022-10-04

Family

ID=83404656

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110348404.XA Pending CN115145805A (zh) 2021-03-31 2021-03-31 一种基于docker和jupyter notebook的复合类型题目在线检测方法

Country Status (1)

Country Link
CN (1) CN115145805A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115801811A (zh) * 2023-01-09 2023-03-14 江苏云工场信息技术有限公司 一种云边协同方法及装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115801811A (zh) * 2023-01-09 2023-03-14 江苏云工场信息技术有限公司 一种云边协同方法及装置
CN115801811B (zh) * 2023-01-09 2023-04-28 江苏云工场信息技术有限公司 一种云边协同方法及装置

Similar Documents

Publication Publication Date Title
Marceau et al. Mind your language: on novices' interactions with error messages
Grossman et al. MathBot: Transforming online resources for learning math into conversational interactions
Kaya et al. Integrating an online compiler and a plagiarism detection tool into the Moodle distance education system for easy assessment of programming assignments
WO2009089475A1 (en) Customized learning and assessment of student based on psychometric models
Chanier et al. Conceptual modelling in error analysis in computer-assisted language learning systems
Hegarty-Kelly et al. Analysis of an automatic grading system within first year computer science programming modules
Huang et al. Supporting skill integration in an intelligent tutoring system for code tracing
Bruhn et al. An approach to teaching Java using computers
Rodrigo et al. An analysis of java programming behaviors, affect, perceptions, and syntax errors among low-achieving, average, and high-achieving novice programmers
Truong et al. Automated Feedback for'Fill in the Gap'Programming Exercises
CN115145805A (zh) 一种基于docker和jupyter notebook的复合类型题目在线检测方法
Foubister et al. Automatic assessment of elementary Standard ML programs using Ceilidh
Murphy et al. RECALL–Providing an individualized CALL environment
Truong et al. ELP-a web envrionment for learning to program.
Mselle et al. Memory transfer language as a tool for visualization-based-pedagogy
US20050272024A1 (en) Automated training and evaluation
Tóth et al. The development of evaluation systems at the Faculty of Informatics, University of Debrecen
CN115454841A (zh) 基于程序测试和分析的多维度代码质量综合评价方法及系统
Sanosi TO ERR IS HUMAN: COMPARING HUMAN AND AUTOMATED CORRECTIVE FEEDBACK
Jell et al. Towards Automated Interactive Tutoring-Focussing on Misconceptions and Adaptive Level-Specific Feedback
Fowler et al. Tool-Aided Learning of Code Reasoning with Abstraction in the CS Curriculum
Toole et al. The tutor assistant: An authoring tool for an intelligent language tutoring system
Kim et al. Predicting Rough Error Causes in Novice Programmers Using Cognitive Level
Guillemette The cloze procedure: An assessment of the understandability of data processing texts
Malaise et al. Explorotron: An IDE Extension for Guided and Independent Code Exploration and Learning (Discussion Paper)

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination