一、引言
本文分析了现有计算机语言类课程的特点与面临的实际问题,从培养学生程序设计能力的目标出发,在理论教学环节推行层次化教学模式,在实践教学环节减少验证型实验,增加设计型实验并增设课程设计环节,传统教学体系以外鼓励学生进行外延学习,如参加大学生程序设计竞赛、考取各类职业技能证书和参与教师科研项目等,并通过建设合理的教学评价体系实现学生专业能力的考查。最终,培养学生的程序设计能力、科技创新精神和创新能力。
二、计算机语言类课程概况
(一)计算机语言类课程的特点
随着计算机技术的更新换代和计算机网络的飞速发展,计算机语言也在不断地推陈出新,由最初的机器语言、汇编语言等低级语言,到早期的高级语言如BASIC、PASCAL和C语言,再到C++和JAVA等面向对象的高级语言。同时,各种计算机语言的语法语义看似模式固定,而真正应用于软件开发却是千变万化,这都决定了计算机语言类课程具有操作性强、更新速度快、创造性强等特点。该门课程与其他计算机专业课程相比,对于学生的动手实践能力要求更高,尤为强调学生程序设计思维方式和软件开发。
(二)计算机语言类课程面临的问题
根据多年来讲授计算机语言类课程和组织学生参加计算机程序设计竞赛的经验,笔者认为高职院校计算机专业学生学习语言类课程的瓶颈在于过分注重理论基础知识,却无法利用所学的计算机知识分析和解决实际问题。上课或培训时,当老师给出一个新的题目,总是不知从何入手,思路不清,一团乱麻。当听过老师的讲解后,才恍然大悟。如果再遇到一个新题目或稍微改动过的问题,学生又开始手足无措,无法独立找到适合算法完成编程操作。出现这种情况的主要原因在于学生在计算机语言类课程中只是追随着老师的思路,而缺少独立思考和动手操作的机会,无法完成程序设计思维的训练。
三、计算机语言类课程中学生程序设计能力的培养
(一)时刻关注程序设计思维方式的培养
在日常教学活动中,应注重程序设计思维方式的培养。以C语言程序设计课程为例,教师在课堂上提出一个新的问题,然后引导学生分析并思考解决问题的步骤,在此过程中需要摒除具体代码实现的细节部分,只关注核心的流程。鼓励学生独立绘制流程图,进而整理出解题思路,这是培养计算机专业学生程序设计思维的必经阶段,也是程序设计师必备的专业技能。C语言程序设计是高职高专学生接触到的第一门计算机语言类课程,为了帮助学生理解程序设计中的各种抽象概念,教师可以在讲解中引入贴近生活的实例,例如“酸奶制作”。酸奶制作所需要的原料如牛奶、酸奶发酵剂、糖和蜂蜜等即为程序中的变量,将原材料放入酸奶机中可看做是输入变量,加热、发酵和冷却等操作可看作为函数调用的过程,同时也铺垫了函数的概念,最终酸奶制作完成即为程序结果的输出。还可以进一步扩展加入分支结构来调配不同口味的酸奶,运用循环结构制作若干份酸奶。通过这些易于理解的实例带动学生主动思考,一起做酸奶,既提高了学生学习的兴趣,也将程序设计的思维方式无声无息地渗透入学生的脑海中。在此过程中,学生学会了在思维中发现规律,在思维中抽象总结。
(二)理论教学环节推行层次化教学模式
基于层次化教学模式的思想,可将计算机语言类课程的教学内容分为算法、方法学、语法和集成编程环境四个层次。将此四个层次作为标准,教师需要将教材中知识体系进行重新的整理与划分,将每一章节、每一堂课、每一个知识点皆找到其所属层次。在理论教学环节中,点明各层次的具体内容,使学生了解计算机语言类课程不仅仅是学习某种计算机语言的语法与语义,更不是简单的学习如何使用某一编程环境进行程序的编制和调制。以C语言程序设计课程为例,在课程中第一层次算法涉及较少,但在授课过程中如涉及到较简单的算法也可稍作渗透,为今后的数据结构课程做铺垫。比如在讲到循环控制结构时可通过例题讲解穷举法和递推算法,一维数组的经典应用之一——排序的两种算法冒泡法和选择法也必须为学生点明。第二层次编程方法学在C++程序设计课程中体现较为明显,主要涉及的内容为面向对象程序设计方法。第三层次语法是各计算机语言类课程理论教学中的重点内容,包括变量的定义与使用,函数的定义、声明和调用,对象和类的定义等。第四层次集成开发环境在理论教学环节比重较少,主要为学生讲解程序开发的步骤,各类开发编译环境的使用方法等。
(三)实践教学环节注重将知识转化为能力
在计算机语言类课程的实践教学环节中,首先,教师应引导学生及时转变学习观念,使学生认识到若想在毕业后顺利寻求到满意的就业岗位,单纯依靠理论知识的学习是远远不够的,应在课程学习过程中注重实践和动手能力的提高,以及大量软件工程项目开发经验的积累,从而增强自身的综合职业素质,成为社会和用人单位急需的专业化技能型人才。1.在实践教学环节中,调整各种类型实验的比重。适当缩小验证型实验的课时比例,增加设计型和综合型实验项目。首先,在验证型实验中通过程序填空和程序改错等实验项目形式,在促进基础知识的消化与理解的基础上,注重培养学生“读程序”的能力。同时,培养学生良好的编程习惯和统一的编程风格。良好的职业素养有助于学生在未来的工作岗位中与同事协同合作,提高软件开发的效率。在设计型和综合型实验中,增设贴近企业一线,贴近社会需求,可操作性强的真实案例和项目,进而有意识地培养学生“写程序”的能力、创新精神和独立思考的能力。因此实验项目的具体内容需要课程组教师集中讨论与设计,与岗位技能相结合,并在教学过程中根据学生的接受程度与能力水平不断完善。2.在大三年级上学期,增设课程设计环节。此时的计算机专业学生已完成多门计算机语言类和软件工程等相关课程的学习,基本掌握各种编程语言的语法语义规则,熟悉软件开发流程,具备利用计算机分析和解决问题的初步能力。在课程设计中,学生接触到简单的工程问题,组成项目开发小组,分工合作,使用一种或多种计算机语言设计、编码和开发具有一定难度的小型软件系统,提交实验报告,最后每组选出一名代表参加答辩。在该环节中,应尽量为学生模拟出与企业真实工作环境相似的实践现场,并全面采用企业管理运作的模式。使学生在课程设计中亲身感受到企业的工作环境和岗位需求,全面地认识和熟悉软件项目开发过程,更好地掌握程序设计的基本思想。
(四)传统教学体系以外鼓励外延学习
1.组织学生参加如大学生程序设计竞赛之类的大型赛事。在竞赛的培训、备赛和参赛中,激发学生的学习热情,鼓励其主动学习、协作学习和拓展学习,使学生感受课堂所学知识与社会和市场需要的异同,为学生提供更加优质的知识积累与能力提高的平台。2.教师积极申请与计算机语言类课程教学内容相关的各级各类科技项目课题,并鼓励部分较为优秀的学生参与。首先,教师可向学生公布并简单讲解科研课题的研究内容及与本门课程的相关性,然后将研究内容分解为多个子项目,学生可自由选择自己感兴趣的子项目,选择相同任务的学生组成一个课题小组,根据科研项目的研究目标与方案,进行协同合作,利用课余时间完成子项目的开发。在实践中引导学生综合运用课堂所学知识,逐渐形成工程意识和团队协作的精神。在科研过程中如遇到瓶颈问题,可通过查询网络、翻阅工具书、参考资料和请教老师等方式寻求帮助。在课程结束后,教师可按照学生的完成情况及工作量给予适当的课外学分折算鼓励。参与教师的科研项目可为学生创造接触和熟悉真实项目研发的机会,使学生了解科研项目的开发过程,不断学习和掌握前沿知识与先进技术,做到学以致用,学会创造性学习、研究性学习,为今后升入本科院校继续深造学习奠定坚实的基础。3.将计算机技术与软件专业技术资格(水平)考试、Java认证、全国计算机等级考试等职业资格认证教育融入课程教学过程,使专业课程内容与职业岗位能力无缝对接,实现“课证融通”,课内教育与课外教育相结合,以加深学生对行业的认识,提高高职高专计算机专业学生的社会竞争力和职业素养,增强其就业信心。4.加强校企合作,为理论教学和实践教学环节争取到更多的真实案例和项目,为学生提供更多顶岗实习的机会,让学习与就业岗位零距离,为今后更好地融入真实的职业环境打下良好的基础。
(五)教学评价体系实现能力考查
好的评价方法,可以调动学生学习的积极性,培养学生自主学习的能力,改善学生学习的风气,促进教学。对于计算机语言类课程来说,科学的、合理的、有效的评价方法,应注重对学生学习能力和程序设计思想的检测与评价。1.进行理论教学环节与实践教学环节相结合的多元化综合考核。理论教学过程考核包括课前预习、课中活跃度和提问情况、课后作业等成绩;实践教学过程考核包括验证型实验的操作完成情况、设计型和综合型实验的参与度、方案制定合理性、项目完成工作量、项目成果质量和报告提交等内容。2.鼓励学生参加计算机语言类课程相关的竞赛、考取职业技能证书、参与教师科研并制定适当的学分折算机制。将传统课程体系以外的拓展学习内容的评分纳入到教学评价体系中,这恰恰体现了当前职业教育的核心理念,侧重培养学生的职业能力,使之成为高素质、高技能型人才而非呆板的应试工具。
四、结语
程序设计能力的培养与训练既要倚重语义、语法规则等基础知识的积累,又要注重思维方式的养成。教师应以提高学生程序设计能力为目标,不断反思和修正计算机语言类课程的教学模式与教学方法。在实践教学环节,设计更多的真实案例和项目来提升学生实际动手能力、综合应用知识的能力,同时,尽可能多地为学生提供拓展学习的机会,鼓励学生参与教师科研项目、参加学科竞赛、考取技能证书,以增强学生的职业信心,培养其创新能力和团队合作意识。在知识积累与实践历练中,学生将逐渐成长为符合当前社会建设需要的程序设计人才,为今后的职业发展辅平道路。
作者:戚爽 单位:长春金融高等专科学校计算机系