1. 引言
为适应新的科技革命、产业变革和经济发展,国务院提出了“新工科”概念 [1] 。2017年2月以来,教育部积极推进新工科建设,全力探索形成领跑全球工程教育的中国模式、中国经验,助力高等教育强国建设。
随着“新工科”概念的提出,利用新兴的网络化、虚拟化教学手段,改变传统C语言程序设计课程教学变得至关重要,尤其对于非计算机专业以及高级编程语言的初学者。首先,以CBE (Competence-based Education,能力本位教育) [2] 为导向的教育理念逐步转向成果导向OBE (Outcome-based Education,成果导向教育) [3] ;其次,教学模式逐渐从传统教师主导讲授向线上线下混合教学模式 [4] 发展;此外,特殊背景下“互联网+教育”有效突破时空局限,依托在线教育教学平台,利用人工智能、5G等现代信息技术助力在线教育,逐步建立了教、学、考、管、评一体化智能决策系统,形成课堂内外联动、虚实空间融合、线上线下教学融合的教育教学新模式。
C语言程序设计经历了从侧重课堂理论的案例教学到以实践为先导的项目教学的发展,而二者彼此独立又相互补充,将其综合可实现理论与实践能力的双重提升。互联网的发展与普及,大型开放式网络课程(Massive Open Online Courses, MOOC)的大规模兴起极大丰富了学生自我学习与提升的途径;“翻转课堂”(flipped classroom) [5] 作为信息网络与AI赋能教育行业的产物,以“知识点教学法”实现在短时间内的知识讲授与传播,成为学生课前自学与课后巩固的重要内容。然而,任何教学模式都离不开学生自主学习能力,没有了老师的束缚,离开了四十五分钟为时间单位的课堂,学生需要确立自身学习目标、选择学习策略、监控学习成果。“以学生为中心”的课堂需要教师有效地组织,充分利用学生之间的学习资源,营造互帮互助共同受益的学习氛围。当前教育中强调增强课堂的趣味性,然而课堂教学的关键在于保证教学质量,而不仅仅让课堂热闹有趣。
沉浸式教学 [6] 起源于20世纪60年代的加拿大,是一种针对第二语言的语言教学模式,通过在教学中使用目的语进行教学的全封闭语言教学模式,可实现高效、快速的第二语言环境感知,潜移默化地开发第二语言的思维方式与认知方法,已广泛用于汉语、英语、法语等语言类教学。
C语言作为一种人与计算机沟通的高级语言,具有人类语言的特性。利用沉浸式教学,可为学生营造纯粹的人机交流环境,运用多场景进行沉浸式教学,让学生实现C语言认知和内化,形成计算机思维,全面提高C语言综合应用能力。
本论文旨在通过构建沉浸式C语言程序设计教学体系、设计沉浸式C语言课程考核模式、推进沉浸式C语言程序设计第二课堂对C语言沉浸式教学方法进行研究与实践。“新工科”在科技、产业和经济上的推动作用,不仅对C语言程序设计沉浸式教学模式的研究与实践提供了坚实的保障,也提出了更高要求。
2. C语言程序设计课程的教学现状与分析
2.1. C语言的特点
C语言集高级语言和低级语言的优点于一身,是一种结构化的程序设计语言。它把高级语言的基本结构与低级语言的实用性结合起来,既可以如汇编语言一样对位、字节和地址进行操作,也具有丰富的运算符和数据结构,可以用顺序、选择、循环三种基本的逻辑结构,以函数为模块,实现程序的模块化设计,符合现代编程风格。概括来讲,C语言具有简单、丰富、逻辑性强、自由度大、可移植性好、执行效率高等特点。
1) 简单。C语言一共只有37个关键字、5类语句、9种控制语句,书写形式自由,输入程序较短。
2) 丰富。C语言运算符丰富、数据类型丰富、库函数丰富。C语言把控制语句和输入输出函数除外的几乎所有基本操作都作为运算符处理,因此,C语言运算符极其丰富;其次,C语言的数据类型丰富,既包括如整型、实型、字符型等基本类型以及由此组合的构造类型,还包括指针类型、空值型和自定义类型,使用灵活、多样,可用来实现不同复杂的数据结构;此外,C语言具备丰富的库函数,如标准库、数学库、图形库等,方便程序员进行调用及开发。
3) 逻辑性强。C语言具有结构化的控制语句,首先自顶向下进行全局、整体设计,然后将每个问题逐步细化,通过模块化设计,利用函数承担功能模块单位,最终将每个模块用计算机语言表示并组合,进行“结构化编码”。整体过程结构清晰、易懂,利用分而治之、各个击破的策略实现复杂问题的求解,逻辑性强。
4) 自由度大。C语言的语法限制相对于其他高级语言相比较为宽松,具有较大的程序设计自由度,如整型与字符型之间的ASCII码转换与互通,数组下标越界检查、内存溢出、野指针等,C语言都不会进行检查。
5) 可移植性好。C语言编译系统简洁,而且在新系统上运行时通常无需修改源代码而可直接编译标准链接库中的大部分功能。因此,C语言编写的程序可移植性好。
6) 执行效率高。C语言允许直接访问物理地址,且编译生成的目标代码代码质量高,被称为“最接近汇编语言的高级语言”。
多年来,计算机高级编程语言层出不穷,如C++、Java、C#、Python等,然而C语言在Tiobe官网每年公布的编程语言排行榜上稳居前三,足以显示C语言的基础性和广泛认可度,也对高校高质量教授C语言程序设计课程提出了更高的要求。
2.2. C语言程序设计教学开展及存在的问题
C语言程序设计是高校计算机高级语言程序设计类基础课程,面向学校多个非计算机专业开设必修或选修课程,在教学方法、模式和教学实践中存在许多普遍的问题和困难,主要表现如下:
1) 教学方法和教学模式单一,学生参与感差,学习热情不足。传统的C语言程序设计教学多采用“计算机 + 投影”进行理论知识的讲解和分析,基础知识与语法点零碎,问题描述抽象。无任何编程经验的学生通常无法理解问题本质,被动接受和努力记忆的过程导致学生参与感差,学习热情不足。
2) 考核模式陈旧,实践及动手能力考查深度不足。目前,C语言程序设计课程的考核模式仍是“闭卷考试 + 实习报告”,利用闭卷考查学生理论知识的记忆、理解和辨析能力,通过课程设计实习报告了解学生的动手能力,固化的知识考点与“增删改查”功能模块使得学生缺乏对实际问题的应激思考与处理能力,无法真正考查其知识理解的深度和实践应用的能力。
3) 应用实践与创新平台不够,后期驱动不足。C语言作为一种高级程序设计语言,其重在用。然而,当前应用实践和创新平台受限,课程考核的结束通常意味着课程学习的终结,后期驱动严重不足。。
3. C语言程序设计沉浸式教学模式的研究与实践
基于“新工科”的背景推动与保障,从教学体系、考核模式和第二课堂等多方面来研究C语言程序设计的沉浸式教学,引入新的教学理念和教学方法,激发学生学习兴趣,提高学生解决问题的能力。
3.1. 沉浸式C语言程序设计教学需解决的问题
沉浸式教学模式目前多应用于社交语言的学习和教授,通过营造目的语的完全语言环境,让学习者浸泡在纯目的语中,不断接受各种资讯、信息、知识等的刺激,反复锤炼语言技能,形成思维习惯,进行语言表达,最终达到学习效果。对于人与计算机交流的高级程序语言——C语言的教学,沉浸式教学需解决如下问题:
1) 如何营造C语言的“沉浸感”?
所谓“沉浸式”体验是人们在进行活动时完全投入情景当中,注意力专注,过滤掉所有不相关的知觉,即进入沉浸状态。营造C语言程序设计课程的沉浸感,目的是让课堂里的学生沉浸于C语言的故事性情节,并于其中凸显自我,如置身3D游戏场景中,能够让参与者全情投入、全程处于兴奋状态、积极自主。然而,难点问题就是沉浸式教学环境的模拟制作和氛围营造。
2) C语言沉浸式课堂中,教师如何融入?
从教学层面来看,课堂教学离不开教师,需要教师的组织安排、教师的讲解互动以及教师的机动把控,而概念性“沉浸式教学”过程中,完全由学生作为课堂和学习的主人自由发挥,教师如何融入、引导、参与和释疑解惑是一个重要问题。设计制作沉浸式教学体系是教师的职责,但是如何有效指导与参与其中也是当前沉浸式教育面临的难题。
3) 沉浸式教学模式的教材奇缺
C语言程序设计课程的教材丰富,参考书及实验案例库等相关资料非常充足。然而,市面上广泛流行的计算机语言类参考书多以理论介绍为主,小段代码穿插实践练习为辅组成。如何选择适合沉浸式教学模式的教材及案例库,是取得高质量教学效果的关键,也是沉浸式教学研究需要解决的问题。
4) 如何建立C语言科学的沉浸式教学体系?
相对于成熟的社交语言(如英语)沉浸式教学,C语言作为一种计算机编程语言,迫切需要建立科学的“沉浸式”教学体系,包括沉浸式教学理论体系、沉浸式教学方法、沉浸式学习策略、沉浸式考核体系、沉浸式管理方案、沉浸式评教体系等。
3.2. C语言程序设计沉浸式教学设计思路
针对当前C语言程序设计课程自身特点和我校非计算机专业的具体学情,突破传统C语言教学方法的局限,突出沉浸式教学理念。
1) 沉浸式教学场景设定
走访和调研我校非计算机专业,包括数理、资源、工程、地质等,了解不同专业的专业特色,征集各专业相关的兴趣、热点及前沿课题作为沉浸式教学场景的设定素材。
2) 沉浸式教学体系的设计与实施
利用多媒体技术,借助5G以及“大数据 + AI”技术支持,融入计算机基础知识与C语言语法常识,构建C语言程序设计的人机交流环境。通过进入设定的教学场景,让非计算机专业学生从计算机硬件的逐零件视觉感性认识到计算机处理元器件、处理单元等抽象目标的模拟理解,过渡到C语言程序控制计算机硬件实现数据计算与分析的关联认知,通过C语言基本语法规则与函数定义等理论学习,转场到其自身专业场景的探索性实践,从而构建C语言程序设计的沉浸式理论教学内容与实践操作内容。

Table 1. Examples of the C language programming immersive scenes
表1. C语言程序设计沉浸式场景示例
表1是沉浸式场景示例,结合不同专业背景,运用新兴的教学手段以及先进的计算机技术研究制作沉浸式教学方案,增强学生参与感,发挥教师的引导作用,实现专业故事情节的实体化。
3) 沉浸式考核
运用大数据建模与仿真技术,设计专业实景问题在虚拟教学空间的映射和镜像,使考生处于沉浸式实景问题中,通过利用C语言编程与计算机对话、进行计算机操控,实现实景问题的分析与解决,达到以虚控实、虚以实用的考核目的,最终完成C语言知识从识别认知到内化吸收的转变过程。
4) 第二课堂——沉浸式学习的后期驱动
学以致用。为提升学生实践应用能力,强化拓展学科知识,增强应用创新能力,提高主动学习意识,以“学科竞赛 + 专业证书”为载体,推进C语言程序设计沉浸式第二课堂,从“学习–培优–集训–参赛”模式中进行学习、实践与提高,通过“全国计算机等级考试”和“计算机技术与软件技术资格考试”进行辅助测评,实现后期驱动。
3.3. 沉浸式教学特色
针对传统C语言程序设计采用统一的教学大纲和单一的课堂讲授方式容易导致课堂枯燥乏味、学生参与度不强,非计算机专业学生面对本专业编程问题无从下手等问题,研究探索C语言程序设计沉浸式教学方法。充分结合我校实际情况和专业特色,以学生发展特点和规律为指导,构建沉浸式教学体系、沉浸式考核模式以及沉浸式第二课堂,让学生充分、全情参与教学过程,翻转课堂角色和主动权,提升学生兴趣和动手能力。
1) “教”“学”模式的变化。学生从“知识的被动接受者”向“知识的主动探索者”转变,教师从“课堂的主演”向“课堂的导演”与“线索”转变;学生通过参与问题、分析问题、解决问题体会到知识探索的快乐,培养自主、自动、自立的学习态度,训练提高其分析问题、应用知识的能力,激发学生在各自专业领域利用C语言进行创新的能力。
2) 考核评价体系的多元化。丰富完善现有以试卷形式为主的C语言程序设计课程的考核方式,根据沉浸式教学体系探索并尝试设计多维度沉浸式考核体系,包含学生的基础知识、识别理解、内化吸收以及应用拓展等多方位能力素质。
3) 第二课堂的后驱动力。在沉浸式教学过程中引入创新实践问题,通过培养学生“认识问题–抽象算法–建立模型–编程实现–程序优化”的人机交流思维模式,训练学生应对问题时的计算思维与编程思维,以学科竞赛及专业证书作为能力拓展与素质提升的第二课堂。
4. 结束语
C语言程序设计沉浸式教学可以缩短非专业学生的认知过程,提高学生的参与度与实践能力,增强学生在学科竞赛、专业证书考取以及实际工作中的竞争力。本论文进行新工科背景下C语言程序设计沉浸式教学方法的研究与实践,旨在利用新兴网络化、虚拟化教学手段,通过教师的设计与组织,构建C语言程序设计沉浸式教学体系,设计沉浸式考核模式,推进沉浸式第二课堂,使学生处于沉浸式C语言程序设计学习环境,从认知到内化再到举一反三,实现技能拓展。此外,沉浸式教学模式还可推广到其他相关通识课教育必修课或者学科基础课程的教学中,提升课程的趣味性与学生参与度。
基金项目
中国地质大学(武汉) 2021年度本科教学工程项目,项目编号:2021G33,项目名称:地大–华为“智能基座”产教融合协同育人体系建设。