丁进,孙勇智

(浙江科技学院 自动化与电气工程学院,浙江杭州 310023)

线上线下混合式教学现今已成为主流的教学实践方式[1-2]。在该方式下,学习过程分为课前学生线上预习并完成相应习题,课上(即线下)教师进行重点讲解、答疑或安排小组讨论,课后学生线上完成作业以及拓展学习等三个阶段。课堂上不再是传统的教师单方面讲授、学生被动接受,取而代之的是学生通过分享学习心得、提出学习困惑、参与课堂小组讨论来进行深度参与,真正做到“以学生为中心”的课堂教学。

在线上线下混合式教学实践中,常常会遇到以下问题:对学生在线上的课前预习和课后拓展学习情况无法全面掌握;对课上讲解的知识点学生掌握情况无法全面了解;课上提出的问题只能由部分学生作答,无法做到全覆盖等。有效地解决这些问题是线上线下混合式教学实践最终能够取得实效的关键。雨课堂是清华大学在线教育办公室和学堂在线共同推出的新型智慧教学工具,是教育部在线教育研究中心的最新研究成果。它简单易用,功能强大。通过雨课堂,教师可以推送课前预习课件和课后拓展资料,并通过习题检查学生课前预习情况和课后拓展学习情况;课上,教师可以打开弹幕、接收学生投稿,以便及时了解学生对重要知识点的接受情况。还可以现场发布题目,学生通过手机端输入答案并提交,全面了解学生回答问题的情况。学生端通过手机参与,有效提高了学生课堂参与的积极性[3-4]。

本文以《C++语言程序设计》课程为例,探讨了如何通过雨课堂这一智慧教学工具实现线上线下混合式教学,达到翻转课堂的目的[5-6]。首先简要介绍了雨课堂的使用方法,梳理了课程的主要教学内容及翻转课堂的表现形式,全过程地介绍了基于雨课堂的课前预习、课上重点讲解、分组讨论、课后作业及拓展学习的实现,对基于雨课堂的《C++语言程序设计》课程线上线下混合式教学实践进行了总结。

1 基于雨课堂的《C++语言程序设计》线上线下混合式教学实践

1.1 雨课堂简介

雨课堂是清华大学和学堂在线共同开发的一个智慧授课平台。教师可以利用它提供的功能设计课程讲授的各个环节,包括课前预习、课上重难点讲解、课上互动、课后作业及拓展学习。雨课堂由基于MS PowerPoint 的插件、雨课堂微信小程序和雨课堂网页端三部分组成。

1.1.1 基于MS PowerPoint 的雨课堂插件

雨课堂插件中包含了服务器选择,微信登录雨课堂,开启雨课堂授课,在课件中插入题目(单选题、多选题、填空题、主观题等),上传试卷、作业、课件、拓展资料等功能。雨课堂插件是教师进行课堂讲授的唯一入口,在进行课堂讲授时,首先使用微信登录雨课堂,其次开启雨课堂授课,这时将会出现二维码供学生扫码签到。学生签到后即可在手机微信端同步观看PPT。当PPT 课件翻页到题目时,教师可点击“发送题目”按钮,并设置完成时长。学生会在微信端接收到题目并作答提交。

1.1.2 雨课堂微信小程序

雨课堂微信小程序分为教师端和学生端。教师端的主要功能包括遥控器、课堂总结报告查看等。遥控器功能主要包括课堂随机点名、开启弹幕、将学生投稿投屏、查看学生标注为不懂的PPT页等。课堂总结报告包括上课人数、课堂习题回答情况统计、弹幕内容统计、投稿统计等。需要指出的是微信小程序中的课堂总结报告功能与雨课堂网页端查看课堂总结报告功能基本一致,推荐在网页端查看课堂总结报告。

雨课堂学生端微信小程序的主要功能包括学生上课签到、答题、发弹幕、发投稿、标注不懂的PPT 等。在此模式下,手机被用来玩游戏、刷微博等的概率将大大降低。

1.1.3 雨课堂网页端

雨课堂网页端的网址是yuketang.cn。登录后将显示自己的授课班级,点击相应的班级后,将看见每次课堂的总结报告、提交的试卷及作业、上传的预习课件或拓展学习资料、讨论区等。推荐通过雨课堂网页端查看课堂总结报告、批改课堂题目、批改试卷或是课后作业。

1.2 教学内容及翻转课堂设计

《C++语言程序设计》课程采用的教材是郑莉、董渊编着的《C++程序设计基础教程》,清华大学出版社出版。教学内容共分为10 章,分别是绪论、简单的C++程序设计、函数、类与对象、数据的共享与保护、C++的指针数组与结构体、继承与派生、多态性、流类库与输入输出,以及异常处理。

绪论主要讲授计算机程序设计语言的发展、面向对象的方法、面向对象的软件开发、信息的表示与存储、程序开发的基本概念等,课堂上重点对计算机中浮点数的表示进行讲解、答疑,并就面向对象的程序开发相较于面向过程的程序开发的优越性进行分组讨论。

C++简单程序设计主要讲授C++语言概述、基本数据类型和表达式、数据的输入与输出、算法的基本控制结构、自定义数据类型等,课堂上重点对算法分支结构和循环结构进行讲解、答疑,并就此进行课堂练习和讨论。

函数主要讲授函数的定义与使用、递归函数、内联函数、函数重载、C++系统函数等,课堂上重点对递归函数进行讲解、答疑,并就此进行课堂练习和讨论。

类与对象主要讲授面向对象程序设计的基本特点、类和对象、构造函数和析构函数、类的组合等,课堂上重点对类定义与现实世界中客观存在的对应关系进行讲解、对构造函数和析构函数的作用进行答疑,并要求学生编写一个复数类进行练习和讨论。

数据的共享与保护主要讲授标识符的可见性、对象的生存期、类的静态成员、类的友元、多文件结构和编译预处理命令等,课堂上重点对静态变量的使用和多个头文件互相包含的预处理命令进行讲解、答疑,并要求学生使用静态变量对函数调用次数进行计数,以及编写单件模式。

数组、指针和字符串主要讲授数组、指针、动态内存分配、用vector 创建数组对象、深复制与浅复制、字符串类等,课堂上重点对多维数组和指针数组进行讲解、答疑,并要求学生动态生成三维数组并赋值。

继承与派生主要讲授类的继承与派生、访问控制、类型兼容规则、派生类的构造和析构函数、派生类成员的标识与访问等,课堂上重点对访问控制、二义性、虚基类、派生类的内存布局进行讲解、答疑,并就此进行练习和讨论。

多态性主要讲授多态性概述、运算符重载、虚函数、纯虚函数与抽象类等,课堂上重点对运算符重载、派生类与基类指针转型、虚函数的实现原理进行讲解、答疑,并就此进行练习和讨论。

流类库与输入输出和异常处理主要讲授I/O 流的概念与流类库结构、输出流、输入流、异常处理的基本思想、C++异常处理的实现等,课堂上重点对文件输出类ofstream 和文件出入类ifstream 进行讲解、答疑,并就此进行练习和讨论。

课程的最后一次课是大翻转,课堂完全交给学生,重点对先前布置的大作业进行展示、讨论,交流学习心得。

1.3 基于雨课堂的全过程教学方案示例

选取继承与派生和多态性这两个章节介绍如何使用雨课堂工具来完成课前预习、课上重点讲解、课上练习与讨论,以及课后作业布置与拓展学习。

在继承与派生的讲授中,课前通过雨课堂网页端上传预习课件、学习视频和预习作业。学习视频为郑莉和李超在学堂在线的慕课《C++语言程序设计进阶》第2 部分,预习作业包括继承的访问控制方式、继承的构造函数调用次序、继承的析构函数调用次序、二义性的解决方法、多继承下派生类的内存布局等,使用雨课堂布置预习作业的好处是可以设定提交作业时间,了解学生预习的情况,以便在课堂上针对预习作业中错误率较高的问题进行重点讲解。课堂上对访问控制、二义性、虚基类、派生类的内存布局进行重点讲解,并通过发送习题、弹幕、投稿等方式与学生互动,及时掌握学生接受情况。在随后的课堂练习中,通过雨课堂发放试卷并设定时间,考查学生能否编制程序验证派生类对象的成员内存地址与理论分析保持一致。学生提交完试卷后,可随机抽取一些答卷进行讲解并讨论。课后作业与拓展学习的布置方式与课前预习类似,重点是基类和派生类的定义、构造过程和析构过程、标准库中继承案例的学习等。

在多态性的讲授中,与继承与派生类似,课前通过雨课堂网页端上传预习课件、学习视频和预习作业,学习视频为郑莉和李超在学堂在线的慕课《C++语言程序设计进阶》第3 部分,预习作业包括运算符的重载方式、虚函数的定义与调用、虚函数实现原理、带有虚函数的派生类对象布局等。课堂上对运算符重载、派生类与基类指针转型、虚函数的实现原理进行重点讲解,并通过发送习题、弹幕、投稿等方式与学生互动,及时掌握学生接受情况。运行提前编制的示例代码,向学生演示带有虚函数的派生类对象的内存布局情况。在随后的课堂练习中,通过雨课堂发放试卷并设定时间,考查学生能否编制观察家模式(Observer)。观察家模式是使用虚函数实现多态性的一个典型案例。学生提交完试卷后,可随机抽取一些答卷进行讲解并讨论。课后作业与拓展学习的布置方式与课前预习类似,重点是运算符重载、使用虚函数实现多态性、装饰模式、桥接模式和工厂模式的学习等。

2 结语

线上线下混合式教学的目的是实现翻转课堂,改变了以往教师满堂灌、课堂气氛沉闷、互动少的情况,让学生真正成为课堂的主人。实践证明这对提高学生学习的积极性和效率,促进知识的吸收起到了关键作用。但是传统的线上线下混合式教学实践存在对课前预习、课后拓展学习情况无法掌握,课上对知识点学生掌握情况不了解,课上答题无法做到全覆盖,玩手机游戏现象无法消除等问题,因此引入先进的信息工具平台就显得尤为重要。本文介绍了基于雨课堂的《C++语言程序设计》课程线上线下混合式教学实践案例,通过雨课堂,教师可以推送课前预习课件和课后拓展资料,通过习题检查学生课前预习情况和课后拓展学习情况;在课堂上,教师可以打开弹幕、接收学生投稿,以便及时了解重点知识点的学生接受情况,还可以现场发布题目,学生通过手机端参与,老师可全面了解学生回答问题的情况。调查结果显示学生对基于雨课堂的线上线下混合式教学评价良好,并认为该工具能够帮助自己有效完成课程的学习。