谢党恩 梁瑞 张志立
关键词:前置性学习;PTA 平台;课程改革;程序设计基础
1 研究背景
程序设计基础课程是计算机相关专业新生入校后的第一门专业基础课[1]。该课程是一门实践性很强的必修课,也是学习后续专业知识的基础,因此在整个课程体系中占据举足轻重的地位。
结合学校实际,该课程以C语言为依托,主要讲授程序设计语言的基本原理和程序设计方法。在整个培养方案中,期望通过本课程的学习,使学生初步形成良好的程序设计风格,能够利用编程工具熟练进行程序的编辑、编译、连接、运行并对程序能够调试和测试,具备初步的分析问题和利用计算机表述复杂工程问题的能力,为后续课程如数据结构、面向对象程序设计等课程打下良好的专业基础。
2 现状分析
程序设计基础课程内容较多,实践性较强,有一定抽象性,对初学者有一定难度。为配合高校课程改革“减学分、减学时”的总体指导思想,程序设计基础课程的学时也受到一定程度的缩减[2],导致教师在课时的安排上总是存在捉襟见肘的困难,加之新生入校后军训还要占用2周左右的时间,进一步加剧了“课时不足”现象的产生。“课时不足”最终表现在任课教师讲授到在该课程后面重点内容(如指针、链表等)时只能点到为止,而这部分内容对后续课程数据结构等的学习是至关重要的,由此会引发一系列不良的连锁反应。
3 前置性学习的实践研究
3.1 前置性学习
“前置性学习”本质上是学习起点的前移,即学生先进行个性化的自学,将学习任务提前。前置性学习一般安排在课外进行,教师可以提前发布相关章节任务,然后让学习者带着问题和思考进行自主学习。
3.2 前置性学习的可行性
1)环境及资源可行性
随着我国“互联网+教育”工程的不断推进,网络已经触及千家万户,即便是在偏远的农村,互联网也都已经有效覆盖,为远程教学提供了保障[3]。同时,各类网络教育资源平台也应运而生,尤其是近几年受疫情影响,各高校都建有自己的网络教学平台,为前置性学习提供了条件。
2)设备可行性
随着计算机硬件技术的发展,硬件设备的性能越来越高,但价格越来越低,这也为普通家庭购买电脑提供了可行性。对于高考被录取到计算机相关专业的学生,配置计算机是开展后续学习的前提条件。因此,很多家长在接到孩子录取通知书后,都会在开学前为学生配置一台个人计算机(以笔记本电脑为主),这也为本课程的前置性学习的实践操作提供了可行性。
3)时间可行性
从学生接到入学通知书(以许昌学院为例,一般在8月10日左右)至学生入学报到(9月初),学生在家有大约20天的空闲时间,利用这段时间将学生组织起来每天抽出3~4小时进行程序设计基础课程的前置性学习,绝大部分学生是可以接受的。
3.3 前置性学习的实施方法
前置性学习以学生自学为主,但需要任课教师制定相关的学习内容、完备的自学方法、还要精选与自学内容匹配的练习题,同时还要与学生建立通畅的线上答疑渠道(QQ群等)。
3.3.1 优选合适的前置学习内容
针对程序设计基础课程,课程组在实施过程中,选取了教材前三章的内容并凝练为5个基本学习模块作为学生前置性学习的主要内容。这些模块主要包括:
1)程序设计和C语言介绍:让学生了解程序设计语言的内涵,熟练掌握C语言程序的开发过程。
2)C语言的基本知识:介绍C语言的基本数据类型、常量和变量的使用方法、C语言的各类运算法和表达式的使用方法等。
3)顺序结构程序设计:重点掌握printf 语句和scanf语句的使用方法。
4)分支结构程序设计:重点强调程序流程图的绘制方法,掌握单分支、双分支及多分支的程序设计实现方法。
5)循环结构程序设计:主要介绍C语言的3种循环语句实现循环结构的程序代码设计。
3.3.2 制定授课方案
授课方案的制定采用腾讯会议隔天授课的形式,每次授课时长2个小时。采用隔天授课主要是考虑到学习者的接受能力,放慢节奏,确保学生打牢基础。
如表1所示为实施过程中的具体时间安排表。其中第一次课主要为没有电脑的同学采购电脑做准备,帮助同学们选择机型,根据自己的所学专业选择合适的硬件配置,尽量让学生获得较高的性价比。接下来大概有一周的时间供大家去采购硬件设备。后续的7 堂课,基本上按照预定的模块内容开展线上授课。
线上授课全程录像并在课后及时上传到学习通在线学习平台,供同学们进行回放学习,也为不能参与直播课堂的同学提供了学习机会。
3.3.3 精选同步练习题
程序设计课程的学习重在上机实践环节,为了确保学生有足够的上机实践时长,课程组借助于PTA平台[4]发布了57道同步练习题,学生在每次授课结束通过实操这些题目来检验对知识点的掌握程度。PTA是由浙江大学主导,杭州百腾教育科技有限公司管理运营,全国高校教师共同建设的程序设计类课程的辅助教学平台[5]。如图1所示,在PTA平台上教师可以建立并分享自己的题目集、创建自己的班级、布置作业、统计成绩并进行数据分析等。
学生通过平台完成作業,提交代码,平台自动完成批改,并生成相关的统计数据,学生可以实时看到自己在班级中的排名情况,在动手实践的过程中形成一种“你追我赶”的学习氛围,如图2所示。
3.3.4 做好答疑及引导
通过建立线上QQ群,及时解决学生学习过程中遇到的问题。首先,教师要坚持“授之以渔”的思想,避免“就题论题”。在问题的解答过程中应注重培养学生借助于互联网手段自主解决问题的能力,教师给予学生的是一种普适性的解决同类问题的手段或方法,而不要局限于学生提出的问题本身。
其次,要引导学生“互帮互助”,在班级内部解决问题。教师要引导学生把遇到的问题用简洁准确的语言在QQ群中进行描述,然后配以问题截图,让同学们一起思考问题的解决办法。在这个过程中,可能有的同学也遇到了类似问题并已解决,就可以直接给出解决方案。这种方式不仅可以有效降低教师答疑的工作量,也有助于培养了学生的语言组织和表达能力。
此外,答疑环节可以请高年级的学习成绩较好的学生入群做助教,协助老师解答问题。教师要做到及时查看学生问题是否得到解决,一定不能出现长期无答复的情况,避免挫伤学生的前置性学习积极性。
4 实践效果及分析
经过近20天的前置性学习,学生入校后组织进行了一次摸底測验,主要用于检验学生在假期学习的成果。本次测验借助于PTA平台发布,要求在40分钟内完成4道编程题,涵盖程序设计中数字类型及表达式应用、分支语句及循环语句的使用等知识点(如图3 所示),参与测评学生总计129人。
从总体考试成绩分布情况可以看出(如图4 所示):(1)11位同学在有限时间内拿到了满分;(2)有近20%同学得分在[80,100)分之间,至少做对了3道题;(3)过半数的学生(69人)成绩在[50,80)分之间,至少完成了2道题;(4)存在少部分同学(26人)得分小于50分,其中有20个同学得分大于20分(完成了1道题),有6个同学得0分。
学生入校后,经调研6名得0分的同学在接到通知书后,始终没有加入班级QQ群,未得到提前学习的信息,因此在报到前没能正常开展“前置性学习”,加上高中阶段也没有接触过程序设计课程的学习或培训,对C语言编程一无所知,无法完成测试题目。11 位得满分的同学,除了按时参与了假期几次线上课程的学习外,还及时完成了57道同步作业,全部通过系统检测。
从成绩分布可以看出,前置性学习在培养学生基础编程能力方面取得了不错的效果。在没有正式授课之前能够通过短时间的学习,完成2道及以上的题目的学生比例高达80%,说明学生已经跨过了程序设计入门阶段的“黑暗时刻”,具备了初级的编程思维能力。
5 结束语
实验表明,大一新生自拿到录取通知书到正式报到这段时间属于是一个完全放飞自我的短暂时期(差不多有近1个月的时间),利用这段时间让学生集中精力学习一门大学阶段的基础编程课程是完全可行的,并且是高效的。
本文详细介绍了计算机相关专业借助于前置性学习方法,利用短暂的20天时间引导学生积极开展程序设计基础课程的前置学习,并配以同步的练习题目,可以有效提升学生的编程思维能力,同时也解决了程序设计基础课程开课学时严重不足的问题。学生入校后,已经进行过前置性学习的内容就可以加快授课进度,为后续的内容预留出更多的教学时间。