王振铎,王振辉,边 倩,陈绥阳,3
(1.西安思源学院 电子信息工程学院,陕西 西安 710038;2.西安翻译学院 工程技术学院,陕西 西安710105;3.西安交通大学 信息科学系,陕西 西安 710049)
重在设计能力的程序设计类课程教学改革与实践
王振铎1,王振辉2,边 倩1,陈绥阳1,3
(1.西安思源学院 电子信息工程学院,陕西 西安 710038;2.西安翻译学院 工程技术学院,陕西 西安710105;3.西安交通大学 信息科学系,陕西 西安 710049)
程序设计是软件技术专业学生必须掌握的技能,但教学效果往往不尽人意,归根结底是忽略了程序设计重在“设计”的本质。文中分析了课程现存问题,提出以培养设计能力为核心的教改思路,通过“认识、设计、提高”三个阶段的教学,逐步改善学生程序“设计”能力。实践表明,由于抓住了课程本质,并采取了有效的措施,课程教学质量明显提高。
设计;改革;逆向工程;心理学
程序设计语言是软件技术专业学生的核心课程,目的是培养学生的逻辑思维能力。该类课程一直是师生倍感头疼的课程。程序设计难教也难学,源于计算机语言本身高度的抽象性和严密的逻辑性。为了提高该类课程的教学效果和质量,西安翻译学院在软件服务外包专业程序设计课程中,大胆尝试、创新,从课程本质出发,提出一系列具体的改革和实践措施,供同行参考。
1.忽视课程本质。程序设计(Programming)是给出解决特定问题程序的过程,是软件构造活动中的重要组成部分。程序设计往往以某种程序设计语言为工具,给出这种语言下的程序。程序设计过程应当包括分析、设计、编码、测试、排错等不同阶段[1]。从中可以看出,程序设计包括分析问题,设计算法,用特定的语言实现等过程,编程只是其中实现的部分,更重要的是分析和设计。如果学生不具备问题分析和解决的能力,又如何编写程序呢?
目前,程序设计类课程的教学目标过多地将重点放在语法规则的掌握上,而忽视了学生实际解决问题能力的培养[2]。我们在日常教学中发现,上课认真的学生,能够掌握程序设计的语法,也能够模仿书上的例题编写程序,但要解决一个实际的问题,就显得束手无策了。更有些学生在学习几门程序设计语言课程后,无奈地表示只能编写简单的“Hello World”程序,体现出学生缺乏程序设计的思想,没有解决问题的思路和方法。
2.缺乏对“设计”的认识。日常生活中,“设计”一词出现的频率很高,“网页设计”、“装潢设计”等,我们发现“网页设计”课程学生学习的主动性和兴趣就很高,原因很明显,现在学生每天都与网站、网页打交道,已经具备对网页内容和形式的认识,再经过专业学习,必然可以自行设计一个网站。但编程对于学生来讲是一个新生事物,从未接触过,缺乏对程序设计的认识,故“觉得老虎吃天,无从下手”。
3.缺乏设计型的实践环节。程序设计目的是利用计算机技术解决现实生活中的问题,教师应在教材的基础上,引入生活中实际的问题,让学生解决。而现在的实验,往往以验证实验为主,缺乏设计性、综合性、研究性的实验,忽视了学生动手能力和创造能力的培养,造成学生缺乏知识活学活用的能力。
鉴于上述问题,我们在教学过程中通过“认识”、“设计”、“提高”三阶段培养学生的程序设计思想和能力。
1.认识阶段。认识阶段是课程教学的起始阶段,主要目的是加强学生对程序设计的认识。即“为什么要学习程序设计?程序设计能为我们做什么?”在学习的初期,如果教师引导不当,就会导致学生目标缺失,学习动力丧失,直接后果便是:上课不认真听讲,实践时无所事事,一学期下来一无所获。那么,如何加强学生对程序设计的认识呢?我们主要采用以下方式。①认识实习。在学生入学后,立即进行认识实习,能够加强学生对专业和工作岗位的认识。这是我们改革的第一个创新之处,其他兄弟院校,仅仅停留在校内入学教育的形式上。我们的具体做法是,通过与软件园区企业建立校企合作,将学生的入学教育放到真实的企业环境中,除了参观企业外,更主要的是请企业的工程师现场讲解软件开发的具体工作和岗位要求,使同学们加强对软件开发中设计重要性的认识,为学习程序设计课程打下良好的基础。实习结束,要求学生认真书写实习报告,以便加强学生的认识和实习的效果。②作品展示。通过大量的软件演示,让学生理解程序设计在具体生活中的应用。在参观同时,允许学生具体操作软件,系统地理解软件的功能,理解作者的设计思路,例如:我们在java课程教学过程中,将学生作品、学生成绩管理系统让学生操作使用,除了增强学生的认识外,还可以提高学生学习的兴趣。③聘请企业技术专家和优秀毕业生进行专题讲座或座谈。俗话说得好“外来的和尚好念经”,通过聘请软件企业专业技术人员,定期开展技术讲座,和公司作品展示等方式提高学生对程序设计的作用的认识;同时,邀请本专业的优秀毕业生回校介绍工作经验。这些实实在在的经验和技能对学生提高兴趣和加强认识会起到不可忽视的作用。
2.设计阶段。设计阶段是课程的核心阶段,目标是通过教学和实践培养学生程序设计的逻辑思维能力。主要采用以下3种方法进行培养。①“软件逆向工程”思想的应用。软件逆向工程(Software Reverse Engineering)又称软件反向工程,是指从可运行的程序系统出发,运用反汇编、系统分析、程序理解等多种计算机技术,对软件的结构、流程、算法、代码等进行逆向拆解和分析,推导出软件产品的源代码、设计原理、结构、算法、处理过程、运行方法及相关文档等[3]。初学程序设计语言的学生,往往掌握了程序设计语法,仍然不能编写出良好的程序,归根结底是学生没有程序设计的思想,不能在头脑中形成良好的设计思路,即没有实现目标的良好方法,故在设计的初级阶段,采用软件逆向工程的思想,先给出结果,然后从结果逆推实现的过程,学生详细分析实现的步骤,再结合语法实现。例如:在输出九九乘法表程序的讲解过程中,教师可以先给出乘法表的输出结果,然后分析乘法表是如何得到的,学生可以容易地想到利用双循环结构实现,这样利用逆向工程方法,使学生“有的放矢”,通过这种方式使学生认识到在该阶段中理解程序设计的核心在于“设计”,改变学生直接编程的习惯。②程序流程图。在程序编写前,应具有解决实际问题的思路,程序流程图是思路的图形表示方法,要求学生掌握程序流程图的绘制问题的求解过程,这样能够切实加强学生分析问题和解决问题能力的培养。这也是我们改革的又一创新之处,有教师认为流程图只有在企业中才广泛应用,学生画流程图和编程一样具有难度,那么不这样改革,我们如何培养符合企业要求的人才呢?为了降低学习的难度,我们分两个阶段进行,第一阶段,培养学生用自然语言描述问题求解过程的能力。第二阶段,待学生能够用书面语言描述后,在详细讲解流程图的符号和画法,将自然语言的描述改为流程图描述。学生画出流程图后,教师要求学生进行讲解或答辩,加深流程图设计过程的认识,有助于基础弱的同学共同提高。分成两个阶段进行,大大提高了学生利用流程图分析问题的能力。③设计心理学的应用。“设计”最终是为用户服务的,要设计符合用户要求的产品,在没有详尽的用户需求时,可以使用设计心理学,想用户所想,这无疑是对思维的又一有效锻炼方式。教师在教学过程中可以将现实生活中的任务,分配给学生,让他们身为用户,充分发挥想象力,激发了学生的自我创新能力的培养。
3.提高阶段。提高阶段是课程的最终阶段,目标是培养学生的综合实践能力。为了提高学生的创新思维能力,我们在教学中采用校内课程实训和校外生产实习两种形式。校内课程实训:在程序设计类课程中增加了两周的综合实训,让学生利用所学的语言解决身边存在的实际问题。实训题目来源于教师的科研子课题和学生自拟题目,这样大大提高了学生自主开发和设计的意愿,教师的工作从手把手教到辅助指导学生。校外生产实习:由我院专业对口合作企业,提供相应的实习岗位,分配学生具体的工作,学生应用所学知识,自行完成工作任务,在学生阶段,达到和企业无缝链接,毕业时就可以具有岗位所需技能。
程序设计类课程需要记忆的语法多、枯燥,学生学习积极性不高,实践能力弱,传统的教学方式无法达到良好的教学效果。结合我院专业实际情况,对程序设计课程教学方法进行改革,利用三阶段教学法,即“认识阶段,加强认识”、“设计阶段、培养能力”、“提高阶段、强化实践”,真正抓住了课程本质,使学生意识到“设计”在程序编写中的重要性,初步掌握了“设计”的能力,动手实践能力明显提高,教学效果和质量明显改观。
[1]钟志水,姚珺.大学计算机应用基础[M].重庆:重庆大学出版社,2012.
[2]章逸,帅晋明.计算机专业《程序设计类课程导论》的改革与实践[J].江西教育学院学报,2011,32(6):65-67.
[3]金淘,童水光.逆向工程技术[M].北京:机械工业出版社,2003.
[4]邓锐,赵莉,汤旭蓉,彭顺生.表象训练提高程序类课程教学效果之实证研究[J].中国校外教育,2012,(5):168-169.
[5]刘振霞,梁伟,杨爱新.高职程序设计类课程“教学做”一体化教学模式的研究与实践 [J].中国科教创新导刊,2012,(11):77-78.
[6]孙连云.关于提高程序设计类课程教学效果的新探索[J].农业网络信息,2008,(8):111-113.
[7]周正国.基于项目的高职院校程序设计类课程改革探讨[J].长江大学学报(自然科学版)理工,2012,7(9):165-166.
[8]马雪英,王桂平.以能力为导向的程序设计类课程教学体系[J].计算机教育,2011,(4):74-78.
G642.0
A
1674-9324(2014)20-0039-02
陕西省教育科学十二五规划课题SGH12549资助。