摘要:“C#程序设计基础”课程是高等院校计算机及相关专业的一门专业必修课程,其实践教学环节不仅帮助学生理解和巩固课程内容,而且锻炼学生程序设计的技能、培养软件开发的习惯规范,使学生掌握程序设计的思想和技能。本文针对“C#程序设计基础”课程实践教学环节中存在的问题,设计和实现了由验证性实验、训练性实验到设计性实验、创造性实验的分层次的实践教学模式。这一教学模式由简单到复杂、由单一到综合,逐步培养学生的编程能力和技巧,在教学过程中也取得了良好的效果。
关键词:C#程序设计;实践教学;分层次
引言
“C#程序设计基础”是高等院校计算机及相关专业的一门专业必修课程,是软件开发课程体系中一门重要的基础课。通过该课程的学习,学生能够使用C#语言和.NET开发平台进行应用程序开发,了解.NET开发平台和C#语言的基本架构;掌握C#语法、数据类型、流程控制语句;掌握面向对象的编程方法;熟练应用C#进行控制台应用程序开发和Windows应用程序开发;掌握C#对XML文档、文件和文件夹进行操作的常用方法;掌握C#应用程序的打包部署。
“C#程序设计基础”的课程实践不仅仅帮助学生理解和巩固课程内容,更重要的是需要进一步锻炼学生程序设计的技能和培养软件开发的习惯规范,最终使学生掌握程序设计的思想和技能、具备开发简单应用程序的能力。
1“C#程序设计基础”实践教学中存在的问题
在大多数院校,“C#程序设计基础”实践教学都包含两个环节。一个是实验教学,一个是课程设计。按照其教学大纲和实验大纲安排,“C#程序设计基础”课程一般在大学期间的第二学期或者第三学期开设,教学学时72学时,理论教学48学时,实验教学24学时,学期末学生自由分配时间完成课程设计。
目前,在实践教学的整个过程中存在以下几个问题。
(1)各个实验项目之间缺乏关联性。每一个实验项目对应一定的理论知识,实验项目之间不相关,学生做完做不完都不会影响下次实验,导致很多学生对一些实验不够重视,主动性不高。有一些学生在个别实验项目没有做完的情况下,没有主动的在课下完成,在下次实验课上也没有主动积极的补做,时间久了,越积越多,到后期综合性实验或者课程设计时无从下手,什么都不会。最终导致这门课程学得不好,也必然影响后续课程的学习。“C#程序设计基础”课程是编程基础,是许多课程的前导课程,也是计算机等相关专业培养目标中的重要基础课程,我们应该引导学生重视,也有责任教好,让学生学好。
(2)实验项目的难易程度没有明显的层次性。每次实验项目的难易程度只与理论知识的难易程度有关,学生可能在学期末做的一些实验比学期中间做的实验还要简单。实验项目的设置一定要有一定适应性和创新性,实验内容太难会消弱学生的学习积极性和兴趣,太简单也会削弱学生学习的动力,不同的学生学习能力不同、适应程度不同。教师在设置实验项目时,首先要顾全大局,也要照顾到个别人的差异性,设置的实验内容一方面要保证多数学生的能力,也要有一些附加项目或者扩展内容,用以满足个别程度好的学生的需求。随着学生对程序设计语言的认识和开发环境的熟悉,实验内容的设置也应该逐步增大难度。
(3)实验项目内容设置不够合理。实验不仅仅是理论知识巩固,更是知识总结和能力的提高。实验内容的设置不能仅仅考虑理论知识体现,更应考虑如何让学生在理解理论的同时和实际应用相结合,培养学生把理论应用于实际的主动性。目前,大多数学生学习态度是被动的,不愿意去多想,不愿意去扩展。教师在设计实验项目时要引导他们去联系实际,去扩展内容。这样持续下去,学生才会在掌握理论知识的同时,和实际应用相结合,掌握“C#程序设计基础”编程的精髓。
针对以上存在的问题,在“C#程序设计基础”实践教学中我们探索出了一种分层次的实践教学模式。我们将整个实践教学环节分成四个层次:验证性实验、训练性实验、设计性实验、创造性实验。我们将“C#程序设计基础”的实验项目划分层次,每个层次阶段完成一定的知识目标和理论目标。
2、分层次的“C#程序设计基础”实践教学模式
“C#程序设计基础”实践教学共计24学时,我们分为12个实验项目,分别为:认识C#、运算符与表达式的使用、选择语句的使用、循环语句的使用、数组的使用、面向对象的程序设计1、面向对象的程序设计2、继承和接口技术的使用、数据操作、Windows基本控件的使用、Windows窗体应用程序设计、异常处理及程序部署。不同实验项目划分到不同的层次,具体实施如下。
2.1验证性实验
验证性实验是“C#程序设计基础”实践教学的初级阶段,是对教材的理论知识点的简单实现。在学生刚接触这门课程时,对课程的基本知识和软件开发环境的基本使用方法需要学生有个入门的过程。这个过程就需要验证性实验来完成。验证性实验是老师指定问题、给出一定的解决思路和步骤,学生在实验课上逐步实现问题的解决,重点是验证解题思路和步骤的正确性,从而帮助学生理解理论知识、熟悉开发环境。学生刚接触编程课程,对语法、编程软件不了解,如果刚开始学难度太大,学生的积极性会有所削弱。这时候应该让学生从简单的验证性实验项目入手,让他们在简单的操作中掌握语法知识和编程工具的使用,同时也激发他们的兴趣。当然也存在个别学生在开课之前已经自学了部分内容或者对开发环境有较多了解和使用,我们在设置实验项目时一定要有附加内容或者自选内容。保证大多数学生能够完成基本实验的基础上,对于进度快的学生可以通过自选内容或者附加内容来学习更多的内容。实验项目中认识C#、运算符与表达式的使用、选择语句的使用、循环语句的使用、数组的使用属于验证性实验环节,这一环节理论内容多,学生必须熟练掌握。
2.2训练性实验
训练性实验是在学生有了一定的理论知识和基本的操作技能后,指导老师在每次实验中给定一定量的一定难度的问题,由学生自行设计步骤和思路解决问题。这一环节侧重训练,一定让学生在做实验过程中形成一些定式,比如正确、合理、规范的命名,正确、合理、规范的书写,正确、合理、规范的调试,什么情况下用选择语句,用哪种选择语句,什么情况下用循环语句,用哪种循环语句等。这些是学生必须掌握的编程基础,学生应该在后期遇到类似问题时不假思索的写出来。当然,这些问题要有一定的代表性,也要有数量上的限制,确保多数学生能基本完成。这一环节重在训练学生的解题思路和熟练程度,让学生在脑海里存储一定量的解决办法,为后期的设计、创造打基础。面向对象的程序设计1、面向对象的程序设计2、继承和接口技术的使用、数据操作等这几个实验项目中要以训练性实验为主。
2.3设计性实验
设计性实验是在课程学习后期,学生已经有了一定的知识积累和编程能力,指导老师在每次试验中要给出一个实际应用的问题,由学生自行设计解决方案和步骤。在这一环节已经在考查学生前期理论和实验掌握情况,前期实验做得好的,在这一环节就会有多种解决问题的想法,并愿意主动地去解决问题,并能够思考出新的问题,来完善自己的答案。这一实验环节的中可以增加讨论和展示内容,来提高学生的积极性。在实验过程中允许学生讨论,实验项目完成后抽取个别好的学生展示,也可以让学生自愿报名展示。通过讨论和展示,一方面能够激发学生兴趣和积极性,另一方面学生也能够看到与众不同的解决方法和思路,达到扩展自己的知识能力的目的。实验项目中Windows基本控件的使用、Windows窗体应用程序设计、异常处理及程序部署等就需要侧重设计性,允许不同的学生给出不同的解决方案和结果,鼓励学生去改进。
2.4创造性实验
创造性实验是“C#程序设计基础”实践教学的最终环节,也是最终能力的拔高和凝练。这一环节可以贯穿整个实践教学过程,主要通过课程设计实现。课程设计是学生对课程所学知识综合运用和提高。这一环节老师给定一定数量的题目,学生可以从这些题目中选择也可以自拟题目,在学期末完成。要求学生自己设计要完成的问题,给出详细的功能描述和解决方法,然后将其实现并展示出来、提交课程设计报告,允许团队合作。这一环节一方面是加深学生对“C#程序设计基础”理论知识的理解,另一方面也是对学生创造能力的培养、团队合作能力的培养、理论联系实际应用于实际能力的培养。任课教师一定要提前设计好课程设计的题目和要求,后期一定通过全体学生的答辩汇报和课程设计报告册来完成对课程设计的考核。这一考核也要作为“C#程序设计基础”课程考核的重要组成部分,增加学生的重视程度。老师要严格把关,并给出必要的指导。
验证性实验、训练性实验、设计性实验、创造性实验四个层次环节,由易到难,相辅相承,逐步培养学生的编程能力。当然,每个实验项目属于哪个层次环节不是绝对的,只是侧重点不同。比如在继承和接口技术的使用、数据操作等实验项目中,主要以训练性内容为主,但类的创建、界面的创建等内容需要学生自己设计。
3、实践效果
我们在2013级学生的“C#程序设计基础”课程教学中开始探索分层次的“C#程序设计基础”实践教学模式,在2014级学生的“C#程序设计基础”课程教学中进一步完善,效果很好。学生学习的积极性明显提高,特别是女生。前几届学生在学习程序设计课程中,女生明显处于消极状态,不愿意动手,总怕出错了。采用分层次的实践教学模式后,学生一开始没有觉得太难,消除了女生的胆怯心理,后期学生也敢于大胆设计、大胆创造。从课程设计等考核来看,效果明显比前几届学生的学习效果好。
4、总结
经过一系列的实践教学,我们针对“C#程序设计基础”课程,探索出了从验证性实验、训练性实验到设计性实验、创造性实验的分层次的实践教学模式。这一教学模式由简单到复杂、由单一到综合、由模仿到创造,逐步培养学生的编程能力和技巧。今后,我们将继续结合教学实际进一步完善实践教学文件、丰富“C#程序设计基础”课程实验内容和课程设计的内容。我们也将进一步探索、研究“C#程序设计基础”课程设计的改革,使“C#程序设计基础”的实践教学质量达到一个新的水平。
参考文献:
[1]黄贤英.计算机专业实践教学体系建设思考[J].实验技术与管理,2009,26(10):94-100.
[2]郎振红.C#程序设计课程实践教学改革[J].计算机教育,2015,17:94-97.
[3]刘在英.程序设计课程实践教学模式的探讨[J].实验室研究与探索,2013,32(10):156-159.
[4]马彬.三维一体化的计算机实践教学建设体系[J].实验室研究与探索,2013,32(10):163-165.
[5]孙爱东,杨秋妹,肖媚燕.多层次的“数据结构”实践教学模式探讨[J].教学改革与研究,2009:166-167
[6]王小科,徐薇.C#从入门到精通[M].清华大学出版社,2010.
[7]朱晓辉,王杰华,丁浩,陈森博.C#程序设计基础[M].清华大学出版社,2013.
作者单位:河南中医药大学