关于C语言程序设计项目化教学的能力培养研究
2021-07-12肖也
肖 也
(广东工业大学材料科学与能源学院,广东 广州510006)
0 引言
C语言是一门面向过程的程序语言[1],其具有直接与硬件访问的特性,在驱动软件、嵌入式开发、物联网芯片及人工智能领域具有独一无二的优势,是计算机硬件开发、系统软件编写及应用软件研发的最重要的基础工具。
1 C语言课堂程序设计的教学问题分析
如何让大部分学生在一学期的课程设置中掌握好C语言的语法结构、常见算法、数据结构、项目模块应用本身是一件有挑战性的实践活动。
首先,C语言可以直接操纵硬件的特性,在学习的过程中需要提前掌握一些计算机硬件底层的相关知识,而这部分基础知识往往在学生兴趣最浓厚的课程前期,较为抽象、枯燥的学习过程让部分学生产生畏惧心理。
其次,因为C语言简洁高效及语义复用的历史问题让不少初学者花了大量的时间去掌握其基本语法结构,从而导致课堂教学效果不佳。
最后,与部分后置专业课程的联系较弱,如单片机、嵌入式开发等,存在着学生需要回头“补课”的现象,降低专业培养方案的系统性与连贯性。
2 项目化教学设计的初衷与理念
针对相关教学问题,本教学设计从O-AMAS[2-3]有效教学方法的理念出发,从教学目标、迅速激活、多元学习、有效测评、简要总结等5个环节进行项目化教学设计。
2.1 教学目标
在每个项目开始阶段给学生提供前置知识点阅读材料,说明完成项目过程后需要掌握并熟练的知识体系与操作技能,将其具体化为学生能够理解的教学目标。
2.2 迅速激活
在每个课程体系的初始学习阶段都是学生学习兴趣最为浓厚的阶段。因此,在项目化教学设计的前期,通过完成体项目的实机演示,迅速激活,引发学生主动学习的兴趣,充分调动学生学习的积极性与创造性。
2.3 多元学习
当前时代背景下,学生终身学习、多元学习比简单的课堂教学更为重要。教学方法不能局限于课堂PPT、板书、多媒体设备。在多元互动平台学习里,可以方便进行实时反馈,在课堂上解决学生存在的共性问题,在课堂后解决学生的个性问题,做到基础教学与深入学习的结合。
2.4 有效评测
在教学方法中,有效并及时的评测考核方法是良好的“正负反馈”机制。教师可以通过反馈信息,适当优化教学进度与深度。在项目化设计的过程中,教师通过学习小组定制不同的项目内容,或者提供具有开放性、创造性的模板项目,引导学习小组的主动性与原创性。
2.5 简要总结
总结是回顾知识体系的重要手段。在掌握较为枯燥的知识体系后,通过课堂实践小项目,简单迅速地回顾当前阶段需要掌握的知识体系,通过该环节可以巩固学习过程中产生的大量零碎的知识点,提炼出每个阶段的知识框架与前后阶段框架的逻辑联系。
3 课程改革的具体措施
根据教学实践中的进度安排,穿插“四大四小”项目教学内容。小项目属于课堂示范项目,可以在15 min之内完成,系统化掌握前后联系知识点。
3.1 课堂项目设置及穿插位置
第一个课堂项目设置在刚接触IDE平台,直接利用“stdlib.h”系统库函数实现简单的窗口按钮操作,点击调用系统软件、用户软件等,掌握操作系统提供的若干应用软件接口。
第二个课堂项目设置在讲授“操作符与语句”等内容过程中,通过简单的示范项目诸如实现读数的进制转化及显示项目,基于位运算的加法器项目,让学生掌握相关操作系统与底层硬件的相关知识。
第三个课堂项目设置在讲授“函数”等知识体系,实现“cmd”命令行向图形化编程的迁移,让学生掌握函数封装的实际意义。
第四个课堂项目设置在讲授“指针”等重点内容上,通过若干示范项目,诸如对给定数据块实现排序查找,非排序查找以及进阶型排序备份表单等,让学生掌握指针变量具体的应用方式,而不是拘泥于各类复杂的指针类型操作。
3.2 上机项目设置
第一个大项目为C语言经典游戏“打砖块”[4],该项目需实现键盘操作小球击打砖块并消除砖块,完成胜利及失败判断。项目需要掌握的能力体系有图形化界面实现、二维数组的初始化与砖块绘制的联系、简单的物理碰撞机制的计算机数学模型、各类功能函数的封装及相互调用等知识点。重点考查学生在游戏项目设计过程中的逻辑思维能力,完成触发、判断函数的编写,以及简单的游戏项目胜利/失败退出机制。
第二个大项目为“音乐电子相册”[5],实现电子相册左右按钮点击切换预览视图,以及对应放大视图等操作。需要学生掌握的能力体系有图形化界面绘制、文件读取、贴图以及按钮绘制函数等。重点考察鼠标进入按钮的触发判断机制函数编码及调用时机;以及左右按钮点击后,图片上下切换在数据操作背后的逻辑关系,同时鼓励学生分为小组完成个性化的音乐电子相册。
第三个大项目为windows经典游戏“扫雷”[6]。在掌握了前两个项目的图形化界面绘制及鼠标事件操作的基础上,增加前后端项目设计结合的能力培养,以及相关“雷区”数据加密解决算法的实现。在该项目中,“cmd”命令行窗口作为扫雷棋盘的雷区数组及“后端”数据平台,观察二维数组中雷区数据的变化,实现鼠标操作中左键解密空白区域,右键设置雷区标记等。在进阶项目操作中,实现点击空白区域展开全部数字标记的功能,该项目可以提高学生的深度学习及思考能力,让学生掌握基本的前端后端编码概念。
第四个大项目为C语言经典的图书信息管理模块[7],该项目的衍生项目有学生信息管理模块、人事系统管理模块等。作为最后一个上机模块,需要完成图书信息的新增录入、查询、借阅、排序、归还等功能。通过图书信息掌握结构体及返回结构体函数的复合知识体系,并掌握动态链表的增、删、查、改背后的逻辑操作框架。进阶项目完善与文件联系起来,实现日志文件的保存与读写。该项目的逻辑操作性很强,对链表等数据结构掌握程度的考察生动且深入。
4 结语
基于项目化的教学,并结合O-AMAS有效教学理念,使得传统的较为枯燥的课堂教学向积极的、实时反馈的项目化过程教学及差异化多元结果反馈转换,可极大提高学生的学习兴趣与教师的课内课后教学水平。同时该教学改革理念能够激发学生的创造性思维及逻辑思维能力培养,对C语言教学的改革具有较强的推动作用。