结合Matlab提高信息类非计算机专业大学生编程能力
2015-10-21李响吕勇李月强
李响 吕勇 李月强
【摘 要】本文以Matlab为切入点,利用其易于上手、语法简单、各专业工具箱丰富等优势,将Matlab贯穿整个编程能力培养课程体系的构建,同时在教学方式和方法上也针对其特性进行了改革,试图探索一条结合Matlab进行专业教育同时提高其编程能力的改革之路,并在实践中取得了一定的成果。
【关键词】教学改革 课程设置 编程能力 Matlab
【中图分类号】G642 【文献标识码】A 【文章编号】1674-4810(2015)05-0009-02
计算机基础教育主要是面向大学中非计算机专业学生的计算机教育,这部分学生约占全体大学生的95%以上。虽然对大部分非计算机专业学生进行计算机教育的目的是培养大批能使用计算机的人才,以及计算机应用人才。但对信息类专业(如计算机科学与技术、网络工程、电子信息工程、通信工程、物联网工程等)非计算机科学与技术专业的本科生来说,能编写规范的程序代码仍然是最基本的专业能力。从社会的需求来看,信息类非计算机专业人才仅具备良好的编程能力还远远不够,还应具有软件系统开发等各方面的能力。高校信息类专业课程体系中,程序设计类的课程占有相当的比重。常见的专业课有C语言程序设计、计算机软件技术基础、面向对象程序设计、汇编语言程序设计、网络程序设计等。由于信息类专业的应用领域非常强调技术实现,普通高校学生必须具备较强的编程能力,才能满足社会对人才的要求。
计算机技术和网络技术的飞速发展,不仅促进了现代教育技术的不断发展,也对经典数学课程的教学内容、教学方法以至教学思想产生影响。因此,根据面向21世纪人才培养的需要,有必要对工科数学课程的教学内容和教学手段进行适当的改革。更新教学理念,探索一种以计算机为辅助教学工具展开工科数学教学,并同时提高学生编程能力的全新的教学模式受到了国内外同行的普遍关注。在国外多所知名高校已开始利用计算机进行数学教学的实践,并取得了不错的教学成果。在国内也有部分院校正在积极地进行数学实验课的教学研究,这已成为当前工科数学教学改革的热点。依据人才培育要适应国家和社会发展需求的要求,提升非计算机专业学生编程技能的教改实践已迫在眉睫。笔者所在学院针对信息科学类非计算机科学与技术专业的本科生,试图探索一条结合Matlab进行专业教育同时提高其编程能力的改革之路。
一 存在的问题
1.课时不足
随着高校课程体系的全面改进,为了宽口径接入社会地培养学生,以便学生将来能有更广阔的就业领域,信息类的各个专业被加入了越来越多的课程,所有课程均面临着课时紧缩的问题,而程序设计类课程所受的影响尤其明显。一方面要保证理论课的讲授与教学,另一方面要保证学生动手编程能力的提高。理论课程的时间显得非常紧张,必须在有限的时间内尽可能把该语言中各种各样的知识点传授给学生,还要保证他们能有足够的课时在实训课环节完成相关的实训内容,为此在时间和教学上就要合理安排。
信息类非计算机专业的教学过程中,让学生拥有更多的自主学习和操作时间,成为有效教学的必然要求,为了更好地满足这一要求,需要对存在的客观矛盾进行优化和解决。如随着计算机技术的广泛应用,在专业课学习的同时,要通过与计算机使用的交叉与融合,提升计算机教学内容的使用次数和频度。这样所增加的专业学科学习与计算机知识的学习能有效结合,在不断应用计算机知识的过程中,学生的计算机水平得到了有效的提升。
2.学生自身水平影响
对类似我校的非重点高校的学生,学生的数学基础普遍较弱,而编程相关知识抽象程度却很高。学生的数学入学成绩往往不够理想,入学后对于数学类课程的学习没有给予足够的重视,造成学生的数学基础不够,使得学生对编程的学习与能力的提高非常困难。而如数据结构、算法设计与分析等与编程直接相关的课程比较抽象,对于缺乏数学思维的学生来说,难以得心应手地加以运用。同时由于我国计算机基础教育开展的不均衡性,使学生在入校时计算机基础水平存在着较大的差异。一部分学生可能因为前期教育等原因,基本没有接触过计算机,而一些条件好的学生则可能有着非常熟练的计算机操作和应用能力。因此,在非计算机专业计算机编程教学过程中,要客观分析这种学生计算机基础的差异,并就差异的类型和程度,做出一个客观的分析,在此基础上,提升信息类非计算机专业计算机编程教学的针对性和有效性,以更好地促进信息类计算机教学的开展效果。学生的基本水平与计算机专业素质千差万别,特别是对于地方性普通本科院校,学生的理论基础还不够,编程能力更是有待提高。
除去基础之外,学生的兴趣也影响着编程能力的提高,大部分学生缺乏学习兴趣,也没有形成好的学习习惯。学生的自学能力与主动学习的意识相对不高,很多学生除了上课听一些以外,很少在课下主动练习。另外,由于编程比较枯燥,没有一定兴趣是很难坚持下去的,而如何激发学生对编程的兴趣,在目前教学过程中,又显得手段薄弱。
二 Matlab切入的优势
选择Matlab作为切入点,以提高信息类非计算机专业大学生的编程能力,具有得天独厚的优势。
1.Matlab的特色
Matlab是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括Matlab和Simulink两大部分。Matlab应用非常广泛。它在数学类科技应用软件中在数值计算方面首屈一指。它具有高效的数值计算及符号
——————————————————————————
* 促进人才培养综合改革项目阶段性研究成果(PXM2014_014224_000091)
计算功能,能使用户从繁杂的数学运算分析中解脱出来,并以其完备的图形处理功能,实现计算结果和编程的可视化。Matlab為学生提供了友好的用户界面及接近数学表达式的自然化语言,使本科学生易于学习和掌握。Matlab是一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程的特点。Matlab语言是基于最为流行的C++语言基础上的,因此语法特征与C++语言极为相似,而且更加简单,更加符合信息类学生对数学表达式的书写格式,学生在精通后可以更方便地迁徙到其他语言。
2.Matlab与其他学科的关联
Matlab的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用Matlab来解算问题要比用C、Fortran等语言完成相同的事情简捷得多,并且Matlab也吸收了Maple等软件的优点,使Matlab成为一个强大的数学软件。Matlab可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通信、图像处理、信号检测、金融建模设计与分析等领域。同时具备对C,Fortran、C++、JAVA的支持,可以直接调用。其内嵌功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等),为学生提供了大量方便实用的处理工具,可以轻松解决各种专业课程中遇到的问题。学生也可以将自己编写的实用程序导入到Matlab函数库方便自己以后调用。而且这种语言可移植性好、可拓展性极强,这也是Matlab能深入到科学研究及工程计算各个领域的重要原因。
三 具体措施
1.理论课程体系的构建
多年的教学实践使我们认识到大学生编程能力的提高是一个循序渐进的教育过程,要着眼于学生信息素养和信息能力的培养,毕业后一段时间内期望他们达到既具有本专业知识,又掌握计算机技术,跨学科的知识面宽,富有创造精神。
《计算机基础教育白皮书》详细阐述了非计算机专业学生的计算机专业知识结构要求,概括起来主要是:掌握计算机软硬件基础知识;具备使用计算机实用工具处理日常事务的基本能力;具备通过网络获取信息、分析信息、利用信息以及与他人交流的能力;利用计算机硬件及接口技术解决本专业领域中问题的基本能力;具备使用典型的专业软件和工具来解决本专业领域中问题的能力;具备利用数据库技术对信息进行管理、加工和利用的意识与能力;掌握计算机硬件的基本技术与分析方法,具备专业领域中计算机应用系统的集成与开发能力和程序设计基础等。
按照培养要求,课程应是成系列的,是有利于各种专业能力逐渐形成的渐进系统。以我校光信息科学与技术专业为例,设置了一系列编程能力培养的课程,此类课程侧重于培养学生掌握本学科要求的计算思维方法、算法设计策略和技术,而后引导学生能熟练应用Matlab语言,形成良好的代码编写习惯,此外还要具备面向对象的思维能力。在此基础之上而采用工程的概念、原理、技术和方法来开发与维护软件。这一系列课程形成一个渐进系统,帮助学生完成由编程能力到软件开发能力的提升。与此同时,所有专业课程中涉及实际问题的教学案例中,均利用Matlab进行解决。
2.教学方法的改革
在编程能力培养的教学中,要继续坚持以教师为主导、学生为主体的教学理念,注重发挥学生在各个教学活动中的主体作用,注重采用多种教学形式培养学生解决问题的能力和综合素质。首先,应加强课堂教学效果,根据各门课程特点发挥集体的智慧和经验制作优质的电子教案和多媒体辅助教学课件,将Matlab编程内容贯穿在各课程具体内容中,并充分利用多媒体设备和多媒体软件进行生动、形象、直观的教学,使得介绍理论概念时不生硬、不枯燥,同时利用Matlab所具备的仿真、动画等特性,实时演示实际操作时具有直观性和动态性并保持有趣性。其次,为解决学时不足问题,同时由于Matlab的简单易学,所以可以引导学生课下分散自主学习。为了培养学生的自学意识和编程能力的提高,在教学中要继续有意识地引导学生自学,把专业课程中的部分有趣且相对简单的章节留作为自修内容,要求学生利用Matlab对此类章节涉及的问题进行解决,以论文、小结、调查报告等形式汇报解决过程和结果,强调基本操作方法的灵活运用,注重培养学生的实际操作能力和创新学习意识。由于课时的限制和学生的实际情况,部分理论知识无法详尽地介绍,如我校光信息科学与技术专业针对大二学生开设的计算机软件技术基础课程中,数据库基础、多媒体技术基础等部分内容,在教学中可以通过Matlab自带的Demo实际案例驱动教学,在较少的学时下使学生通过实例既理解和掌握了繁多的基本概念,同时又可调动学生学习的兴趣,引发其进一步学习的意识,以取得较好的教学效果。
3.编程逻辑的训练
从初学者看待编程,往往注重语句和语法,并认为照搬教材例子就可以编出程序。一旦要求用程序去实现新类型的题目时,往往无从下手,没有任何思路,或仍旧照搬那些早已不合时宜的例子。其真正原因还是没有把逻辑架构和编程解题思路放在学习的重点上,不具备编程的抽象思维能力。程序设计是逻辑思维比较缜密的一门学科,需要勤加思考,只读别人的程序或没有自己的分析都是不可取的,通常建议新生在做编程练习时暂时摆脱教材,独立思考。由于Matlab语言的简单易学,可以使学生克服畏难情绪,加之其语法简单,便更容易让学生忽略对语法的关注,而将重心放在程序结构与逻辑之上。此外,程序设计是一门涉及知识领域比较宽泛的学科,信息类非计算机专业学生更应从工程的角度来看待一个软件的设计和生产过程。教师在教学过程中应不断灌输这种思想。
四 结束语
经过多年的努力钻研和在我校光信息科学与技术专业的本科生教学中实践,大学信息类非计算机专业的计算机教育取得了一定的成绩,经过4年本科学习,学生的编程能力、自学能力、终身学习能力都有大幅提升。教学成果得到了学校专家、领导的肯定,同时所培养的学生也受到了各用人单位的欢迎。课程设置和建设是一个系统工程,涉及方方面面的问题,我们所做的工作和将要进行的改革无论是课程设置、课程内容更新,还是教学方法的改革等,目标都是明确的,那就是为了提高我校计算机基础教学的教学质量、教学效果,最终使学生受益。
参考文献
[1]杨殿生、韓世芳主编.计算机文化基础教程[M].北京:电子工业出版社,2008
[2]闪四清、王静.经管类专业计算机软件技术基础课程教学内容和方法研究[J].中国科技博览,2009(34):32~34
[3]汪昌健.关于计算机软件技术基础教育的一些思考[J].计算机工程与科学,2006(Z1):28~30
〔责任编辑:林劲〕