程序设计基础教学改革实践与创新
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序设计基础教学改革实践与创新
摘要:本文从如何培养大学生抽象思维能力和创新能力出发,在分析理工科大学生学习程序设计课程中存在的一系列问题的基础上,阐述创新能力培养的多种教学方法改革,结合河南工业大学近五年的教学改革的实践,在程序设计基础课程中取得较满意的效果。
关键词:程序设计;教学改革;创新能力
面对世界科技日新月异、信息社会雏形初具、经济全球化浪潮汹涌而至的强有力挑战,中国教育学会会长顾明远先生认为:“教育创新是时代的要求,也是我国实施科教兴国战略的迫切要求。
”在强调“创新能力”和“素质教育”的大前提下,如何在程序设计课程中培养学生的创新能力和科学素养,是我们进行教学改革重点考虑的问题。
打好程序设计基础,对于理工科大学生来讲,是一个“看家本领”,是实实在在的利用计算机分析问题和解决问题的本领。
因此,如何改革“程序设计基础”课程,调动学生学习的积极性,提高学生的抽象思维能力、创新能力和团队合作能力,并按照计算机学科最根本特征——“构造性”和“能行性”的要求,加大抽象思维能力和逻辑思维方法的训练力度,是程序设计基础教学改革研究的重点。
1现行教学中存在的问题
1,1程序设计基础课程的定位出现偏差
目前,大多数高校的程序设计基础课程是以高级语言c语言为脉络展开的,采用语法教学为主,上机检验程序为辅的教学模式。
但是,理解语法和能够解决实际问题,两者仍旧不能划等号。
过于注重语法,没有突出程序设计的基本概念、思路和方法,忽视学生程序思维能力的培养,难以调动学生学习的积极性,严重影响后继课程c++与面向对象程序设计、数据结构等课程的学习。
1,2传统教学形式与多媒体教学的冲突
传统的教学形式采取的是黑板教学,知识点和例题的讲解都在黑板上进行,这可以较好地与学生互动,但存在信息量小、不能动态演示程序的问题;多媒体
教学以信息量大、动态演示程序为优势,但也存在教师与学生交互少的问题,学生被动接受大量信息反而难以掌握重点和难点。
1,3验证型实验产生的“眼高手低”
目前,程序设计课程的实验普遍为“验证型”实验,即通过一次实验验证一两个知识点。
这种“验证型”实验虽然对学生理解教学的知识点和掌握一定的编程技能有益,但也有明显的缺陷。
首先,“验证型”实验之间的联系不强,这就导致学生在做完一个学期的十几个实验之后,依然不知道如何去编制一个完整实用的程序;其次,“验证型”实验的实验结果往往是唯一的,如果结果与预期不一致,就意味着学生的程序有误。
这种实验方法对培养学生的创新能力不但没有益处,反而会扼杀学生的学习兴趣与主观能动性;再次,这种相互独立的实验很难保证实验的系统性。
1,4被动学习产生的消极情绪
由于知识点繁多而授课学时有限,大多数教师在讲授时都是满堂灌,没有留给学生必要的课堂思考和练习的时间,学生课下编程遇到问题时无所适从,从而产生畏难心理和消极情绪,对于后面较难的知识点,例如指针、结构体和文件部分,部分学生甚至采取放弃的态度。
1,5传统的笔试带来的副作用
现在采取的考核方式大多为“平时表现+作业+期末考试”的形式,而期末考试是评价学生能力的主要方面。
大多数高校的考试方式采取传统的笔试,有些学校甚至按照计算机二级考试要求出期末试卷,它给学生以错误的暗示,使其认为语法知识的学习比算法的制定更主要,另外,它也没有达到真正考核学生实际编程能力的要求。
2教学改革中采取的对策
2,1修改计算机专业2009年的培养计划,正确定位程序设计基础课程
2008年项目组成员通过对东南大学、南京邮电大学、南京理工大学、北京
理工大学等高校的调研,认真修改计算机专业2009年的培养计划,将高级语言程序设计课程修改为程序设计基础,设定在大一上、下两个学期进行教授,并在学时上作了大的调整,上学期理论教学40学时,实践教学14学时,主要培养学生的计算思维能力,依托计算机编程环境,对所要求解的问题进行分析研究,将其抽象成数学模型,写出计算步骤,编程加以实现。
大一下学期,将实践学时增加到40学时,而理论教学学时为14学时,通过一些综合案例的分析和大量综合问题的解决,提高学生知识运用的综合性、灵活性与探索性,培养学生的编程能力和创新能力。
在教学内容上,打破先讲语法后编程的常规教学,重视算法的讲解,以实例为引导,帮助学生分析问题并写出算法步骤,然后再基于语法规则进行编写代码。
语法知识贯穿与实例中讲解,以常用语法知识在具体程序中应用为前提,不要求学生死记硬背。
实践表明,这种“重视算法,不过分强调语法”的教学策略,增强了学生分析问题、解决问题的能力,也调动了学生编程的积极性。
在教学过程中,注重培养学生养成良好的编程习惯,强调程序的可读性、规范性,要求关键变量加注释,函数功能有描述,学会调试程序,组织好的测试数据,能够分析和判断运行结果的正确与否。
在使用编译开发环境时,除了使用推荐的TC++3.0,还鼓励大家使用VC++6.0。
在VC++6.0编译开发环境中编译和运行一个c程序相对简单,而且更方便调试程序,学生可以跟踪变量,随时看到数值的变化,不断地用所学知识校正调试时遇到的问题,还可以向教师进行实时的教学反馈。
2,2教学方法的改革
在教学形式上,采取黑板教学与多媒体教学结合。
学校根据教师提出的意见,整改所有的多媒体教室,将屏幕统一移到讲台的一侧,露出一半的黑板空间。
这样,重点、难点在黑板上板书讲解,基本内容和实例演示用多媒体,既避免了黑板教学信息量小和无法动态演示程序的问题,也解决了多媒体教学中交互少和被动灌输大量信息的问题。
在教学方法上,采取由浅入深的启发式教学和形象教学。
例如,在讲解数组前,以草原来贵客,主人要从上千头羊中选出最肥的那头羊为例,引出数组的概念:在数组的应用上,先以学生熟悉的求几个学生平均分的实例入手,然后逐渐增加难度,讲解Fibonaeei数列、冒泡排序等难度较大的例题。
在讲解冒泡排序算法时,找出5个高低不等的学生,按照排序思想实际操作一遍,让学生更直观、更形象地看到排序过程,加深学生对算法的理解。
在教学中对于难以理解的知识点进行形象举例,增强学生对知识点的理解。
例如,在学习选择结构if.else语句的时候,以这样的例子帮助学生理解:if(课表上有课)去教室上课;else去操场锻炼;用他们日常生活中熟悉的例子来讲解,可以很好的帮助他们理解知识点,并且也间接地提高他们解决实际问题的能力。
建立河南省精品课程c语言程序设计课程教学网站进行辅助教学(http://172.18.254.252/s2008/cyy/index.aspx),大大延伸教学互动的时间与空间。
在网站中学生可以下载教学课件和学习资料进行自学,还可以通过BBS交流平台向任课教师提问,老师在网上及时进行解答,也可以通过在线测试模块随时检查知识的掌握情况。
2,3实践教学的改革
程序设计基础是一门实践性很强的课程,我们根据教学过程制定实验计划,多选取设计型实践,少选取验证型内容,锻炼学生分析问题、解决问题的能力;实验内容与实际紧密联系,调动学生解决问题的兴趣,例如二维数组的实验中,让学生解决多个售货员卖多种商品,统计每个售货员的营业额和每种商品的销售额。
每个实验都要求学生在实践课之前进行分析、设计算法、编写代码,在实践课中进行调试,教师只是引导和辅导作用。
课程设计是一个重要的实践环节,是学生从理论学习走向解决实际问题的一个关键性环节。
在课程后期的一至两周,其他的课程都暂停,集中时间和精力进行课程设计。
一般选择与实际联系紧密的课题,例如,学生成绩查询系统、图书借阅系统或小型超市管理系统等。
根据学生的基础和掌握知识的情况进行分组,2~3人一组,各自承担不同的设计部分,充分发挥每个学生的优势,有利于培养学生的团队意识和创新精神。
最后通过答辩和检查报告来评价学生的设计,即时纠正一些错误,给出课程设计成绩。
课程设计使学生经历文献查询、程序模块设计、程序流程制订、源代码编制、上机调试、实验数据的整理与分析及论文撰写等一系列的训练,开阔了他们的视野,扩大了知识面,培养了动手创新能力,是提高教学质量的一条好途径。
2,4培养学生的自学能力和创新思维,创设因材施教的探索空间
爱因斯坦说:“兴趣是最好的老师,热爱是永恒的动力”。
顾明远先生也提到:“只有让受教育者自由、主动地进行自我发展,它们身上内隐的创造性素质才可能外显出来。
当然,不是说学生不需要教师给他传授知识,教他能力,知识和能力都是学生创造的基础,但是更重要的是通过教育教学促进学生主动地发展,发挥他内在的创造潜力。
”学习任何一门程序设计语言的捷径就是用它来编程,因此,学生的自主学习在程序设计课程中是至关重要的,知识点的掌握,编程能力的提高,要求学生在课下必须进行大量的编程练习。
因此,在第一堂课就引导他们动手编写人生中的第一个程序,消除他们的畏难之心,并给他们讲解程序设计过程中有趣的科学故事,演示一些软件和游戏,甚至是往届学生课程设计的作品,激发他们学习的兴趣;成立程序设计群,鼓励大家在群中进行问题讨论、算法优化、群策群力,培养大家的合作意识和创新思维。
鼓励有能力的学生参加ACM/ICPC竞赛——世界上最具权威性的大学生程序设计竞赛。
学生通过参加ACM/ICPC竞赛或网上ACM题库的在线练习,深深体会到只有对具体题目的分析和实践,才能真正掌握数学的使用和算法的应用,并在不断的练习中增加编程经验和技巧,提高对时间复杂度的感性认识,优化时间的分配,加强团队的配合。
每个学期挑选3~5名有能力的学生参与到教师的科研中,从一年级开始培养他们的创新思维和动手能力,实践证明,这批学生的解决实际问题能力和科研能力相对于其他学生要强,对他们的就业或考研都有很大的帮助。
2,5进行教材改革
长久以来,c语言的教材大多数都是采用我国著名计算机基础教育家谭浩强先生编写的《c程序设计》,该书的最大特点就是知识点讲解得很详细,非常适合学生自学,但是也容易造成一个误区,就是过分追求语法知识的学习,而忽视了算法的积累。
针对“重视算法,不过分强调语法”的教学策略,我们大胆进行教材改革,选用吴文虎先生编写的国家精品课程教材——《程序设计基础(第2版)》,该书分为几个部分:变量、代数与计算机解题,逻辑思维与计算机解题,数组组织、筛选与排序问题的解题思路,函数、递推与递归,指针,流与文件,贪心法,动态规划,链表,二叉树,蒙特卡罗法。
重点放在问题的分析,数学模型的建立,最后理出算法,并编码实现。
另外,推荐优秀的外文原版教材《PROGRAM-MING IN ANSI C(THIRD EDITION)》作为辅导教材,让学生更准确地理解课程内容。
这部教材语言描述简单易懂,知识点讲解简练到位,实例贴近生活。
同时,它也可以培养学生阅读英语资料的习惯,为参加ACM-ICPC等国际赛事的学生助一臂之力,为其将来的学习和科研打下坚实基础。
利用外文原版教材与“双语教学”产生了一个意外的联系。
笔者于2009年下学期进行C语言的双语教学尝试,探索利用双语教学和优秀的外文原版教材引领教学效果改革的新途径。
2,6考核方式的改革
为了提高学生分析问题和实际编程能力,我们将传统的考核方式“平时表现+作业+期末考试”改革为“平时表现+大作业+上机考试”,比例分别是2:4:4。
平时一般每三周布置一个大作业,促进学生将所学的知识点综合应用,并为期末的上机考试积累经验。
为了客观地反映教学质量,采取教考分离、集体阅卷的形式。
实践表明,这种考核方式,重视平时动手能力的培养,更客观地反映学生的学习情况,有助于提高学生学习的积极性。
3结语
从2005年开始我们着手对程序设计基础课程进行改革,包括3次修改课程教学大纲,分别修订2006年和2009年的培养计划,2006年建设河南工业大学精品课程c语言程序设计,2008年建设河南省精品课程C语言程序设计。
经过近五年的改革实践,学生分析问题、解决实际问题的能力逐年提高,学习的主动性和创造性都得到了极大地调动,学生对该课程连续三年评教成绩分别为91.59、96.68和98.24,这表明学生对课程改革是满意的。
至于今年的双语教学和教材改革的成效,还需要时间来证明。