基于项目分解的任务驱动式“C#程序设计”课程教学方法探析
2022-09-06刘晨
刘 晨
(喀什大学计算机科学与技术学院,新疆 喀什 844000)
0 引言
C#程序设计语言是微软公司开发的一个面向对象的编程语言.很多本科院校都开设了C#程序设计这门课程.根据教育部《关于深化本科教育教学改革全面提高人才培养质量的意见》(教高[2019]6 号)[1]等文件精神,需要坚持“以学生为中心”“产出导向”的教学理念[2-3].但是在实际教学过程中,“C#程序设计”课程传统的教学模式是:语句语法格式,语句的功能介绍,具体实例解释最后是上机实践.在“C#程序设计”课程传统的教学方法中,是以教师为主体不是以学生为中心.学生学习这门课程结束后,只知道一些语法概念,并不清楚这门程序设计课程具体能做什么,实际编程能力也很弱,不足以胜任企事业单位工作要求.面对上述问题,本文以实际指导学生参加中国大学生设计大赛新疆区赛区获奖作品《滤镜算法研究与实现》作为被选择项目,提出一种基于项目分解的任务驱动式“C#程序设计”课程教学方法,从而提升学生发现问题、分析问题并最终解决问题的能力,增强学生实际的编程水平.
1 任务驱动的“C#程序设计”课程教学的实施
基于建构主义学习理论的任务驱动教学方法是指任课教师将教学内容分解设计成多个任务,在满足正常教学需要的前提下引导学生积极思考探索,掌握课程的知识点,培养发现问题、解决问题的能力,从而完成本门课程的学习[4-7].
1.1 实施方案
任务驱动教学方式需要教师根据学科特点和教学内容设计教学项目,以项目为基础,将项目分解,将教学内容贯穿到整个项目中去.这样既能满足以学生为中心、教师为主导的教学方式,又能体现“产出导向”的OBE 理念.任课教师需要设计合理的教学方案,需要选择合适的项目,以任务的形式让学生掌握相关知识点,并最终能独立或者协作完成整个项目.基于项目分解的任务驱动式教学,使得学生不再以简单的方式学习C#程序语法,而着重于使学生提高对问题的分析判断和解决问题能力,提高学生的实际项目开发能力.
基于项目分解的任务驱动式课程教学中项目的选择至关重要.教师要仔细选择教学项目,对项目进行解读,将项目分解成若干个子系统[8-9],并对每一个子系统涉及到的课程知识点归纳分析,帮助学生建立课程学习的知识点图谱.如以本人指导学生参加中国大学生设计大赛新疆区赛区获奖作品《滤镜算法研究与实现》作为选择项目,此项目基本涵盖了“C#程序设计”课程的主要知识点,有集成开发环境介绍、语句、表达式、运算符、选择语句、循环语句、数组、类、WinForm、文件操作等,在满足基本教学基础上,结合学生在大一或大二所学习的C 语言知识,引入外部程序,将前面学习课程联系起来,从而满足各个层级水平学生的学习需要.
1.2 滤镜算法
基于项目分解的任务驱动式课程教学中,难点在于项目中的滤镜算法[10].学生以前没有接触过滤镜算法,课堂教学中在不能占用正常授课任务完成的时间情况下,可以简单介绍一些滤镜算法原理,以任务的形式让学生在课下深入学习基本的算法原理.图像滤镜简单来说就是使用程序将图像处理成特定效果的过程.本项目滤镜算法有灰度滤镜、黑白滤镜、反向滤镜、去色滤镜、单分量滤镜(红色分量、绿色分量、蓝色分量滤镜)、高斯模糊滤镜、熔铸滤镜、怀旧滤镜、径向模糊滤镜、连环画滤镜、冰冻滤镜、浮雕滤镜、径向旋转滤镜.上述算法并没有全部罗列所有用到的滤镜算法,只说明了高斯模糊滤镜算法原理步骤,高斯模糊滤镜算法的步骤如下:
(1)获得高斯核.高斯核函数可以表示为
程序如图1 所示,程序中dRadius 是高斯核半径,sigmaS是参数σ.
图1 高斯核获取
(2)窗口和高斯核进行加权计算.程序如图2所示,width 是图像宽度,height 是图像高度,sw、zx和sum是变量,D是窗口半径.
图2 高斯模糊
1.3 项目分解
传统的“C#程序设计”课程的教学步骤:首先介绍开发环境;然后进行C#基本语法包括变量表达式运算符、C#选择循环结构、数组、面向对象、常用类、WinForm 窗体和C#文件操作等讲解.而新的教学方法是任课教师在满足基本课堂教学要求的前提条件下将项目分解,将知识点贯穿到各个子任务中去,让学生通过任务学习的方式最终掌握所学习的知识点.
基于项目分解的任务驱动式“C#程序设计”课程教学方法中,以本人实际指导学生参加中国大学生设计大赛新疆区赛区获奖作品《滤镜算法研究与实现》作为选择项目.首先在课堂教学开始中引出此项目,将项目实现出来,这里图形界面就需要用到C#程序设计中WinForm 界面设计教程.在后续课堂教学中会详细讲解该部分内容.那么在第一节课中以任务布置的形式,让学生在课程的结束后能编程完成滤镜算法的实现.图3是滤镜整体窗口,图4是所涉及到的各种滤镜算法.
图3 滤镜整体窗口
图4 各种滤镜算法窗口
图3、4 涉及到C#WinForm 窗体多种知识点.ToolStripMenuItem 菜单栏控件命名为滤镜Tool⁃StripMenuItem,有二级菜单栏控件灰度滤镜Tool⁃StripMenuItem、径向模糊旋转ToolStripMenuItem等.每一个二级菜单栏控件有对应设置的事件,并有对应的事件处理.如灰度滤镜二级菜单栏有灰度滤镜ToolStripMenuItem_Click 事件,并有对应事件的处理方法private void 灰度滤镜ToolStripMenu⁃Item_Click(object sender,EventArgs e).每一个二级菜单栏会对应相应的滤镜算法处理界面.以高斯模糊滤镜为例,其实现处理程序为图5 所示,运行结果如图6所示.
图5 高斯模糊滤镜处理程序
图6 高斯模糊滤镜界面
在高斯模糊滤镜中涉及到WinForm 中Label控件、TextBox 控件、Button 控件和PictureBox 控件以及Button 控件中的Click 事件及其相应的实践处理程序.高斯模糊滤镜运行实例如图7 所示(图片来源于百度图片).
图7 高斯模糊滤镜
在图6、7 中,涉及到文件打开和保存操作.文件打开代码如图8所示.
图8 文件打开操作
定义类并使用滤镜算法方法所使用的代码如图9所示.
图9 调用滤镜算法
上述过程描述中基本上将“C#程序设计”课程大部分概念分解到项目中去,使得学生在学习基本语法的同时,将各个子项目在学习过程中自主编程实现,或者部分学习能力强的学生可以自行学习课程,并完成各个子项目的编程实现.“C#程序设计”课程教学将学生所需要掌握的知识点融入到了项目中.如C#开发的集成环境,只要编写程序必然要用到,如图1—9 所示.C#变量、语句、表达式、运算符等基本语法如图1、2、5、8、9 所示,循坏语句和选择语句如图2所示,数组如图1 所示.类的相关概念如图5、9所示,面向对象高级语法如图6、7 所示,C#Win⁃Form 窗体应用程序如图3,4 所示,C#文件操作如图8 所示.最后在演示一个径向模糊旋转滤镜算法效果,如图10 所示(上述图片均来自百度图片).其他滤镜算法效果不再演示.
图10 径向模糊旋转滤镜
2 结论
本文提出一种基于项目分解的任务驱动式“C#程序设计”课程教学方法,以本人实际指导学生参加中国大学生设计大赛新疆区赛区获奖作品《滤镜算法研究与实现》作为选择项目.将“C#程序设计”课程知识点分解到各个子项目中去,以任务的形式让学生编程实现,提高了学生自主学习兴趣,进一步增加了学生的就业竞争力.这种教学方式不仅满足传统的教学形式,更需要任课教师更多的专业知识、丰富的科研经验和较高的软件开发水平.