刘伟炜 黄胜
湖南涉外经济学院 湖南 长沙 410205
在传统的大学教学体系中,一直都以C/C++或者Java作为教学语言。诚然,它们依然是当今使用人数最多的语言,但随着人工智能、大数据分析等领域的发展,Python成为这些领域应用的最佳选择。
Python由吉多·范罗苏姆(Guido van Rossum)于1989年底发明,目前已被应用于很多领域,被诸多高校选定为学生的程序设计入门语言。Python是一种解释型的高级语言,具备交互式、可移植、面向对象的特点,相较于传统语言更加简洁、易读、可扩展。Python相关课程的实践性很强,但一直以来高校课堂的教学往往不自主地偏向理论,不利于培养学生的动手实践能力,无法使学生充分理解和把握Python的知识点。
在传统的课堂教学模式中,侧重方在于老师。这种模式存在以下几个问题:
不利于课堂的教学质量,老师单方面地进行知识输出,使学生处于被动接受的一方,学生不仅容易产生学习疲劳而且没有及时进行知识输出,导致知识消化吸收不及时。
无法有效支持课后教学。学生在课后的自学实践之中往往存在大量疑难问题,而每节课程周期过长,学生往往通过同学和网络等渠道自己解决问题,但同学之间可能互相传递错误知识,网络上对问题的答复偏差较大。
学生对课程方向和进度难以把握。目前学生普遍习惯于填鸭式教育而缺乏自主学习能力,无法自主摸索出正确的学习道路,容易钻进死胡同。
在线判题平台(Online Judge,缩写OJ)主要功能使接收用户提交的源代码,对其进行编译、运行、对比输出结果。
提交的代码一般会在受限的环境下运行,包括时限、内存限制等。每一次提交后的判题结果会及时反馈给用户;平台还会对用户进行排名,以用户提交答案通过的个数多少或题目执行时间的快慢为依据进行排名。
目前,部分高校开发出自己的在线评测平台用于日常教学和竞赛,例如北京大学的POJ、西班牙瓦拉杜利德大学的UVA等。
使用在线判题平台辅助Python语言的教学具有诸多优点[1]:①激发学生的学习兴趣,良性促进知识汲取。在教学之中,教与学缺一不可。对于学生而言,最好的学习方式是动手实践,将在课堂中习得的知识点运用于解题上,能够从一道道题目的通过之中获得学习满足感。②运用场景自由。学生只需借助网络便可随时通过终端设备接入平台,对题目进行编译提交。③即时反馈结果。学生将题目提交之后可以即时获取运行结果,通过反馈学生能够马上对错误进行调整,进一步对相关知识点进行巩固。老师无须参与批阅,极大减轻了老师的工作量。④丰富多元的题库。题库对知识点进行全覆盖,难度递进展开,贴合生活和企业场景,不同的学生都可以根据自身情况对题目进行选择。
针对课程现存问题,为了使学生更好地理解和熟练掌握Python这门重实践的语言。我们应该利用好在线判题平台这一工具,使我们的课程教学模式更加贴切教学和实践相平衡。对此,我们在教学手段和教学方法上了一系列的尝试。
对学生和教师两个主要角色进行需求分析后,概括出如下系统结构图:
图1 系统结构图
从课程学习、学习行为统计、个人信息管理、题目浏览到评论留言,覆盖学生学与练的各个方面。其中学习行为统计的设计意在给予学生及时的反馈,学生从统计数据可以更好把握自己的学习和复习方向,教师也可以通过全局和各个班级的数据统计来科学推动教学的进展。评论模块的设计可帮助打通学生与老师之间的交流壁垒,利用平台的在线特点突破答疑的地点限制。
教师通过学习资料上传,学习任务发布功能,开展“精讲多练”的教学方法。对于课程中学生容易理解,难度适中的内容,教师可以通过录制节选课程视频的方式上传至平台,一次录制可提供给所有加入课程的班级使用,横向抽取教学知识极大减轻了教师的教学负担,压缩了课程普通教学时间,将节省出来的时间用于引导学生进行应用实践,把重心偏向算法、编程构思和程序实现上,强调程序的可读性、规范性。学生通过对视频简易知识的自觉学习,有效激发学生的学习情趣,提升学生对该课程的学习信心[2]。
平时成绩的评判通过从平台题库抽取题目,安排统一时间进行答题,将考核穿插在每一个新章节开始前,以此达到阶段性检验学生的真实学习情况,同时有效帮助学生巩固旧的章节知识。
依据在线判题平台的讨论、题解、评价等模块实现了学生和老师的双向互动,打破传统教学中学生信息难以反馈至教师的局面。通过讨论模块,不仅学生可以相互讨论,而且老师也可以参与其中及时获得学生想法;通过题解模块,学生可以将自己的解题思路上传,学生之间可以相互交流,老师可以做出直到;通过评价模块,学生可以对题目以及课程做出反馈。
题库设计分为通用题库和个性题库,通用题库从各大现有平台搜取综合质量较高的题目,通过统一模板由管理员录入;个性题库交由教师为同学创建,根据教学章节、知识点、难点等因素进行归类录入。学生通过个性题库进行刷题练习迅速掌握对应学习内容,通过通用题库可以了解目前实际应用的方向,对自身的学习进行延伸。平台收集学生的题目通过总数、提交次数、提交未通过个数等量化标准对学生进行排名,全局进行平台所有用户排名,局部以班级内为单位进行排名,排名以题目通过总数作为第一考量标准,通过率作为第二考量标准。通过清晰的排名反馈,有效激发学生的获得感,营造良好的学习氛围。
通过对各别班级进行了实际应用,同时基于在线判题平台的课程学习情况进行了问卷调查,从数据中可以得到学生对这种学习方式的高度认可。
图2 应用效果调查
在以前的课程教学中,学生常常出于单方接受输出的位置,经常在晦涩难懂的知识点中失去学习动力,在课后实际运用中一旦失去了参考答案就无从下手,即便题目解出后也存在着各种错误。通过在线判题平台,将课前课后的学习有效联动起来,学生的学习效果有了明显的改善[3]。通过线上学习资料的上传,为学生提供了查漏补缺的新环境;平台题目于教学内容关联良好,而且难度有所提升,锻炼了学生自主思考和实践的能力。在平台中采用计分排名机制,涵盖从各个班级到专业全体学生,无形中给学习一种激励,营造出你追我赶的学习氛围。
从老师单向传递的灌输式教学向双向反馈教学转变。当学生的学习兴趣被激发,便不会满足于基础教学内容,通过题库向横向纵向延伸的收纳,满足了学生对进阶知识的需求,而且在兴趣驱动下学生会进行自主的吸收,学生可以自己的学习体会和学习建议通过平台进行输出,不仅可以创造积极的学习氛围,而且有利于课程知识的良性发展[4]。老师在一定程度上也可从在不同班级不断重复的教学中解放出来,通过平台对各个班级学生的学习情况进行了解,摸索出针对各个班级不同的教学模式,老师可以将教学工作多放在引导和倾听上,为学生收集提供适用的学习资料同时,听取学习对课程不足之处的意识,及时进行优化和改进。在课堂上不必再对基础知识点一一讲来,提取布置学习任务,在课堂上进行对应知识点的引导实践。
在基于在线判题平台的教学体系中,在线实践和常规教学相辅相成、相互促进。学生在课堂学习的基础上,通过在线判题平台的训练,充分巩固了知识体系,激发学生运用知识去分析问题解决问题的兴趣。每个学生拥有各自的账号便可以利用网络在任何时间地点进行在线练习,极大地延伸了学习时间和空间的灵活性。老师可以在课程的不同时间通过平台测试学生的学习情况,从题库中抽取题目或者额外上传新题,要求学生在规定的时间内进行测试,最后上传测试结果,老师不仅可以利用测试结果作为课程的阶段性成绩来减轻平时性考核的工作任务,而且可以作为参考同学生进行交流。
基于在线判题平台的Python课程的改革,将理论知识的学习与实践能力的提高很好地结合起来,注重学生实际动手能力的积累同时,利用线上平台摸索出高效学习的模式,激发了学生学习的主动性,为课程的不断优化和进步打下基础。其设计理念是面向“计算+”交叉融合的新工科计算能力需求,以精心设计、充满“噪音”的复杂真实案例串联课程目标,以学为中心分解真实案例,从简单起步、迭代滚动深入,在过程中植入计算所需知识、方法、可能问题等,逐步培养复杂工程问题的计算分析和计算研究能力,使得学生能够满足“计算+”理工类岗位的计算能力较高级要求,并能够举一反三,具备依托互联网开放资源独立解决理工类新需求的能力。