当前位置: 首页 > news >正文

基于python的《C语言程序设计》课程成绩分析

作者:Svan.声明:未经本人允许,不得对本文中的任何内容、数据进行转载,本人(作者)已经对本文内容申请撰写了论文,随意转载使用本文任何内容的,要追究其法律责任!!!

基于python的《C语言程序设计》课程成绩分析

  • 成绩分析报告
    • 一、数据来源
      • 1.1 问卷数据分析
        • 1.1.1数据读取
        • 1.1.2 matplotlib.pyplot画图
      • 1.2 创建词云
    • 二、过程数据分析
      • 2.1 数据读取
      • 2.2 数据存储
      • 2.3 平均值计算
      • 2.4异常值处理
      • 2.5 相关度作图分析
        • 2.5.1 圈复杂度
        • 2.5.2 编程题提交次数
        • 2.5.3 代码通过率
        • 2.5.4 编程做题时长
        • 2.5.5 两次测试成绩
    • 三、结论

成绩分析报告

一、数据来源

过程数据来源于两个班级(大约60人)《C语言程序设计》课程期间学习过程的真实记录,主要是对平时作业以及测验的收集;问卷数据来源于整个年级选该课程的同学(大约170人)的匿名回答,包括同学对该课程的看法以及学习该课程的一些建议。

1.1 问卷数据分析

1.1.1数据读取

创建数据读取的功能函数,通过对.csv文件相对路径的锁定读取对应检索栏名称的数据列表,并储存。返回提前创建好的字典里,每个栏目分别对应所需要的数据,下图为.csv文件的示例数据集:

在这里插入图片描述

1.1.2 matplotlib.pyplot画图

读取存入字典中对应键的数据,创建一个空的列表,将其存入新建的列表中,设置字体属性参数,通过计算画出每部分所占饼图的比例大小,使用label进行标注。如下图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

通过上图发现,进入大学前,有超过一半的人很少有机会接触计算机,只有不到10%的人有过编程的经历。对学习过编程的同学进行调查,发现学习C语言编程用时2-10小时的学生占主要部分,而学习地点主要集中在寝室,且大多借鉴别人的成果,这反映出目前的教育方式仍需改进,学生并没有学到真正的知识,没有理解编程原理,导致近一半的同学集中在考试前几天去复习,考的成绩以及整体及格率的下降。

1.2 创建词云

读取文本数据,读取“9.对于课程教学,您认为哪些地方需要改进”这一栏数据,存入新创建的字符串内,设置存入字符串的参数,设置词云展示的背景属性,将生成的词云图保存指定的路径下,最终展示词云。如下图所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

通过词云图可以发现,大多数同学对目前的教学方式并没有任何建议,表示很认同当前的教学方式,有小部分人提出老师需要讲习题,还有人表示编程有难度。可以看出目前的教学方式仍有改进的地方。

二、过程数据分析

2.1 数据读取

2.2 数据存储

创建一个名为stu的学生类,可以存储学生如下数据:编程题通过率[0]、编程题平均用时、编程题平均提交次数[1]、代码的圈复杂度[2]、第一次测验成绩、第二次测验成绩、期末成绩。读取存储数据的csv文件,将收集的数据分别读入,以字典类型存储,字典的键为学生的名字,值为一个学生类,存储了该学生的相关数据。最后把所用到的数据存入到DataFrame类型的表格中,方便对其进行处理。

2.3 平均值计算

平均值的计算依靠在学生类中添加一个迭代次数的纪录,第一次记录该学生,则此次输入的值就为相应的值,第n次记录该学生(n>1),记第n次记录的平均值为avg(n),平均值可由如下算式得:
在这里插入图片描述

为了节省存储空间,不把每次的值都记录下来,只记录上一次的平均值和迭代的次数,可对式子做如下变化:
在这里插入图片描述

2.4异常值处理

异常值的来源主要是两个方面,第一个方面就是部分数据来源于问卷,此类数据的可信度不高,可能存在与主观不符的回答,因此在本次预测中,只会选取部分有意义的数据作为参考分析。另一方面是系统所收集的课堂记录以及平时作业的情况,会出现一些记录与事实明显不符的值,例如学生的答题时长,是否在此时间内答题,或是打开答题系统未答题但系统依然在计时,这样记录的时间并不是实际答题时间,通常数值会比较大,基于这一特点,我们将这类数据予以删除。

2.5 相关度作图分析

对于过程数据的各参量,分别研究其与期末成绩的相关性,相关度的图中,横坐标为成绩,分为五个等级(差[0-30]、不及格[30-60]、及格[60-70]、中等[70-80]、良好[80-90]、优秀[90-100])该分析会结合相关实际,对于各类因素详细说明:

2.5.1 圈复杂度

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

圈复杂度可以用来衡量一个模块判定结构的复杂程度,其数量上表现为独立路径的条数,也可理解为覆盖所有的可能情况最少使用的测试用例个数。一般来讲,复杂度大于10的代码出错率很高。

圈复杂度代码状况可测性维护成本
1-10清晰
10-20复杂
20-30非常复杂
30不可读不可测非常高

在这里插入图片描述

观察图2,可以看出圈复杂度多数分布在3到5之间,对于初学者不会写出过于复杂的代码也吻合该结果。通过定义结合实际,该参量事实上是学生对题目的各种情况的综合考虑情况,比如对于这样一个题目:给定三角形的三条边,求出该三角形的面积(三边求面积公式:p=(a+b+c)/2 S=sqrt[p(p-a)(p-b)(p-c)](海伦公式))。因为测试的数据输入的三个数据是满足三角形的三条边构成定理的,因此不对输入做出相关判断,直接运算得出来的结果是与答案吻合的,但是对于部分编程和数学思维稍强的学生,可能就会加入对是否满足三角形构成的判断,或者输入是否为正的判断,加的这些判断就会使圈复杂度变大,对于初学者而言,更加慎密的思维无疑是好的,因此该参量值偏大的同学的最终成绩会偏好一些。看向图表1中的另一个极端,代码复杂度过低,很多学生的成绩都是很差的,不是因为优化好,而是对于代码不知如何构思,从而写出的代码量小,效果未完全达到。

2.5.2 编程题提交次数

在这里插入图片描述

该参量与成绩的相关度是比较好的,多次提交可以看出在学习过程中花更多时间,研究问题更为透彻。最终的成绩也与理想接近。

2.5.3 代码通过率

在这里插入图片描述

该参量可理解为编程题的满分率,数据来源是学生提交代码之后会系统自动批改的结果,可以看出多数成绩较差的同分布在通过率的两个极端,出现这种数据的原因是作业会有拷贝抄袭的情况出现,为了证实这一结论我会在下文做出解释,转过来看通过率在0.8到0.9这段区间的数据,就显得符合正常,通过率高成绩偏好,反之偏差。

接下来说明一下抄袭作业的情况:

在这里插入图片描述
在这里插入图片描述

这里选取了提交次数和通过率的关系图,两个参数结合分析,一般得到完全通过都会提交多次,除非是题目过于简单,排除这一占比较小的可能,对其分析,可以发现有一批学生的通过率很高的同时提交次数也只有2次及以下,这种情况极大可能就是代码拷贝的现象。

2.5.4 编程做题时长

在这里插入图片描述

这个参量与提交次数很类似,但有一点不同的是该参量有不理想的值,因为做题时长是打开答题界面的时间,因为平时题目不会有这方面的限制,那么就会出现打开界面忘记关闭而且没有做题的现象,或者是多人共同做题参看一个人的题目,也会影响该参量综合看来大于1500的数据可以作废。500-1500之间的数据有参考价值,小于500的部分,也可以进一步分析拷贝代码的情况,类似上文做出如下分析图:

在这里插入图片描述
在这里插入图片描述

可以看到图中有部分学生编程用时较短但却有较高的通过率,大概率即为拷贝。因此在教学活动的安排中应改进方案避免此现象。

2.5.5 两次测试成绩

在这里插入图片描述
在这里插入图片描述

两次测试放在一块分析,可以看出两次测试与最终成绩的相关度很相似,而且平时成绩较好期末成绩也会不错,因为两次平时测试与期末考试一样,都是独立完成,作弊与抄袭因素可忽略,拟合效果最佳,可综合前部分因素预测期末成绩。

  • [0]:编程题通过率,提交的代码在系统自动批改之后是否全对会给出是否通过的记录,通过为1,没通过为0,通过对所有记录的加和求平均值可以得出系统批改的编程题正确率。

  • [1]:编程题平均提交次数,做平时作业题过程中,提交之后系统会立马给出自动批改的结果,同学可以通过此结果评判后决定是否对代码进行改进而重复提交新的代码,每一题都会有该记录,把所有题的次数加起来平均就为该参量。

  • [2]:软件源码某部分的圈复杂度就是这部分代码中线性无关路径的数量。对于此处分析,考虑到学生均为初学者,可将此参量理解为代码中的判断分支数量,这方面看来,此参量不一定是越小越好。

三、结论

从数据分析上来看,主要表现在以下几点:

  1. 学生背景差异显著

    • 报告指出,超过一半的学生在进入大学前很少有机会接触计算机,不到10%的学生有过编程经历。这表明学生在入学时对计算机和编程的了解存在显著差异。
  2. 学习习惯和环境影响学习效果

    • 学习C语言编程的学生中,大多数用时在2-10小时之间,且学习地点主要集中在寝室。这可能意味着学生缺乏有效的学习环境和资源,依赖于他人的成果,这可能影响了他们的学习效果和编程原理的理解。
  3. 学习方式需改进

    • 报告中通过词云图分析发现,大多数学生对当前的教学方式表示认同,但也有小部分人提出需要老师讲解习题,以及反映编程难度较大。这表明教学方式仍有改进的空间,以更好地满足学生的学习需求。
  4. 学生学习投入与成绩正相关

    • 报告分析了编程题提交次数与成绩的关系,发现多次提交的学生在学习过程中投入更多时间,研究问题更为透彻,这与最终成绩的提高正相关。
  5. 作业抄袭现象存在

    • 通过分析提交次数与通过率的关系,报告指出存在一部分学生通过率很高但提交次数很少,这可能表明有抄袭作业的现象。
  6. 编程做题时长与成绩相关

    • 报告中提到,编程做题时长与提交次数类似,但存在不理想的值,如长时间未关闭答题界面的情况。在合理的时间范围内,编程用时与成绩存在一定的相关性。
  7. 测试成绩与期末成绩相关

    • 第一次和第二次测试成绩与期末成绩的相关度较高,表明平时成绩较好的学生期末成绩也倾向于较好,这可能是因为这些测试都是在独立完成的情况下进行的,排除了作弊和抄袭的影响。
  8. 圈复杂度与学生思维慎密性相关

    • 报告分析了圈复杂度与成绩的关系,发现圈复杂度较高的学生往往成绩较好,这可能是因为他们对题目的各种情况考虑得更为全面。

综上所述,报告通过对学生的学习过程数据和问卷数据的分析,揭示了学生的学习背景、学习习惯、作业提交行为和测试成绩等多个方面与最终成绩的关系,为教学改进提供了数据支持。

同时,报告也指出了教学过程中存在的问题,如学生学习环境的不足、作业抄袭现象等,这些问题需要通过教学改革和支持措施来解决。

希望你喜欢这个项目,并在构建过程中找到乐趣!如果你有任何问题或需要帮助,欢迎在评论区交流。

作者:Svan.


注意:本博文为不得在未经本人同意进行转载或者二次创作,违者必究!!!

相关文章:

基于python的《C语言程序设计》课程成绩分析

作者:Svan.声明:未经本人允许,不得对本文中的任何内容、数据进行转载,本人(作者)已经对本文内容申请撰写了论文,随意转载使用本文任何内容的,要追究其法律责任!!&#xf…...

@Component 和 @Bean 的区别与联系

相同点: Component 和 Bean 是两种使用注解来定义bean的方式。 Component和Bean的目的是一样的,都是注册bean到Spring容器中。 两者都可以通过Autowired装配 不同点: Component 和 它的子类型(Controller, Service and Reposit…...

高手炒现货黄金短线的方法

现货黄金短线交易的精髓在于“计划你的交易”。短线交易不是临时起意的赌博,也不是盘口随意的追涨杀跌,而是所有因素分析以后的结果。新手进行短线操作容易流为频繁的随意操作,导致成功率不高。但当投资者有了准备,短线交易就再也…...

后端:唯一ID有哪些生成方式

文章目录 在后端开发中的ID生成策略1. 数字型 ID特点:优点:缺点:例子:常见用法: 2. UUID(通用唯一标识符)特点:优点:缺点:例子:常见用法&#xff…...

LabVIEW提高开发效率技巧----高精度延时

在LabVIEW开发中,时间控制是许多应用中的关键环节,尤其是高精度应用中,时钟漂移会严重影响程序的准确性。为此,使用Wait Until Next ms Multiple来代替简单的Wait (ms),可以显著减少时钟漂移,确保高精度延时…...

<Link><Link> 和 <a> </a>标签的区别

1. Link (React Router): 作用: Link 是 react-router-dom 提供的组件,用于在 React 应用中创建前端路由跳转。它不会导致页面重新加载。优点: 无刷新跳转: 使用 Link 进行导航时,React 的路由器会捕获并处理链接,避免浏览器的全…...

靶场战神为何会陨落?

我从第一个SQL注入漏洞原理学起,从sql-libas到DVWA,到pikachu再到breach系列,DC系列靶场,再到实战挖洞,发现靶场与实战的区别是极其大的。 我个人觉得在这种web环境下,难的不是怎么测一个漏洞点,而是怎么找一个漏洞点。靶场与实战最大的区别在于你不知道这个地方到底有没有漏洞…...

rpm 命令

rpm(Red Hat Package Manager)是 Red Hat Linux 及其衍生发行版(如 CentOS、Fedora)中用于管理软件包的系统。它允许用户安装、卸载、升级、查询和验证软件包。 一、安装软件包 (1)安装一个 RPM 软件包&a…...

录微课专用提词器,不会被录进视频中的提词器,还能显示PPT中备注的内容

不坑提词器,全称:不坑隐形提词器。是一款能够在截图、录屏、直播过程中隐藏界面的提词器软件。 系统要求:Win10 1024 以上(特别提醒:Win7状态下不可隐身) ⏬下载 提词器默认放在不坑盒子的安装目录下&…...

Ansible概述

目录 一、ansible简介 二、absible的特点 三、ansible的工作原理以及流程 四、ansible环境安装部署 五、ansible命令行模块 六、inventory 主机清单 一、ansible简介 Ansible是一个基于Python开发的配置管理和应用部署工具,现在也在自动化管理领域大放异彩。…...

NTC 温度电阻计算方式

100K温度值列表 https://wenku.baidu.com/view/59565cba1a37f111f1855b38?aggId989bc39968d97f192279168884868762cbaebb44&frcatalogMain_text_ernie_recall_feed_index%3Awk_recommend_main1&wkts1729568234531&bdQuery100K%E6%B8%A9%E5%BA%A6%E7%94%B5%E9%98%B…...

Qt中自定义qDebug打印信息的宏(文件名,行数,函数名,日期,时间等前缀)并取消打印

使用qDebug()打印信息时&#xff0c;默认打印"<<"符号后面的信息。 通过自定义宏&#xff0c;可以额外打印文件名&#xff0c;行数&#xff0c;函数&#xff0c;日期、时间等前缀&#xff0c;方便快速定位调式信息的位置。 同时&#xff0c;可以定义宏取消打…...

【基于docker的深度学习训练环境】关键步骤记录

最近给公司搭建了一个小型的深度学习环境&#xff0c;实现了多人通过SSH对GPU资源的利用&#xff0c;下面对一些关键架构和易用性部分进行记录。 一、整体软硬件框架 1、硬件配置&#xff0c;采用的双GPU的方案&#xff0c;两块消费级显卡。 2、应用层架构 宿主机系统为ubunt…...

管理、情商、格局-冯唐讲资质通鉴-笔记

一、CEO职责 制定制度、维护制度&#xff0c;制度即礼&#xff0c;礼崩乐坏&#xff0c;万万不能制定战略找钱、找人 二、汇报线 不能向上越级汇报不能向上越级管理 三、领导 领导出错的情况&#xff0c;依然要服从领导的安排&#xff0c;领导的错轮不到我们来处理干预&am…...

摇人摇人, JD内推岗位(社招+校招)

摇人摇人, 有找工作的家人们看过来啊~ 虚位以待, 快到碗里来 算法开发工程师岗 京东云 北京|T7, 5-10年 岗位职责&#xff1a; 参与基于RAG知识库平台和ChatBI产品打造和商业化落地&#xff0c;进行相关技术&#xff1a;包括OCR、文档拆分、意图理解、多轮对话、NL2SQL、Embed…...

振弦式传感器在高边坡监测中发挥哪些优势?

振弦式传感器在高边坡监测中发挥哪些优势?在工程建设与地质灾害防治领域&#xff0c;高边坡监测至关重要。高边坡的稳定性直接关系到工程的安全以及周边环境和人员的生命财产安全。为了实现对高边坡的有效监测&#xff0c;各种先进的传感器技术被广泛应用&#xff0c;其中振弦…...

计算机网络基础进阶

三次握手四次挥手 三次握手 1------建立连接----------------------2 ACK1&#xff0c;seq0 2------传输数据&#xff0c;建立连接---------1 1------传输数据&#xff0c;建立连接---------2 三次握手用于建立TCP连接&#xff0c;确保通信双方都准备好进行数据传输。整个…...

什么是“钻石继承问题”

钻石继承问题&#xff08;Diamond Inheritance Problem&#xff09; 主要是指在多重继承中&#xff0c;由于继承关系的复杂性&#xff0c;子类可能通过多个路径继承到相同的基类&#xff0c;从而导致成员的多份副本或者方法调用的二义性。 C 通过 虚拟继承 来解决这个问题&…...

iOS 回到主线程刷新UI

在iOS 里面,项目打开就会运行一个主线程,所有的UI都在主线程里进行.其他网络请求或者耗时操作理论上也可以在主线程运行,但是如果太耗时,那么就会影响主线程其他UI.所以需要开字线程来进行耗时操作,子线程进行完耗时操作之后,如果项目需求有需要刷新UI,或者改变UI,一定得回到主…...

Spring Data 技术详解与最佳实践

引言 Spring Data 是 Spring 框架的一个模块&#xff0c;旨在简化数据访问层的开发。它提供了一种通用的方法来访问各种数据存储&#xff0c;包括关系型数据库、NoSQL 数据库、搜索引擎等。Spring Data 不仅简化了数据访问代码的编写&#xff0c;还提供了一系列强大的特性&…...

ubuntu下安装图片编辑工具shutter

ubuntu自带的截屏工具能够截图指定区域的图片&#xff0c;但是通常情况下&#xff0c;我们还需要对图片做一些编辑例如&#xff0c;下划线&#xff0c;方框标识&#xff0c;添加文本描述等&#xff0c;这时就需要强大的shutter软件了。 有人说直接在终端直接执行命令安装即可&…...

代码随想录算法训练营Day38 | 62. 不同路径、63. 不同路径 II

目录 62. 不同路径 63. 不同路径 II 62. 不同路径 题目 62. 不同路径 - 力扣&#xff08;LeetCode&#xff09; 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到…...

TrickMo 安卓银行木马新变种利用虚假锁屏窃取密码

近期&#xff0c;研究人员在野外发现了 TrickMo Android 银行木马的 40 个新变种&#xff0c;它们与 16 个下载器和 22 个不同的命令和控制&#xff08;C2&#xff09;基础设施相关联&#xff0c;具有旨在窃取 Android 密码的新功能。 Zimperium 和 Cleafy 均报道了此消息。 …...

Java | Leetcode Java题解之第493题翻转对

题目&#xff1a; 题解&#xff1a; class Solution {public int reversePairs(int[] nums) {Set<Long> allNumbers new TreeSet<Long>();for (int x : nums) {allNumbers.add((long) x);allNumbers.add((long) x * 2);}// 利用哈希表进行离散化Map<Long, Int…...

uniapp scroll-view翻转90度后,无法滚动问题,并设置滚动条到最底部(手写横屏样式)

uniapp scroll-view翻转90度后&#xff0c;无法滚动问题&#xff0c;并设置滚动条到最底部 <template><view class"main"><view style"height: 200px;"></view><view class"btn-main"><view class"send-…...

腾讯PAG 动画库Android版本的一个问题与排查记录

1 背景与环境 Android project中有加载动画的需求&#xff0c;设计师推荐使用腾讯的pag动画。项目中使用到的pag android库的版本是&#xff1a;com.tencent.tav:libpag:4.3.50。 2 故事经过 项目中pag的动画资源是有固定尺寸的&#xff0c;由于资源中的内容过于偏左&#x…...

计算机的算术运算之浮点数

3.5 浮点运算 科学计数法&#xff1a;小数点左边只有一位数字的表示数的方法。 规格化&#xff1a;没有前导0的浮点表示法。 二进制小数格式&#xff1a; 1.xxxxxxxxx X 2^yyyyy 浮点&#xff1a;二进制小数点不固定的数的计算机表示。 3.5.1 浮点表示 尾数&#xff1a;…...

Sqlite3 操作笔记

一、 数据格式 支持数据格式 一般数据采用的固定的静态数据类型&#xff0c;而SQLite采用的是动态数据类型&#xff0c;会根据存入值自动判断。SQLite具有以下五种数据类型&#xff1a; 1.NULL&#xff1a;空值。 2.INTEGER&#xff1a;带符号的整型&#xff0c;具体取决有存…...

mysqlRouter读写分离

数据库优化项目 使用中间件ProxySQL实现读写分离降低服务器压力&#xff0c;查看慢查询日志&#xff0c;反馈慢查询优化查询速度&#xff0c;清除无用数据&#xff0c;添加zabbix对mysql的监控。 ProxySql读写分离&#xff1a; 环境&#xff1a;mysql集群134、133 Mysql toute…...

【修订中】ffmpeg 知识点

一、两种安装方式 static FFmpeg binaries for macOS 64-bit Intel brew install ffmpeg 时间有点长 需要挂上代理 二、ffmpeg 使用这个工具去除水印以后原来水印的那个点就模糊了如何解决这个问题呢 使用 FFmpeg 的delogo过滤器去除水印时&#xff0c;通常会导致水印所…...