面向创新实践能力培养的C语言程序设计实践教学改革
2014-04-25吴永芬陈卫卫李志刚李清
吴永芬 陈卫卫 李志刚 李清
摘要:作为一门重要的专业基础课程,c语言程序设计课程影响到后续多门课程的教学实施效果。由于学生的教学背景不同和个体差异,在教学过程中,我们遇到许多需要解决的问题,如学生处于不同的层次水平、工程思维训练不到位、理论教学如何支撑实践教学、教师在实践课中的角色设计、网络教学环节的构建等,为此给出“粗、精、仿、练、操”的教学理念,提出以创新实践能力为培养目标的实践教学改革方案。
关键词:创新能力;实践能力;c语言程序设计;教学改革
0 引言
创新能力的形成和发展以实践活动为基础,实践能力是创新能力形成和发展的重要前提条件。早在“十五”期间,教育部高等学校教学指导委员会在《高等学校计算机科学与技术专业发展战略研究报告暨专业规范(试行)》中提出的三个辅助建议之一便是“加强学生实践和动手能力的培养”。
为了指导实践教学,文献[1]解读计算机科学与技术专业实践教学体系与规范内容;文献进一步构建高校实践教学体系,由实验实训、实习、综合设计、社会实践、创新创业5个子系统组成;文献从工程实践角度,分析实践教育存在的问题以及如何在实践教育中突出培养学生的工程实践能力和创新能力;文献[7—8]对国际创新工程教育模式进行解读,为中国的实践教育提供新思路;文献从某门具体课程角度,探讨如何在课程中培养学生的程序设计能力和创新意识。
上述引用文献从各个角度探讨实践的意义,讨论如何通过实践教学改革提高学生的动手能力和创新能力。要将这些理念运用到具体的课程中,需要与学生的实际状况、课程特点相结合,并在具体实施过程中突出动手能力培养。c语言程序设计课程是一门重要的专业基础课程,通常也是学生进入高校接触的第一门计算机课程,笔者针对教学过程中遇到的许多需要解决的问题,提出考虑学生水平差异性的实践教学策略。
1 问题分析
1.1 学生特点分析
高等教育从“精英型”转变到“大众型”,同一年入学学生的学习能力和动手能力确实有较大差别。c语言程序设计实际教学过程中,学生之间存在较大差异,大致可分为3个层次。
第1层次学生已有某门编程语言的入门基础。由于教育背景的差异性,部分学生了解程序设计的基本思想,动手编写过程序,广泛阅读过与信息技术相关的杂志和书籍。c语言是编程入门语言,该层次学生可以通过自学快速完成语法框架的学习,迅速进入深入学习算法问题的阶段。对于该层次学生来说,根据教学内容安排的实验方案比较浅显,学生得不到思维能力训练。
第2层次学生具有一定的信息技术基础。该层次学生能够借助计算机中常用工具软件、网络平台进行信息的表示、获取和处理,解决实际学习中遇到的问题。对于该层次学生来讲,虽然没有程序设计的基础,但是兴趣使得他们在学习该门课的过程中能够做到扎实好学。
第3层次学生没有任何信息技术基础。该层次学生仅对上网、游戏等有所认知,对程序设计、计算机原理等知识不感兴趣,学习积极性不高,主动学习能力较弱,语法掌握不牢,实验进度停滞不前,需要从掌握基本知识点开始加以训练。
1.2 教学中的问题分析
与学生层次相对应,我们在实践教学中发现很多学生容易出现编程错误,并且出现错误无法自行调试解决或耗费大量时间才能解决。出错的问题可以归结为3种。
第1种是语法错误问题。出现此类问题的学生基础薄弱,主观上感觉较吃力,对语法知识点掌握不牢,编程风格较差,不能根据错误提示判断错误的内容,不会使用调试工具。
第2种问题是语义分析问题。出现此类问题的学生具有一定的语法基础,但是从语法层次过渡到语义功能编写时有困难,独立完成语义实验能力欠佳。
第3种是算法难度问题。出现此类问题的学生已经能够独立完成语义功能的编写,但是独立解决问题的能力还有所欠缺,因此我们可在语法功能题的基础上,超前加入算法题,开发学生的逻辑思维。
2 解决思路
我们针对上述问题,跟踪国内外人才培养模式和实践教学体系;针对实践环节的特点,以培养具有综合实践创新能力的人才为目标,研究实践教学改革方法,构建分层次实践教学内容体系及规范评价方法等。
2.1 “粗、精、仿、练、操”教学理念
理论与实践的关系一直是工程教育争论的焦点,不同国家处理这一争论的方式有所不同。在美国,教育界在实践与理论之间如同钟摆不断寻找平衡;而在欧洲,双元制的工程教育体系分别侧重于工程教育的理论和实践两个侧面。
目前,该课程的授课理念仍停留在语法灌输以及语义问题的分析与解答层次。理论课与实践课之间的关系不是分割独立,而是相辅相成。理论课上学习的内容需要在实践课中消化、转化及完善,实践课需要基本语法、程序框架等理论知识的支撑。我们提出的“粗、精、仿、练、操”5步教学理念具有很强的可操作性,使学生既掌握基本的知识点,又掌握学习方法。
粗,是指粗讲基本语法和程序框架,尤其对那些繁杂、比较抽象和“绕人”的内容不能一味灌输,而要适当地弱化语法,缩减单纯语法所占篇幅,将大量与语法有关的基本概念渗透在“练”“操”中,重点强调语言的应用,同时配合上机练习,让学生在理解中加强记忆,以起到事半功倍的效果。
精,就是精讲教材中的示例程序,讲解设计方法和技巧。大多数例题都有一定的代表性和渐近性。
仿,是在“精讲”的基础上多出模仿示例,让学生动手编写与示例内容和结构相近的程序,逐步“仿造”出“好”程序。
练,就是多做练习题,特别要让学生在课外作业中独立完成程序跟踪和程序填空题,对巩固语法规则和提高学生的程序思维能力大有好处。
操,即上机操作,在纸上编写的程序是“静止的”“死”程序,只有上机操作,才能让程序“活”起来,从而逐步学会如何在调试过程中找出程序中的语法和逻辑错误。只有学会在机器上编程并调试,才算真正学会编程。endprint
在实践课时有限的情况下,想锻炼好学生的动手实践能力,理论教学必须起到对实践教学的最佳支撑作用。5步教学理念将理论课和上机课有机结合起来,扩大了理论课的辐射范围,理论课和实践课的精密配合使得学生可以充分利用有限的实践教学环节。
2.2 实践教学改革思路
“听过的会忘记,看过的会记得,做过的才能理解”,理解了才能更好地应用,才能有更多的创新。关注学生的行为体验是做好实践教学改革的重要环节。为了满足不同层次学生的需要,我们设计4类实验,构建“语法题一基础题一设计题一综合题”的递进式实践内容,培养学生的自信心和求知欲,在“理论一实践一再理论一再实践”的反复过程中,促进学生学习能力的提高,深受学生欢迎。
1)实践分层次进行,体现因材施教。
我们按照学生的不同层次将实验内容设置分成语法题、基础题、设计题、综合题4部分。其中,语法实验题将基本语法知识划分成多个小问题,专门为基础较差、平常上机经常犯语法错误的学生准备。语法知识的训练可穿插在每章的基础题之前,然后再进行基础题的实验。对于第3层次学生,基础较薄弱,必须从语法题做起,然后才能做基础题,学有余力的部分学生还可以做设计题。对于第2层次学生,基础扎实的学生可以直接从基础题做起,而思维比较活跃但经常出现编程语法错误的学生,则与第3层次学生一样,必须从语法题做起。对于第1层次学生,不必循序渐进做实验,可直接从设计题做起。各层次学生对应的实验内容设置如图1所示。
2)实验分小组完成,培养团队协作能力。
实践有多种内涵,CDIO工程模式要培养的是全面发展的工程师,既熟悉技术,又懂营销,具有与人沟通和团队合作的能力,但这只是一种理念,并未说怎么做和怎么实现。为了培养学生的沟通和团队合作能力,我们可以将学生分组,让学生之间配合完成实验。
随着进度的加深,到后期做到算法题时,我们可以安排学生4人一组组队做实验。小组成员分工明确,第1步讨论需求分析,提出要实现的功能;第2步对功能进行模块划分,每名成员实现部分模块,最后有专人将模块合并并调试,另有专人写文档。在实施的过程中,学生需要及时对出现的问题进行交流讨论,寻找解决的方法。算法题可由学生自己选择,也可由教师出题,重要的是学生能够根据这些题目内容进行探索。一方面,小组成员通过交流协作,积极寻找问题的解决方案,类似于企业中项目的组织实施过程,培养学生的沟通协作能力;另一方面,算法题的解决思路由学生自己探索,从中寻找学习的乐趣,激发潜能,培养创新和自主学习能力。算法题实验分组如图2所示。
3)实践内容放人工程或生活背景中,体现学以致用。
创新与掌握知识的多寡并不一定呈正相关,但与工程实践能力的强弱一定呈正相关。对有条件的学校和学有余力的学生,应鼓励参与各种形式的课外实践和创新性题目的研究。融入工程和生活背景的实践内容,可以提高学生的学习兴趣并让学生学以致用。例如,网上流行的计算机作词通过将全宋词本进行词频排序后,随机抽取词语组合成一首宋词,意境优美,学生完成后非常有成就感;对于贪食蛇、打字母游戏等,学生都兴趣盎然,当然这需要教师予以一定的指导,因为有些内容是学生没有学习过的。另外,将蓝桥杯等程序大赛中算法设计思想体现优化策略的题目整合到实验中,并引入少量算法结构题,如链表等结构的使用,体现算法的优化效果。算法题大体可以分为3种题目:实用趣味题、优化策略题(如贪心策略、动态规划、回溯法)、程序设计竞赛题。
通过引进不同类型的题目,训练学生创新思维、自主学习和综合运用所学知识的能力。学生做完这些题目后,还可以在理论课堂上讲解演示,以提高其他学生的学习兴趣,增加学生间的互动。
4)完善评价机制。
主动实践是大学生创新实践能力培养的关键。完善的实践评价机制体现公平、公正性,有助于督促和激励学生,激发学生主动实践的潜能。为了制订有效的实践评价机制,我们设置语法题、基础题、设计题、综合题、组员打分5类分数,每类100分,这5类分数分别乘上权值后求和得到最后的总分。评价机制中每类分数的比例设置如图4所示。这里的综合题相当于附加题,大部分学生并不一定能够完成,因此加权分数较少,但教师应鼓励学生完成此部分题目,充分挖掘每个学生的潜能。
3 实验效果
近几年来,通过对C语言程序课程进行实践教学改革,我们取得了良好的教学效果。从图5所示的指挥信息系统学院二级c语言通过率可以看出,在2010—2012年,通过率从50.6%逐步上升到92%。另外,在2012年5月参加篮桥杯决赛的7人中,2名学生获全国二等奖,4名学生获全国三等奖,1名学生获全国优秀奖。另外,先后有150多名学生在国际大学生数学建模竞赛、计算机仿真大赛、中科院“中科杯”软件大赛、ACM/ICPC大赛以及校内的“卓越杯”比赛、本科生科技训练计划(SRT)项目中获奖。
4 结语
实践是实现创新最重要的源泉,是知识到能力、聪明到智慧转化的催化剂。在实践教学过程中,关注学生创新能力的培养、探索实践教学体系建设是一个长期的过程,仍有许多问题值得研究,如整个课程在学习链中与后续课程的衔接问题等。下一步我们将继续挖掘实践教学中的问题,提出更多、更有效的解决方案。
(编辑:宋文婷)endprint