APP下载

基于Python的教室座位自动安排探究

2024-01-25龙治国龚勋孟华罗荣

中国信息技术教育 2024年2期
关键词:计算机辅助教学

龙治国 龚勋 孟华 罗荣

摘要:在高校教学中,上课和考试均涉及安排教室的座位。对于上课,通常的做法是让学生自由选择座位,但由此也带来多个问题,如考查出勤情况时难以快速精准定位缺勤学生、学生集中坐在后排、熟悉的同学坐在一起交头接耳等。对于考试,通常的做法是按顺序依次安排座位,但也存在需要花费较多时间根据教室确定具体的安排,以及部分學生利用这种安排方式进行舞弊等问题。本文主要介绍和分析了一种较为简便实用的教室座位自动安排技术,为解决以上的问题给出了可行的解决方案,并以“离散数学”的课程教学实践为例,验证其可行性(展示结果)和实际效果(时间对比、课堂表现对比)。

关键词:计算机辅助教学;座位安排;Python编程

中图分类号:G434  文献标识码:A  论文编号:1674-2117(2024)02-0107-06

引言

座位安排是一个古老的问题,但在现代大学的教学中对座位安排的关注却十分不足。实际上,座位安排对教学效果和效率、考试公平性等有较大的影响。例如,预先确定的座位安排可以帮助教师快速定位缺勤学生,以极高的效率掌握学生出勤情况,也可以避免学生集中在后排落座或熟悉的学生坐在一起交头接耳的情况,还可以快速掌握记住学生的姓名;又如考试时高效快速根据教室情况做好座位安排,一方面可以减少监考人员在座位安排上的时间和精力投入,另一方面也可以避免学生根据推测的座位顺序准备舞弊。

对于座位安排方式和自动化的问题,有不少学者究进行了相关研究。有研究[1]针对高校全校考试的大规模座位安排进行系统设计,基于Web技术设计了一套支持导入学生名单和教室布局基本信息、进行考试随机排位、自动生成打印座位表等功能的自动考试排位系统;有研究[2]设计了一个基于PHP的系统,来为考生、监考人员分配考场,并自动生成考场布置;有研究[3]利用蚁群算法对考场座位编排进行了优化;有研究[4]基于VBA实现了一个随机编排考场座位的程序;而有研究[5]则基于VBA实现了一个针对多组少量考生的穿插混排算法,用以减少舞弊现象,保证考试公平。

也有研究[6]注意到了现有点名方式可以通过座位安排进行优化,提出了“考试座位法”来将学生对号入座,从而实现快速检查出勤情况。但该研究没有针对课堂教学的需求,进一步将座位安排方式进行优化,如固定部分学生的座位等,在实际使用中存在不便。有研究[7]对基于座位安排的点名方法进行了分析,指出了全员固定座位导致远离教师的学生开小差、被边缘化的问题。

在注意到了做好座位安排的重要性之后,针对以上问题,笔者提出一种基于Python的教室座位自动安排方法,根据实际需求设计了相应的功能,并开发了简单易用的程序,还在“离散数学”课程的课堂上进行了实际应用,验证了其可行性和效果。

基于Python的教室座位自动安排

笔者设计的座位自动安排方法主要有以下功能:设置教室可选座位、设置学生名单、设置固定座位、设置按座位列优先或排优先安排座位、设置随机或按名单顺序(正序或逆序)安排座位、设置输出顺序(讲台在上或下)。这些功能可以让教师能十分方便快捷地自动化安排座位,并较为有效地解决上课、考试中因座位安排导致的教学质量、诚信问题。

下面,对这些功能做详细说明。

1.设置教室可选座位

教室一般存在不同的情况,如行数、列数、座位有损坏情况等。在安排座位前,首先需要确定教室可选座位的情况。笔者设计的程序支持便捷地设置教室可选座位,包括通过指定列数和排数、利用csv格式进行设置等方式。

(1)指定列数和行数

对于这一方式,用户只需给程序指定教室的列数和行数,程序将自动生成对应列数和行数的方块形可选座位分布,用于进一步的自动安排。这种方式虽然十分简单,但实际中教室的可选座位往往并不呈方块形分布,如列与列之间存在行数差异、部分座位由于损坏或教室结构导致不可用等。

(2)csv格式输入

csv的全称是comma separated values,这是一种通用的纯文本数据存储格式,数据之间用逗号“,”(也可以是其他符号)分割,如“1,0,1,”,对应的数据是“1”“0”“1”和“空”(最后一个逗号后面没有值,因此是“空”)。本文设计的程序支持用户通过这一格式来便捷指定可选座位。具体地,在csv的一行中,若某一位置的值是1,则代表对应行的相应位置的座位是可选的,若是0或空,则代表不可选。为了避免歧义,程序要求每行的数据数量必须相同。用户可以通过常用的电子表格软件,如Excel、WPS,通过表格的方式方便地编辑存储csv文件,从而给出教室可选座位数据。需要注意的是,如图1所示,程序假设csv中的座位顺序是以教师视角指定的,要求csv中第一行对应教室座位的最后一排,csv中最后一行对应教室座位的第一排,csv中第一列对应教师面向学生时的从左数第一列。

2.设置学生名单

学生的名单也是一个csv文件,但只有一列。学生名单的内容可以是学号或姓名,也可以是其他任何可以唯一确定学生身份的文本。该csv文件中行的顺序即为学生名单的顺序,即第一行为第一个学生,最后一行为最后一个学生。用户可以通过为“student_list”参数指定学生名单csv文件名将学生名单传给程序。

3.设置固定座位

学生或教师有时需要指定座位,如某位近视的学生希望坐得离讲台近一点、考试时教师希望将某位学生安排到前排等。用户可以通过为“specified_positions”参数传入一个3列的csv文件来设置固定座位,其中第一列为学生名单中对应学生的身份文本(如学号),第二列和第三列分别对应教室座位的行和列的序号。例如,“2022112378,3,2”表示学号为“2022112378”的学生需要安排在第三行第二列的座位。需要注意的是,若用户在设置教室可选座位时,指定了行的顺序,则行的序号对应的是用户指定的顺序。另外,若设置的固定座位对应的座位不可选或多个人指定了同一座位,则程序将报错。

4.设置座位列优先或排优先

在实际安排座位时,有时需要按一列一列(列优先)来安排,或按一行一行(行优先)来安排,同时,列可以从左至右或从右至左,行也可以从前至后或从后至前。笔者设计的程序允许用户通过指定“arrange_order”来设置该顺序,上页表给出了arrange_order的值对应的安排方式。

5.设置随机或按顺序安排

根据用户的实际需求,笔者设计的程序允许用户指定座位安排的顺序,程序默认以随机方式打乱学生顺序来安排座位,用户可以通过指定“student_order=1”或“student_order=-1”来设置程序以学生名单顺序的正序或逆序进行安排。

6.设置输出顺序

在不同的使用场景下,用户可能需要以从讲台往下看的视角输出座位安排结果,也可能需要以从教室最后面往讲台看的视角输出结果。因此,笔者为用户提供了一个选项“output_order”来实现该功能,如上页图2所示.若设置为“output_order=1”,则程序将按教师视角输出,即教室的最后一排在第一行,第一排在最后一行;若设置为“output_order=-1”,则程序将按学生视角输出,即教室的第一排在第一行,最后一排在最后一行,同时列的顺序也变为逆序。

案例分析:“离散数学”课程课堂座位安排

笔者将提出的座位自动安排方法,在“离散数学”课程中进行了实践。接下来,通过举例、对比使用该方法前后的情况进行分析,说明该方法的可行性和实际效果。

笔者基于包含116名学生的名单、有9排14列的教室进行测试,教室的可选座位情况如上页图3所示,其中也展示了固定座位情况,如036号学生固定坐在第一排第七列。

上页图4展示了“arrange_order=0,student_order=0,output_order=1”的结果图,可以看到,所有学生都被唯一地安排了座位,并且座位是随机安排的,固定座位也全部正确分配给了相应的学生。

图5展示了“arrange_order=3,student_order=1,output_order=1”的结果图,在这一配置下,学生按名单顺序从右至左列优先,从后至前进行安排,最终结果以教师视角(假设讲台在最下面,第一排在最后一行)输出。可以看到,空座位被留在了左边靠前的位置。

图6展示了“arrange_order=7,student_order=-1,output_order=1”的结果图,在这一配置下,学生按名单顺序的逆序从后至前行优先,从右至左进行安排,最终结果以教师视角输出。可以看到,空座位被留在了第一排(最后一行)靠左的位置。

上页图7展示了“arrange_order=7,student_order=-1,output_order=-1”的结果图,在这一配置下,学生按名单顺序的逆序从后至前行优先,从右至左进行安排,最终结果以学生视角(假设讲台在最上面,第一排在第一行)输出。可以看到,空座位被留在了最后一排(最后一行)靠左的位置。

圖8展示了“arrange_order=7,student_order=-1,output_order=-1”的结果图,在这一配置下,学生按名单顺序的逆序从后至前行优先,从右至左进行安排,最终结果以学生视角(假设讲台在最上面,第一排在第一行)输出。可以看到,空座位被留在了最后一排(最后一行)靠左的位置。

笔者对程序所需时间进行了分析。首先,在“arrange_order=7,student_order=0,output_order=1”的配置下,重复运行了100次座位安排程序(包括将最终结果写入文件),最终得到其平均所用时间为0.001s。而如果使用人工安排,即使对每个学生花费1s的时间进行安排,116名学生也要花费116s。当然,该程序还需要准备可选座位csv、学生名单csv、固定座位csv,但这些文件结合Excel或WPS非常容易准备,而一旦准备好,安排座位就十分省力,并可以重复利用。基于该程序输出的座位安排结果,教师还可进行快速考勤——只需让学生对应坐好,教师拿起座位安排结果即可快速定位缺勤学生,100多人的课堂所花时间只需不到1分钟,而如果全员点名,即使每个学生只要2秒钟,总共也需要花费200~300秒(5分钟)。

其次,对程序做了压力测试,将名单中学生数量从1000增加到10000,并对每一学生数量进行100次重复运行座位安排程序,取运行时间的平均值作为对应学生数量的运行时间,结果如图9所示。可以看到,该程序的运行时间随学生数量增加也以线性增长,在10000名学生时的用时也仅在0.02s左右。

最后,笔者对实施该座位安排方法前后的教学效果进行对比分析。

①学校对学生进行问卷调查,共有115名学生填写问卷,整体评价平均分为4.8分(5分制)。与使用座位安排方法相关的问题为“该课程的教学组织得很好,授课教师教导有方”,学生的评价平均分为4.83分,超过了整体评价平均分,其中有87%的学生给了5分,8.7%的学生给了4分,4.3%的学生给了3分。

②对比了实施前后的学生平时成绩(包括课堂表现、课后作业、期中考试)和课堂表现成绩,其中实施前的成绩选取的是2018-2019(2)学期的数据,实施后的是2020-2021(2)学期的数据——2019-2020(2)学期由于新冠疫情为在线授课。从图10中可以看到,实施后成绩较差的学生数量明显变少,平均分也显著高于实施前(基于p值为0.01的T检验)。这在一定程度上说明了实施本文所提座位安排方法的有效性。

结语

本文提出了一种基于Python来自动安排教室座位的方法,并在“离散数学”课程的课堂上进行了实践应用。该方法对教学效果有显著的提升作用,在实施该方法后,平时成绩较差或课堂表现成绩较差的学生数量大大减少,整体成绩有显著提升。随机排位算法还可以兼容更多的需求,考虑更多的因素(包括性别、性格、身体状况等),后续可进一步优化算法,助力教师做好课堂和考场管理。

参考文献:

[1]黄登贵.基于Web的自动考试排位系统的设计和实现[D].厦门:厦门大学,2011.

[2]张巧林.基于PHP的考场座位安排应用系统的研究[J].教育教学论坛,2020(28):2.

[3]安晓东.基于蚁群算法的电子化考试考场座位编排方法[J].中北大学学报:自然科学版.2007,28(03):5.

[4]苏颖,申鸿烨,王育欣,等.基于VBA的考场座位排序系统研究与应用[J].广西轻工业.2008(03):2.

[5]张桂杰,郑月锋,王月.基于VBA的考生座位混排算法[J].白城师范学院学报.2009(03):3.

[6]董振楠.创新选修课点名方法——考试座位法[J].创新科技,2013(06):2.

[7]毛雪梅.反思座位点名制[J].科海故事博览·科教创新,2012(08):87+105.

基金项目:西南交通大学2022年校级本科教育教学研究与改革项目,项目编号:20220306,20220320,20220322。

猜你喜欢

计算机辅助教学
浅谈现代教育技术在教学中的应用
计算机辅助教学应用分析和探索
当前计算机辅助教学的实践与思考
药物制剂专业物理化学教学探讨
计算机辅助教学在中学美术教学中的应用
《线性代数》计算机辅助教学初探
计算机辅助教学网站设计与实现
浅谈《卫生管理运筹学》的教学改革与探索
多媒体技术是促进美术教学的捷径
多媒体技术在小学语文教学中的魅力