流体机械工程专业“计算机软件技术基础”课程教学研究
2018-07-31梅冠华康灿顾媛媛
梅冠华 康灿 顾媛媛
摘 要 《计算机软件技术基础》是高等院校非计算机专业本科生的专业基础课,课程对于学生的学习、工作和生活具有重大的指导意义,由于该课程专业跨度大、涵盖内容广、实践性强,因此讲授和学习难度较大。通过对学生特点和该课程传统教学方式的深入分析,提出了一些行之有效的教学手段与学习方法,在实际教学中取得了较好的效果。
关键词 软件基础 教学设计 C++
当前,计算机软件技术已经深入到各行各业,已经并将继续发挥巨大的推动作用。因此,对于非计算机专业的工程技术人员来说,若能掌握一定的计算机知识,则可以很方便地与计算机专业的技术人员一起,开发适用于本行业的相关软件。[1]合理的本科生培养应该是使得本科生对于本专业的知识有深入扎实的掌握,同时又能对其他方面的相关知识有广泛涉猎,这样方能游刃有余、从容不迫,以不变应万变。当今社会,需要的正是这种复合型、创新型的人才。因此,“计算机软件技术基础”被众多高校列为非计算机专业的必修课程,江苏大学能源与动力工程学院流体机械及工程系也特别针对本专业学生开设了该课程,以期学生可学习和掌握一定软件开发方面的知识,为将来的学习、工作和生活提供指导和借鉴。
由于该课程属于概述类课程,其涵盖了算法、数据结构、操作系统、数据库、软件工程等众多知识,且针对的是非计算机专业学生,因此讲授和学习难度较大,对于传统的教学方式,学生普遍表示“理解不了”。如何让学生们高效地学好和学活这门课,这是亟待解决的问题。经过对本专业学生前期知识储备和学习特点的调研,对该课程知识点结构及相互关系的深入分析,结合多年的的学习、工作和教学经验,在实际教学过程中进行了有针对性的处理,收到了良好的教学效果。
1 学生特点
1.1 对课程认可度不高,学习兴趣不浓厚
当前软件行业飞速发展,针对各行各业已推出了相对较为成熟的专用软件,可以解决常见的行业问题。[2]比如流体机械行业有CFTurbo软件来进行水力设计,有UG软件用来三维建模,有FLUENT软件来分析流场等。这就使得学生们普遍认为软件开发是搞计算机的同学所做的事情,跟自己没有关系,而自己只要使用好这些软件就行了。因此,学生大多认为这门课的知识将来用不上,缺乏学习兴趣。
1.2 前期知识储备不足,学习过程痛苦烦躁
虽然95后的学生较早接触到了计算机,但大多只是用来进行如打游戲和看电影等娱乐活动,并未对计算机的工作原理有较为清晰的认识。此外,尽管前期学过C++语言,但受限于较少的课时和较少的实践积累,多数同学对于C++的掌握仅限于常见变量和运算、控制结构、函数等相对简单的知识点,一旦涉及到结构体、类和对象、重载、模板、指针等较为复杂的知识点,就束手无策、不知所云。这导致在本课程的学习过程中,同学们对理论部分理解起来较为吃力,而对于代码实现则更是一头雾水。前期知识储备不足影响了课程学习效果。
1.3 对于新技术既渴望好奇又害怕畏惧
任谁也无法抵抗人工智能、大数据、云计算、物联网这些新名词铺天盖地的狂轰滥炸,任谁也无法阻挡这些新兴科技对于其他行业的巨大推动。面对这些新技术,同学们感到好奇,渴望了解它们究竟是什么,如何起源的,发展现状如何,将来又会产生哪些影响。另外又感到害怕,害怕新技术引起的新变革会颠覆本行业的传统格局,如果不能及时把握这些看似神秘而又高大上的新技术,很有可能被时代所淘汰。这种既好奇又畏惧的矛盾心理同样反映在该课程的学习过程中。
1.4 对老师和课堂的过分依赖
不同于中学时代老师对知识点的再三强调和题海战术,和大学其它课程类似,由于知识面宽广且教学课时有限,该课程讲授时不可能把一个知识点翻来覆去地不断强调,基本上只能保证一两遍的讲解,这就使得课程知识点较多、节奏较快。但学生的注意力往往不能长时间聚焦,一旦稍有松懈,便无法跟上节奏。实际上,过分依赖老师和课堂,想要在课堂上全盘消化吸收知识点是不切实际的,该课程更多地需要学生的课前预习、课后复习、上机实践和自我领悟。
2 该课程传统教学方式的不足
2.1 实践环节较少,学习效果较差
以往的课时分配上,重视课堂讲授理论知识,而忽视上机编写代码、实际问题建模与求解、软件项目开发等实践环节,实践环节象征性开设两三次,甚至没有。在课堂讲授上,更多的也是对理论知识的阐述,而对理论的具体代码实现避而不谈或语焉不详。缺乏实际动手操作的实践环节,这使得原本就很难理解的知识点更加晦涩艰深,且进一步打击了学生的学习兴趣。
2.2 专业结合不强,学习目标不明
以往的开课老师一般来自计算机学院,虽然其对于计算机领域的知识掌握得十分扎实,然而对于学生所在专业领域的知识知之甚少。这导致在讲课过程中,对于学生的专业需求不甚明了,不能很好地将课程知识与听课学生所在专业的相关知识和具体应用场景结合。知识点的传输过程脱离专业需求,显得枯燥乏味,无法调动学生的学习积极性。
2.3 集中教学模式,无法因材施教
毋庸置疑,最好的教学模式应该是一对一的家教式教学,可以针对每个同学的特点因材施教。[3]受限于外部条件,实际情况多为大班集中教学模式,教师在讲课过程中很难考虑到每个学生理解能力上的差异和学习状态的好坏,无法满足不同层次学生的多样需求,仅能就学生的平均水平来安排教学。造成学习能力差的学生听不懂,能力较强的学生又感觉简单无趣,既无法使前者轻松收获知识,更无法使后者百尺竿头更进一步。
3 改进措施
3.1 结合专业实际,浓厚学习兴趣
第一节课,通过实例和讲解充分调动学生的学习兴趣和学习热情。首先,纵然有很多本行业相对较为成熟的软件,然而其使用起来相当于黑箱,如果不对其内部工作机制有所了解,是不能很好地发挥其功能的。其次,这些商业软件虽然通用性强,但适用性差,也并非任何实际问题都能解决,有时我们不得不自己去开发软件来解决特定问题,这就需要用到本课程的相关知识。再者,软件开发属于高薪行业,有部分同学将来考研或是找工作会跨界到计算机行业,那么有了本课程知识的积累,其后续的再学习和工作将会较为容易。最后,艺多不压身,掌握本课程相关知识,也可用来高效指导生活的方方面面,比如数据整理、查找和排序方法、日程安排、人际关系图、运筹帷幄等。总之,要让同学们深刻认识到软件技术已经渗透到各行各业,务必要对其有所了解才能有所作为。
3.2回顾计算机原理和C++语言,夯实前期基础
针对学生前期知识积累薄弱的情况,先进行计算机基本原理和C++语言的知识点回顾,为后续学习铺平道路。使学生对于计算机的硬件系统、软件系统、工作原理有了初步的理解,并对C++的结构体、类和对象、重载、模板、指针等较为复杂的知识点有较深入的理解。着重通过举例使这些知识点形象生动。比如用流体力学中一个空间点上具有速度、压力、密度等变量,可将其综合起来定义为一个新的类型,来引出结构体的概念。再比如用平面上的点具有x和y坐标两个变量,同时又需要经常计算该点距离原点O的距离,可将这两个变量和计算距离函数综合起来,这便是类的概念。用金庸武侠剧不断翻拍来类比重载的概念,用小学生写作文的“小明扶老奶奶过马路”和“小张扶老奶奶过马路”来类比模板的概念等。磨刀不误砍柴工,夯实了前期知识基础,极大方便了本课程后续知识点的学习。
3.3 结合专业特色和生活实际,深入浅出的教学
主讲老师虽然出身于流体机械专业,却在软件公司开发过大型软件,因此既有扎实的行业基础,又有丰富的软件开发经验,非常适合本课程的讲解。其结合生活实践和专业知识,根据学生的认知规律,先抛出几个具体的问题,然后总结抽象出同一类问题,再给出该类问题的解决方法,写出算法的具体流程及伪代码,最终编写算法的C++程序实现。使同学们形象直观、由实际中得出理论,再将理论用于实际,学以致用,活学活用。在讲述“栈”这种数据结构时,先用生活中常见的弹匣、糖葫芦、羊肉串、织毛衣等实例引出“先入后出、后入先出”这样一种数据类型,并通过流体机械装配与拆解过程引出“先装后拆,后装先拆”这样的零件排序,随后给出栈的定义及其顺序和链式存储结构,最后给出其程序实现,并进一步提出栈可以用来合理指导自己的日常事务安排。在讲述“回溯法”时,通过走迷宫和摸着石头过河的实例很好地诠释了其试探前进不行就回退换路走的思路。将枯燥的理论与这些专业例子和生活例子的紧密结合,使得学生可更加容易地理解这些知识点。
3.4 理论联系实际,注重培养学生动手能力
该课程属于一门实践性很强的课程,仅仅是从理论层面上理解相关概念,而不去真正编写代码实现,这无异于蜻蜓点水、纸上谈兵。为此,本课程除了课堂讲授之外,还安排了大量的上机操作环节、小软件开发环节。指导学生们实际动手编写线性表、栈、队列的线性存储、链接存储结构,对角矩阵、带状矩阵、稀疏矩阵的压缩存储方式,二叉树的存储和前序、中序与后序遍历,以及常見的查找和排序方法等,并就有代表性的小游戏如俄罗斯方块、贪吃蛇、连连看等的开发过程进行演示,使同学们不仅在理论上对所学知识有所领悟,更能真正在代码编写与调试的实践中深入理解和灵活运用课程知识。
3.5 与时俱进,不断丰富教学内容
围棋程序AlphaGo轻松战胜人类顶尖棋手李世石与柯杰,购物网站精准的广告推送,智能导航可实时避开拥堵路段,这些都显著提高了人们的生产效率和生活水平。对于这些新技术,学生们普遍存在既新鲜好奇又害怕畏惧的矛盾心理。为此,特意对人工智能、大数据、物联网、云计算等知识作了粗略的概述性讲解,着重回顾了它们的起源和发展现状,展望了其未来发展趋势,并通过手写体识别、计算流体动力学的云计算、流体机械工程优化等例子来说明人工智能、云计算等在生活和本行业中的应用。这些紧贴时代的新内容,使得同学们耳目一新,知识面大为拓展,为今后深入学习和灵活运用这些新技术推开了一扇窗。
3.6 分组互助,课后学习,全面提升
建立课程QQ群,将课程PPT和相关代码上传到群共享文件,方便师生互动和课后学习。针对学生层次参差不齐,学习能力差异较大的实际情况,将学生分为学习兴趣小组,并由学习能力较强的同学担任组长,帮助组内同学在学习上一起进步。此外,该小组将在课下自选题目共同完成小型软件的开发,最终以项目开发报告和程序的形式提交,并进行课堂展示,成绩按一定比例计入期末总分,通过团队协同合作和实际项目开发,可全面提升学生的软件开发水平。对于那些学有余力和兴趣浓厚的同学,推荐C++的经典学习网站www.learncpp.com、经典教材《C++Premier》、矩阵运算经典教材《矩阵计算》、人工智能相关书籍《游戏编程中的人工智能技术》等资源,更进一步丰富其知识结构,同时也能在一定程度上提升其科技英语水平。
4 结语
当今世界飞速发展,科技进步日新月异,复合型人才正是社会迫切需求的,“计算机软件技术基础”课程的学习对于非计算机专业的学生而言意义十分重大,同时它也是一门教授和学习难度都很大的课程,其教学方式方还有待不断研究探索。纵然提出了一些新的教学方法和方式,也收到了较好的教学效果,可是仍需精益求精。在今后的教学中,要充分考虑学生前期知识储备和学习认知规律,深入分析课程知识点的相互关联,结合本专业特点和时代特色,精心设计课堂教学与实践环节,不断推陈出新,培养出更加优秀的应用型、创新型、复合型本科人才。
参考文献
[1] 徐士良,葛兵.计算机软件技术基础[M].北京:清华大学出版社,2014.
[2] 李昕,仲伟和.计算机软件基础教学研究[J].辽宁工业大学学报,2008.10(6):127-128.
[3] 赵颖,杨海英,褚治广.计算机软件基础教学改革的研究[J].辽宁工业大学学报,2014.16(5):138-140.