一流课程建设视角下C++程序设计课程教学改革与实践研究
作者: 魏英
关键词:混合式学习;协作学习;翻转课堂;教学设计;教学改革
中图分类号:G642 文献标识码:A
文章编号:1009-3044(2024)21-0157-04
0 引言
2019年,教育部发布《关于一流本科课程建设的实施意见》[1],实施一流本科课程“双万计划”,逐步认定万门左右国家级一流本科课程和万门左右省级一流本科课程。其中,线上线下混合式一流课程的比例最大,成为近年来高校课程建设与课堂教学改革的重点。
信息技术飞速发展,社会对大学生信息素养的要求日益增加,各专业的学生对掌握程序设计能力的需求也更加迫切,高校普遍开设了程序设计类课程。根据2024 年3 月最新发布的编程语言流行度指数TIOBE Index[2],C++较去年上升1名,超越Java位于第3名,前2名分别是Python和C语言。根据DevJobsS⁃canner发布的开发人员就业市场统计数据[3-4],C++位列2023年市场最需要的编程语言第6位,相关岗位薪酬位列第4位。相较于热门的Python语言,C++语言更加适合学习面向对象程序设计方法,许多高校将C++程序设计课程作为编程进阶课程。
课程是人才培养的核心要素,课程质量直接决定人才培养质量,深入推进C++程序设计课程教学改革,具有十分重要的意义。近年来,相关研究主要集中在运用产出导向 (OBE, Outcomes-based Education) 理念指导教学设计[5-6],探索实践混合式教学模式[7-8],引入项目驱动、认知任务分析等教学方法[9-10],开展课程思政建设[11]等方面,但立足于一流课程建设要求所进行的综合研究与实践尚不充分。
1 传统课堂教学面临的挑战
1.1 学生能力差异较大
C++程序设计课程主要面向大学一年级学生开设。虽然“算法与数据结构”属于高中信息技术课程的选择性必修模块,但由于大部分省份未将信息技术列入高考选考科目,不同省份对高中信息技术课程的重视程度不同。学生进入大学时所具备的实际编程能力差异较大,相当数量的学生尚未具备基础的结构化程序设计能力。
1.2 课程教学时数有限
近年来,为了给学生留出更多的时间安排个人学习计划,各高校在制定本科人才培养方案时,总学分数呈减少趋势。如浙江科技大学2021版培养方案规定四年制本科专业总学分(包括理论教学和实践环节)不超过175学分。同时,越来越多的工科专业按照工程教育认证标准构建课程体系,通常规定数学与自然科学类课程总学分至少占15%,包括工程实践与毕业设计等在内的实践教学环节总学分至少占30%。这样作为专业基础课的C++程序设计课程的学时数将十分有限。
1.3 应用能力训练不足
许多高校的C++程序设计课程的教学内容往往更加注重知识的深度与广度,理论性强,实践性弱,在训练学生团队协作能力、解决复杂工程问题能力方面相对不足,难以适应培养应用创新型人才的需要。
1.4 教学模式融合不够
课程仍然主要采用课堂讲授、课内实验、课外练习的传统教学模式。虽然一些学校尝试开设网络课程为学生提供教学资源,但未能充分发挥在线学习的优势,特别是还未能实现移动学习与传统课堂教学的深入融合。
1.5 自主学习动力不强
虽然各学校普遍建立了平时成绩考核机制,但缺少必要的技术手段,难以科学分析日常学习情况,不能及时反馈学生,无法进行过程性评价,难以实现个性化教学,无法有效提升学习积极性。
2 混合式教学模式设计
2.1 设计思路
混合式学习[12](Blended learning) 是把传统学习方式的优势和数字化学习(E-learning) 的优势结合起来,既发挥教师引导、启发、监控教学过程的主导作用,又充分体现学生作为学习过程主体的主动性、积极性与创造性,使二者优势互补,获得最佳的学习效果。目前,数字化学习更多采用在线课程的方式进行。大规模在线开放课程即慕课[13] (MOOC, Massive Open On⁃line Course) 是2007年后在开放教育领域逐渐兴起的一种课程模式,使学习者能够从自身的兴趣出发学习,但也对学习者提出了较高的自我调节适应学习的要求。专属在线课程[14] (SPOC,Small Private OnlineCourse) 是在MOOC应用过程中发展起来的一种面向校内选拔学生,限制课程规模,并规定选拔标准和学习要求的课程模式。
C++程序设计课程基于SPOC采用线上线下相结合的混合式教学模式,基本设计思路为:根据建构主义和协作学习理论,设计一种任务驱动的、适应碎片化学习场景的、支持教学全过程评价的、可灵活组织的模块化教学模式。
1) 重构教学内容,适应碎片化学习。教师在准备微课学习资源时充分考虑学生利用碎片化时间进行学习的需要,科学梳理各知识点之间的联系。每个微课视频一般包括4个左右的知识点,方便学生根据自身知识结构选择学习。
2) 构建教学模式,适应任务驱动式教学。构建线上线下相融合的学习空间,线上依托网络课程平台提供学习资源、互动空间,线下借助智慧教室围绕预设任务开展研讨交流。线上任务的完成情况就是线下研讨的交流内容,教师引导学生在分析问题原因、寻找解决方法的过程中,理解掌握相关知识技能。任务驱动式教学贯穿始终,通过合理设计研讨内容,有效开展协作学习与翻转课堂活动。充分发挥教学过程中教师的引导性与学生的主动性,改革传统课堂中教师为主的教学模式,形成良性的教学互动关系。
3) 改革评价方法,适应自主学习。学生根据自身情况自主选择学习的时间、内容以及协作的伙伴。网络课程平台具备学习情况统计分析功能,实现过程性评价与终结性评价有机结合。在教学活动中,教师应当重视全过程化管理,及时发现并纠正学生在学习过程中出现的问题。
2.2 教学目标
设计C++程序设计课程教学目标时,应注重知识、能力、素质的有机融合,培养学生解决复杂问题的综合能力和高级思维。
1) 知识目标。具备C++语言的基本语法知识,掌握面向对象程序设计的基本方法。
2) 能力目标。熟悉运用计算机程序分析和解决实际问题的基本过程,初步具备使用C++语言进行面向对象程序设计的能力,为后续运用编程技能解决复杂工程问题奠定基础。
3) 素质目标。鼓励学生学有所长,报效国家,引导学生理解信息技术行业的工匠精神,体会程序开发过程中的团队合作能力,思考程序开发者应该具备的职业素养。
2.3 教学内容
将C++程序设计课程的教学内容分为10个单元,安排48学时(如表1) 。其中,约30%的教学时间实施学生线上自主学习,其余为线下课堂讲授。在线下面授环节根据教学内容将传统的知识讲授转变为课堂讨论,改变知识的单向传递途径,通过小组协作交流,提高学习效率。在设计课堂研讨内容时,注重提升课程学习的进阶性,让学生体验“跳一跳才能够得着”的学习挑战,培养学生深度分析、大胆质疑、勇于创新的精神和能力。
2.4 教学方法
根据课程教学内容,综合采用任务驱动教学、协作学习、翻转课堂等教学方法,让学生忙起来,让课堂活起来。
1) 任务驱动教学。结合知识点预设任务,让学生在完成任务的过程中掌握相关知识技能,将再现式教学转变为探究式学习。
2) 协作学习。学生自由组成学习小组,明确分工,合作解决问题,参与课堂研讨交流。
3) 翻转课堂。学生课前自主学习基础知识,分析案例,并在课堂进行汇报。教师组织问题探究与互动研讨,帮助分析知识的内涵与外延。
2.5 组织实施
课程组织实施过程分为课前、课中、课后三个环节(如图1) 。依托网络课程资源,引导学生课前在线学习,完成预设任务。在课堂教学环节,将传统的知识讲授转变为课堂讨论,改变知识的单向传递途径,实现翻转课堂。通过小组协作交流,提高学习效率。通过移动学习工具,方便师生互动。课后完成进阶任务,巩固所学内容。
课前,教师科学梳理各知识点之间的联系,准备好教学资料、研讨内容并根据教学进度发布在网络课程平台上,方便学生进行碎片化学习。学生自主安排在规定时间内完成相关任务,为课堂教学环节做好准备。
课中,教师更多地将传统的知识讲授转变为课堂讨论,并通过移动学习工具,进行随堂测验等教学互动,掌握学生课堂学习状态,进行针对性的分析讲解。学生以小组汇报的形式进行专题研讨,每组 3~4 人,每次安排 1~2 组进行汇报,回答现场提问。
课后,教师通过布置在线测验和课外实践作业,帮助学生掌握相关知识点。所有测验题目均提供答案分析,所有实验作业均提供视频讲解,方便学生课后对照学习。学生自主安排时间完成相关作业,还可以通过平台的讨论区进行线上交流学习。
教师通过平台统计分析学生在课前、课中、课后各项任务的完成情况,并向学生及时反馈统计报告,方便学生修订个人学习计划,实现教学全过程化管理。
2.6 成绩评定
课程总评成绩由平时成绩(20%) 、网络课程成绩(40%) 和考试成绩(40%) 三部分构成。如果学生未认真完成平时的各项教学任务,仅靠最后的期末考试成绩将无法通过课程考核。平时成绩根据每次的网络课程、研讨交流、实验任务的完成情况逐项打分,实现过程性评价。
每个小组至少有一次研讨任务,研讨时小组成员需人人参与,自行分解任务。由教师根据任务分工及成员各自表现,从任务完成情况、表达能力、回答提问三方面进行评定,增强学生经过刻苦学习收获能力和提高素质的成就感。
网络课程成绩由视频观看(40%) 、作业(40%) 、测验(10%) 和论坛发帖(10%) 四部分组成。学生需要根据教师每周布置的任务,在线提交作业,完成章节知识的线上测验。为鼓励交流协作,对论坛发帖情况也评定了相应的分数。
为了让学生更加重视平时学习,规定有下列情况之一将取消考试资格:
① 网络课程在线时长不达标;
② 未参加课程研讨;
③ 30%以上的实验作业未按时完成。
3 派生类的访问控制问题教学设计案例
3.1 教学目标
1) 知识目标。理解派生类对象的创建过程,熟悉三种继承方式下对成员访问控制的区别,理解受保护成员和保护继承的作用。
2) 能力目标。能够根据需要选择合适的继承方式设计出派生类,掌握派生类构造函数的设计方法,掌握通过同名隐藏扩展派生类成员功能的方法。
3) 素质目标。在师生互动中及时给予表扬和激励,让学生体会学习的快乐,树立学好本课程的自信心。进一步培养学生的学习兴趣,鼓励学生学有所长,报效国家。通过课上安排的小组汇报,培养学生团队合作的意识与能力。通过分析教学案例中的错误原因,引导学生理解信息技术行业的工匠精神,思考程序开发者应该具备的职业素养。
3.2 学情分析
学生的特点是思维活跃,喜欢课堂互动,能够根据教师布置的任务进行自主学习,但知识背景、能力水平差异较大。学生已知类的设计方法、构造函数的作用、公有成员和私有成员的访问权限、继承的概念,学生未知派生类成员的构成、派生类构造函数的设计方法、三种继承方式的区别,学生想知道保护继承方式的作用。
3.3 教学内容与资源建设
教师通过浙江省高等学校在线开放课程共享平台发布类、构造与析构、派生类、访问控制等知识点微课视频,供学生课前回顾已学内容,拓展新的知识。教师在讨论区发布一个派生类构造函数的设计任务,要求学生参与讨论,并为分组研讨做准备。教师提前准备随堂测验题目,方便了解学生对相关内容掌握情况。
3.4 教学过程
通过将课前预设的研讨任务导入课堂教学,能够有效激发学生的参与度。研讨内容应当难易适中,才能够有效支持翻转课堂教学。通过小组协作学习,能够提高学生合作交流和解决实际问题的能力。引导学生高度关注教学过程,紧跟教学思路独立思考,主动探究问题,充分参与课堂活动,从而达到预期的学习目标。
设计本节课的教学过程时(如表2) ,始终围绕一个案例剖析与类的继承相关的知识,鼓励学生课外继续修改测试该案例,在实践应用中提升自身的认知水平。课后布置在线测验题目和实验作业,加深学生对本次学习内容的理解与应用能力。在下次课的导入环节,将安排学生研讨实验作业。
4 实践效果
C++程序设计课程已经建设成为一门省级一流本科课程,在浙江省高等学校在线开放课程共享平台上累积有24所学校的学生选修。实践证明这种线上线下相结合的混合式教学模式受到学生欢迎,在最近一期的课堂教学质量评价中,学生评教成绩位于学院前8%,同行评价位于学院前5%。通过本课程的学习,有效提升了学生的程序设计能力,吸引学生积极参加信息技术类科技竞赛与创新活动,并取得丰富的成果。
5 结论
课程组注重教学研究与改革,重视教学过程化管理,结合省级课堂教学改革项目研究和省级一流本科课程建设实践,将研讨式教学、过程化管理、综合性考核、在线课程建设等引入本课程,取得了良好的成效。未来将持续进行课程教学资源迭代,进一步浓缩微课视频内容,丰富真实场景下的应用案例,提炼出难度适宜的学习任务,更加适应人才培养需要。通过在线编程平台更加高效地进行实验教学过程化管理,开展更加灵活的在线考核,有效地培养学生编程实践能力。开展高水平的课程思政教学研究,科学设计课程思政的具体实施路径,实现知识传授、能力培养和价值引领的有机融合,形成可供同类课程借鉴共享的经验、成果和模式。