地方院校电子商务专业入门编程语言的选择研究
2024-03-09田祎张林李艳
田祎,张林,李艳
(商洛学院经济管理学院,陕西商洛 726000)
编程教育作为现代教育中不可或缺的一部分,在各国教育体系中都受到越来越多的关注,编程技能在工作中也表现得愈加重要。然而,一些研究表明,学生在学习编程过程中可能会遇到很多困扰[1-5]。如,Rubio 等[6]研究发现本科生在学习编程过程中面临的最显著的困难之一就是编程充满挑战且易令人疲惫。Piteira 等[7]研究了学生在学习编程过程中遇到困难的原因,他们发现初学者所面临的最大挑战主要与编写程序解决问题、理解程序的结构及学习编程语言的语法有关。毕竟,编程是一项有高度认知能力要求的活动,学生在解决问题的抽象过程中及构建程序时容易犯错,尽管许多研究已经提出不同的编程课程设置方法,如针对计算机科学专业学生在大学入门编程课程中使用Python、C/C++或JAVA 语言的影响进行了试验[8-12],但针对电子商务专业的入门编程语言的选择研究还比较少见。电子商务行业的快速发展使电子商务师的社会需求越来越大,因此电子商务专业的学生掌握一定的编程技能将会大大增强其竞争力。为了更好地培养电子商务专业学生的编程能力,某地方高校结合专业特点、社会产业发展现状和专业培养目标,在2020 版电子商务专业教学大纲课程设置中开设了试验,即在两个平级班中分别设置了C 语言和Python 语言作为入门语言,以期验证哪种入门编程语言更适合电子商务专业学生。本研究对连续三届学生重复进行此试验。
一、研究对象与方法
(一)研究对象
某地方高校的2020 级、2021 级和2022 级电子商务专业学生(高中阶段课程中没有计算机编程相关内容,此课程为学生提供了第一次接触编程的机会),共223 名。只有学生填写问卷完整才被采纳。学生以匿名方式参与试验,他们在期末考试前1 周完成问卷,因为他们已经掌握了所有课程主题。两个班级学生都有1 周的时间填写问卷。回收有效问卷有222 份感知问卷(118 份来自Python 语言课程,104 份来自C 语言课程)和206 份选择题测试问卷(116 份来自Python 语言课程,90 名来自C 语言课程)。
(二)研究方法
本研究旨在根据学生学习过程中的反馈和感知,深入探讨学生学习这两种语言的情况,以此来比较学生的学习表现。为了获得更多相关信息,主要通过纵向比较来收集特定数据,这样可以增加试验的可靠性并减少偏见。在试验中,所有学生都需要完成一个包含语言无关问题的多项选择测试,并比较他们的编程作业成绩。此外,试验还收集了学生对与编程经验相关的感知问题的看法。本文在收集信息方面采取的方法:感知测试、多项选择题测试、作业成绩和论坛问题,所有评估都在学期末进行。
1.课程设置及考核评定情况
某地方高校为电子商务专业的学生提供了C语言和Python 语言两种程序设计入门课程。每学期约有70~80 名学生,按学生意愿分C 语言和Python 语言两个教学班。课程内容涵盖:基本语法与算法、程序结构、函数/子程序、结构体/面向对象和文件。两个班级授课教师由同一名教师担任,所有课程都按照授课计划严格进行,并使用预先准备好的幻灯片、实验和练习题。
课程每周有三项作业:简单编程、高级编程和在线习题。简单编程在实验室进行,主要包括一些简单的编码练习,以便测试学生对所学基本概念的理解。高级编程包含更复杂的练习,需要学生在课余时间完成,学生可以通过论坛或指定QQ群、微信群和钉钉群等方式提问,也可以在一周内的特定时间与任课教师进行同步交流。在线习题部分则提供理论问题,多为选择题,学生需直接在线上平台上作答。学生在学期末参加考试,内容涵盖所有主题。实验考核尚未标准化,成绩由授课教师根据学生每次实验过程的考核和实验报告撰写情况进行评定。
课程最终核定成绩由期末考试成绩50%、作业和平时成绩10%、线上成绩10%与实验成绩30%加权平均得到。本试验首次在2020 年实施,后于2021、2022 年持续进行。在过去几年里,电子商务专业的编程入门课程一直采用C 语言进行教学。
2.感知测试问卷
感知测试(Perception Testing,PT)收集并分析学生在不同学习技能方面的回答。根据表1,实验提供了15 个问题,分为六个类别。除了问题PT1 和PT6,学生需要对每个问题进行1~5 的评分,其中1 表示“较差”,5 表示“较好”。
表1 学生在课程中的学习体验和感知问题
问题PT1 测评了学生之前的编程经验。具备其它编程语言经验的学生在课堂上应感到更加自如。问题PT2.1 和PT2.2 分别调查了学生在一般情况下的自信心及其在专业领域的自信心。问题PT3.1~PT3.8 测评了学生对每个课程主题的理解程度。对于每个主题,都提供了更多详细信息,例如,“顺序编程”被描述为涉及“数据类型、变量、运算符、表达式、赋值、数据输入和输出”等内容,以便学生了解问卷所涉及的主题集合。由于课程包含理论和实践环节,学生还需在问题PT4.1 和PT4.2中回答关于完成作业所花费的时间。试验还调查了学生在完成这门入门课程后是否愿意在PT5 中继续学习编程。PT6 征求学生关于课堂的一般性评价。
3.多项选择问题测试问卷
多项选择测试(Multiple Choice,MC)通过提供五个不受限制的多项选择题来收集知识信息。这个测试的目的是让学生思考他们在通用算法课程中学到的知识,并在以下实际生活情景中选择最佳答案,“假设你被聘请为某高校开发一个用于存储和管理学生数据的程序”。收到这个问题后,学生需要回答关于构建此类软件的顺序步骤的五个问题,如表2 所示。所有问题的目标都是检测编程的高水平能力,依据抽象和算法思维这两种计算思维技能。为了衡量结果,学生正确回答时得分为1,错误回答时得分为0。
表2 学生在课程中学习体验的多项选择问题
问题MC1 关涉到分析和理解问题的首要概念。问题MC2 探讨如何组织数据结构以储存这些特定类别。问题MC3 则询问在实现注册过程中,需要回顾哪些顺序、条件和循环命令的概念。问题MC4 则对在向量或列表中添加和查找学生进行高层次的阐述。问题MC5 建议利用文本文件进行永久性的数据存储和文件组织。
4.课程考核结果
在C 语言和Python 语言两门编程课程中,学生通过每周提供的三种作业来进行评估:简单编程、高级编程和在线练习。编程练习包括使用相应的编程语言解决问题,最终核定成绩包含期末考试卷面成绩50%、作业和平时成绩10%、线上成绩10%与实验成绩30%。
5.论坛问题反馈
除课堂教学外,学生还可以通过在线课堂论坛及其它通信软件获得教师的帮助。授课教师根据教学经验,将所有学生的问题进行分类并手动归入若干类别,见表3。
表3 论坛问题的分类主题
二、结果与分析
(一)感知测试
每个感知问题的测试结果如表4 所示。由表4可见,10 名使用Python 语言的学生在PT1 问题中回答“是”,这意味着约9%的使用Python 语言的学生曾经接触过编程。另外,有15 名使用C 语言的学生之前具备编程知识,占比为15%。
表4 感知测试得分
在PT2.1 问题中,使用Python 语言的学生的平均值高于使用C 语言的学生。这种差异可能源于,与C 语言相比,使用Python 语言的学生可以将注意力集中在算法上,而不是语法。这个差异表明,正如PT2.2 问题所指出的,学生在学习领域的编程准备稍显不足,而该问题并未呈现出有利的统计结果。然而,这可能是由于针对电子商务专业学生的整体教学方式所导致的。尽管Python 班PT3.1 问题的平均值相对较高,这可能是因为学生关注于算法的伪代码,但并未发现统计学上的显著结果,由于Python 语言与伪代码非常相似,因此通过流程图来呈现算法概念。PT3.2 问题显示顺序编程在两种语言间没有平均显著差异。统计过程中发现,有一半使用Python语言的学生认为PT3.2 问题较为简单。另外,尽管没有达到统计学的显著性结果,学生可能觉得在使用C 语言时,PT3.3 问题的平均难度要高。这种难度的提高可能是因为Python 语言所提供的内容更加简化,主要体现在诸如if 和else 及它们各自的代码块等高度缩进的结构。统计过程中还发现至少有一半的学生认为无论采用哪种编程语言,PT3.3 问题都是易于掌握的。Python 语言提供了elif 命令,简化了相关概念。同时,学生还学习了try-except 代码块,为错误处理提供了实际操作的见解。
尽管在问题PT3.4 中的循环编程并未达到显著的统计意义,两种编程语言中的while 和for 命令相似,但Python 语言中的for 语句与range 函数结合更加简洁明了,同时缩进也有助于理解变量的作用域。相较于C 班学生,大约有5%的Python班学生认为PT3.4 问题“非常容易”和“容易”。问题PT3.5 关于基本数据结构,两组间也未显示出显著差异。大部分使用Python 语言的学生认为PT3.5问题的难度一般,而较少使用Python 语言的学生将这个问题评为“困难”。在问题PT3.6 中,尽管没有统计上的显著差异,但学生们普遍认为Python语言中的函数比C 语言中的子程序更易操作,Python 语言中的函数遵循更直观且预设的格式,无需了解更多详细信息,如指针。值得注意的是,C 班学生在子程序上花了3 周时间,而Python 班仅用了2 周时间,这在C 语言中用于解释指针和将参数作为引用传递。然而,相较于C 班学生,Python 班学生在边缘评分如“容易”和“困难”上往往更有说服力。使用Python 语言的学生对PT3.6问题的回答呈现出类似正态分布的特点。
C 班学生发现与问题PT3.7 相关的内容平均比Python 班学生容易。大约1/3 的使用Python 语言的学生对PT3.7 问题的难度保持中立,其余的学生认为这些概念较难或非常难。这个问题可能与面向对象编程的入门课程有关,它在两节课中引入了新概念和新范式,用2 周时间来解释这个概念,即使是作为入门课程,也显得过于紧张。尽管如此,根据问题PT3.8,学生们普遍认为Python语言中的文本文件操作比C 语言容易,尽管结果没有提供显著的统计数据,这可能是因为with命令的简单性及在处理文件时的简化操作。
问题PT4.1 和PT4.2 在两个语言组别之间并无显著差异。这个问题与学生在整个学期的投入程度相关,因此语言选择不应该影响他们的学习精神。然而,结果表明,学生在实践课上的投入要大于理论课,特别是在Python 语言的课程中。
问题PT5 对初学者来说至关重要,因为它直接关系到他们对课程的期望。相较于C 语言,Python 语言使得学生在学习编程时的积极性提升了0.44。这很可能源于Python 语言的简洁性,让学生能专注于解决算法问题,而非纠结于语法细节。
(二)MC 测试
MC 测试结果,如表5 所示。由表5 可见,使用Python 语言的学生在平均正确回答问题程度上比使用C 语言的学生高。这种差异主要表现在问题MC3 和MC4 上,使用Python 语言的学生在这两题上的平均正得分分别比使用C 语言的学生高出0.21 和0.17。问题MC3 涉及到顺序、条件、迭代编程的基本概念。这一信息与学生关于难度水平的看法相矛盾,因为C 语言被认为相对更容易。
表5 MC 测试得分
问题MC4 可能更青睐于学习Python 语言的学生,因为学生学习了更高级的数据结构(如列表和字典)。学生能够直接通过高级方法来理解数据结构的使用。然而,问题MC5 并未提供显著的统计学结果,使用Python 语言的学生的优势平均值高0.11,这可能归因于学习文本文件的固有简易性。由于该问题涉及数据存储,它可能与面向对象编程概念的低层次理解有关。另外,虽然使用C 语言的学生在MC1 和MC2 问题上表现出的统计差异并无显著性,但他们的正确答案分别比Python 语言的学生平均值高0.07 和0.05。
(三)考核成绩
两班学生的作业成绩如表6 所示。由表6 可见,本研究收集了104 名使用C 语言的学生和108 名使用Python 语言的学生成绩。从总体成绩上看,C 语言占优势,存在显著的统计学差异,使用C 语言的学生平均成绩为90.22 分,而使用Python 语言的学生平均成绩为84.56 分,意味着使用C 语言的学生成绩优势约为6.67%。这一现象的可能原因是,由于本研究更侧重于Python的简化算法,因此针对Python组的练习略显复杂。另外,C 语言班级学生为统招学生,而Python 语言班级学生为单招生。通过分析简单和高级编程练习的成绩,使用C 语言的学生相较于使用Python 的学生有一定的优势。分别使用C语言与Python 的学生成绩间最显著的差异在于在线作业。需要强调的是,C 语言的在线作业包含了许多实践性问题及代码片段,学生可以编译并运行以验证正确答案。相反,在设计Python 在线作业时,更注重理论问题,这有助于解释两个分数之间的显著差距。
表6 每项任务和总体的分配分数
(四)论坛问题
学生们的问题根据九个类别进行分类,见表3,结果见表7。C 组最受欢迎的类别依次是C2、C3、C7 和C5。问题数量最多的类别C2 涉及格式、输入和输出。由于C 语言为输入和输出提供了许多复杂功能,这就需要理解参数类型、它们在句子中的位置,甚至还要理解指针,因为有scanf 函数。类别C3 对应于数据类型,这在C 语言中是一个较为复杂的主题,因为涉及到类型转换。函数和数据结构分别对应于C5 和C7 主题,在C 语言中也是较为复杂的主题。另外,Python组在C3、C4、C5 和C7 这些类别中提出了许多问题。这些类别通常与逻辑问题而非语法问题更相关,这可能会给Python 组的学生带来困扰。
表7 论坛问题的结果
三、讨论与结论
本文针对选择C 语言和Python 语言在电子商务专业学生的编程入门课程学习中的影响进行了研究。本研究发现,某地方高校的电子商务专业学生选择C 语言和Python 语言影响较大的主要是感知测试和MC 测试,且Python 语言和C 语言在不同背景下有各自的优势。在感知问卷方面,学生在使用Python 语言时对自己的编程技能更有信心,并且提高了他们继续学习编程的积极性。由于Python 语言更像是一种伪代码式的语言,学生可以将注意力集中在提高解决问题的能力上,而不必担心诸如语法之类的问题。然而,与C 语言中的结构化数据类型相比,使用Python 语言的学生在学习面向对象编程方面遇到了困难。课程仅在2 周内涵盖了这个主题,对于学生来说可能过于紧凑,难以理解这些概念。
多项选择题调查发现,学习Python 语言的学生在解决问题方面通常准备得更充分,得益于代码的清晰性、数据结构的操作和面向编程范式的结构化,Python 语言使学生能够在付出较少努力的情况下解决更为复杂的问题。在学生得分较高的问题中,需要对基本概念和数据结构有更深入的理解。
本研究表明,在自信心、学习动力和整体编程设计方面,Python 语言相较于C 语言展现出了更加积极的成效。然而,学习C 语言的学生在作业中的得分更高。这种差异是因为Python语言中的作业需要略显复杂一些,有些作业过于复杂而无法完成。然而,当前的研究存在一些局限性。尽管课程教材在各个学期都是一样的,但由于教师可以制定自己的编程题,每学期的考试试卷不能重复,这可能导致同一组的成绩失衡,因此无法对考试成绩进行比较。两个班级学生的整体素质也存在着一定的差别,如学习能力、理解能力等。本研究中的在线学习平台上设置的问题在比较时具有较高的主观性,因为它们会根据每种编程语言的特点而有所不同。