丁進,孫勇智
(浙江科技學院 自動化與電氣工程學院,浙江杭州 310023)
線上線下混合式教學現(xiàn)今已成為主流的教學實踐方式[1-2]。在該方式下,學習過程分為課前學生線上預習并完成相應(yīng)習題,課上(即線下)教師進行重點講解、答疑或安排小組討論,課后學生線上完成作業(yè)以及拓展學習等三個階段。課堂上不再是傳統(tǒng)的教師單方面講授、學生被動接受,取而代之的是學生通過分享學習心得、提出學習困惑、參與課堂小組討論來進行深度參與,真正做到“以學生為中心”的課堂教學。
在線上線下混合式教學實踐中,常常會遇到以下問題:對學生在線上的課前預習和課后拓展學習情況無法全面掌握;對課上講解的知識點學生掌握情況無法全面了解;課上提出的問題只能由部分學生作答,無法做到全覆蓋等。有效地解決這些問題是線上線下混合式教學實踐最終能夠取得實效的關(guān)鍵。雨課堂是清華大學在線教育辦公室和學堂在線共同推出的新型智慧教學工具,是教育部在線教育研究中心的最新研究成果。它簡單易用,功能強大。通過雨課堂,教師可以推送課前預習課件和課后拓展資料,并通過習題檢查學生課前預習情況和課后拓展學習情況;課上,教師可以打開彈幕、接收學生投稿,以便及時了解學生對重要知識點的接受情況。還可以現(xiàn)場發(fā)布題目,學生通過手機端輸入答案并提交,全面了解學生回答問題的情況。學生端通過手機參與,有效提高了學生課堂參與的積極性[3-4]。
本文以《C++語言程序設(shè)計》課程為例,探討了如何通過雨課堂這一智慧教學工具實現(xiàn)線上線下混合式教學,達到翻轉(zhuǎn)課堂的目的[5-6]。首先簡要介紹了雨課堂的使用方法,梳理了課程的主要教學內(nèi)容及翻轉(zhuǎn)課堂的表現(xiàn)形式,全過程地介紹了基于雨課堂的課前預習、課上重點講解、分組討論、課后作業(yè)及拓展學習的實現(xiàn),對基于雨課堂的《C++語言程序設(shè)計》課程線上線下混合式教學實踐進行了總結(jié)。
雨課堂是清華大學和學堂在線共同開發(fā)的一個智慧授課平臺。教師可以利用它提供的功能設(shè)計課程講授的各個環(huán)節(jié),包括課前預習、課上重難點講解、課上互動、課后作業(yè)及拓展學習。雨課堂由基于MS PowerPoint 的插件、雨課堂微信小程序和雨課堂網(wǎng)頁端三部分組成。
1.1.1 基于MS PowerPoint 的雨課堂插件
雨課堂插件中包含了服務(wù)器選擇,微信登錄雨課堂,開啟雨課堂授課,在課件中插入題目(單選題、多選題、填空題、主觀題等),上傳試卷、作業(yè)、課件、拓展資料等功能。雨課堂插件是教師進行課堂講授的唯一入口,在進行課堂講授時,首先使用微信登錄雨課堂,其次開啟雨課堂授課,這時將會出現(xiàn)二維碼供學生掃碼簽到。學生簽到后即可在手機微信端同步觀看PPT。當PPT 課件翻頁到題目時,教師可點擊“發(fā)送題目”按鈕,并設(shè)置完成時長。學生會在微信端接收到題目并作答提交。
1.1.2 雨課堂微信小程序
雨課堂微信小程序分為教師端和學生端。教師端的主要功能包括遙控器、課堂總結(jié)報告查看等。遙控器功能主要包括課堂隨機點名、開啟彈幕、將學生投稿投屏、查看學生標注為不懂的PPT頁等。課堂總結(jié)報告包括上課人數(shù)、課堂習題回答情況統(tǒng)計、彈幕內(nèi)容統(tǒng)計、投稿統(tǒng)計等。需要指出的是微信小程序中的課堂總結(jié)報告功能與雨課堂網(wǎng)頁端查看課堂總結(jié)報告功能基本一致,推薦在網(wǎng)頁端查看課堂總結(jié)報告。
雨課堂學生端微信小程序的主要功能包括學生上課簽到、答題、發(fā)彈幕、發(fā)投稿、標注不懂的PPT 等。在此模式下,手機被用來玩游戲、刷微博等的概率將大大降低。
1.1.3 雨課堂網(wǎng)頁端
雨課堂網(wǎng)頁端的網(wǎng)址是yuketang.cn。登錄后將顯示自己的授課班級,點擊相應(yīng)的班級后,將看見每次課堂的總結(jié)報告、提交的試卷及作業(yè)、上傳的預習課件或拓展學習資料、討論區(qū)等。推薦通過雨課堂網(wǎng)頁端查看課堂總結(jié)報告、批改課堂題目、批改試卷或是課后作業(yè)。
《C++語言程序設(shè)計》課程采用的教材是鄭莉、董淵編著的《C++程序設(shè)計基礎(chǔ)教程》,清華大學出版社出版。教學內(nèi)容共分為10 章,分別是緒論、簡單的C++程序設(shè)計、函數(shù)、類與對象、數(shù)據(jù)的共享與保護、C++的指針數(shù)組與結(jié)構(gòu)體、繼承與派生、多態(tài)性、流類庫與輸入輸出,以及異常處理。
緒論主要講授計算機程序設(shè)計語言的發(fā)展、面向?qū)ο蟮姆椒?、面向?qū)ο蟮能浖_發(fā)、信息的表示與存儲、程序開發(fā)的基本概念等,課堂上重點對計算機中浮點數(shù)的表示進行講解、答疑,并就面向?qū)ο蟮某绦蜷_發(fā)相較于面向過程的程序開發(fā)的優(yōu)越性進行分組討論。
C++簡單程序設(shè)計主要講授C++語言概述、基本數(shù)據(jù)類型和表達式、數(shù)據(jù)的輸入與輸出、算法的基本控制結(jié)構(gòu)、自定義數(shù)據(jù)類型等,課堂上重點對算法分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)進行講解、答疑,并就此進行課堂練習和討論。
函數(shù)主要講授函數(shù)的定義與使用、遞歸函數(shù)、內(nèi)聯(lián)函數(shù)、函數(shù)重載、C++系統(tǒng)函數(shù)等,課堂上重點對遞歸函數(shù)進行講解、答疑,并就此進行課堂練習和討論。
類與對象主要講授面向?qū)ο蟪绦蛟O(shè)計的基本特點、類和對象、構(gòu)造函數(shù)和析構(gòu)函數(shù)、類的組合等,課堂上重點對類定義與現(xiàn)實世界中客觀存在的對應(yīng)關(guān)系進行講解、對構(gòu)造函數(shù)和析構(gòu)函數(shù)的作用進行答疑,并要求學生編寫一個復數(shù)類進行練習和討論。
數(shù)據(jù)的共享與保護主要講授標識符的可見性、對象的生存期、類的靜態(tài)成員、類的友元、多文件結(jié)構(gòu)和編譯預處理命令等,課堂上重點對靜態(tài)變量的使用和多個頭文件互相包含的預處理命令進行講解、答疑,并要求學生使用靜態(tài)變量對函數(shù)調(diào)用次數(shù)進行計數(shù),以及編寫單件模式。
數(shù)組、指針和字符串主要講授數(shù)組、指針、動態(tài)內(nèi)存分配、用vector 創(chuàng)建數(shù)組對象、深復制與淺復制、字符串類等,課堂上重點對多維數(shù)組和指針數(shù)組進行講解、答疑,并要求學生動態(tài)生成三維數(shù)組并賦值。
繼承與派生主要講授類的繼承與派生、訪問控制、類型兼容規(guī)則、派生類的構(gòu)造和析構(gòu)函數(shù)、派生類成員的標識與訪問等,課堂上重點對訪問控制、二義性、虛基類、派生類的內(nèi)存布局進行講解、答疑,并就此進行練習和討論。
多態(tài)性主要講授多態(tài)性概述、運算符重載、虛函數(shù)、純虛函數(shù)與抽象類等,課堂上重點對運算符重載、派生類與基類指針轉(zhuǎn)型、虛函數(shù)的實現(xiàn)原理進行講解、答疑,并就此進行練習和討論。
流類庫與輸入輸出和異常處理主要講授I/O 流的概念與流類庫結(jié)構(gòu)、輸出流、輸入流、異常處理的基本思想、C++異常處理的實現(xiàn)等,課堂上重點對文件輸出類ofstream 和文件出入類ifstream 進行講解、答疑,并就此進行練習和討論。
課程的最后一次課是大翻轉(zhuǎn),課堂完全交給學生,重點對先前布置的大作業(yè)進行展示、討論,交流學習心得。
選取繼承與派生和多態(tài)性這兩個章節(jié)介紹如何使用雨課堂工具來完成課前預習、課上重點講解、課上練習與討論,以及課后作業(yè)布置與拓展學習。
在繼承與派生的講授中,課前通過雨課堂網(wǎng)頁端上傳預習課件、學習視頻和預習作業(yè)。學習視頻為鄭莉和李超在學堂在線的慕課《C++語言程序設(shè)計進階》第2 部分,預習作業(yè)包括繼承的訪問控制方式、繼承的構(gòu)造函數(shù)調(diào)用次序、繼承的析構(gòu)函數(shù)調(diào)用次序、二義性的解決方法、多繼承下派生類的內(nèi)存布局等,使用雨課堂布置預習作業(yè)的好處是可以設(shè)定提交作業(yè)時間,了解學生預習的情況,以便在課堂上針對預習作業(yè)中錯誤率較高的問題進行重點講解。課堂上對訪問控制、二義性、虛基類、派生類的內(nèi)存布局進行重點講解,并通過發(fā)送習題、彈幕、投稿等方式與學生互動,及時掌握學生接受情況。在隨后的課堂練習中,通過雨課堂發(fā)放試卷并設(shè)定時間,考查學生能否編制程序驗證派生類對象的成員內(nèi)存地址與理論分析保持一致。學生提交完試卷后,可隨機抽取一些答卷進行講解并討論。課后作業(yè)與拓展學習的布置方式與課前預習類似,重點是基類和派生類的定義、構(gòu)造過程和析構(gòu)過程、標準庫中繼承案例的學習等。
在多態(tài)性的講授中,與繼承與派生類似,課前通過雨課堂網(wǎng)頁端上傳預習課件、學習視頻和預習作業(yè),學習視頻為鄭莉和李超在學堂在線的慕課《C++語言程序設(shè)計進階》第3 部分,預習作業(yè)包括運算符的重載方式、虛函數(shù)的定義與調(diào)用、虛函數(shù)實現(xiàn)原理、帶有虛函數(shù)的派生類對象布局等。課堂上對運算符重載、派生類與基類指針轉(zhuǎn)型、虛函數(shù)的實現(xiàn)原理進行重點講解,并通過發(fā)送習題、彈幕、投稿等方式與學生互動,及時掌握學生接受情況。運行提前編制的示例代碼,向?qū)W生演示帶有虛函數(shù)的派生類對象的內(nèi)存布局情況。在隨后的課堂練習中,通過雨課堂發(fā)放試卷并設(shè)定時間,考查學生能否編制觀察家模式(Observer)。觀察家模式是使用虛函數(shù)實現(xiàn)多態(tài)性的一個典型案例。學生提交完試卷后,可隨機抽取一些答卷進行講解并討論。課后作業(yè)與拓展學習的布置方式與課前預習類似,重點是運算符重載、使用虛函數(shù)實現(xiàn)多態(tài)性、裝飾模式、橋接模式和工廠模式的學習等。
線上線下混合式教學的目的是實現(xiàn)翻轉(zhuǎn)課堂,改變了以往教師滿堂灌、課堂氣氛沉悶、互動少的情況,讓學生真正成為課堂的主人。實踐證明這對提高學生學習的積極性和效率,促進知識的吸收起到了關(guān)鍵作用。但是傳統(tǒng)的線上線下混合式教學實踐存在對課前預習、課后拓展學習情況無法掌握,課上對知識點學生掌握情況不了解,課上答題無法做到全覆蓋,玩手機游戲現(xiàn)象無法消除等問題,因此引入先進的信息工具平臺就顯得尤為重要。本文介紹了基于雨課堂的《C++語言程序設(shè)計》課程線上線下混合式教學實踐案例,通過雨課堂,教師可以推送課前預習課件和課后拓展資料,通過習題檢查學生課前預習情況和課后拓展學習情況;在課堂上,教師可以打開彈幕、接收學生投稿,以便及時了解重點知識點的學生接受情況,還可以現(xiàn)場發(fā)布題目,學生通過手機端參與,老師可全面了解學生回答問題的情況。調(diào)查結(jié)果顯示學生對基于雨課堂的線上線下混合式教學評價良好,并認為該工具能夠幫助自己有效完成課程的學習。