赵红丹+王希杰+于江德
摘要:针对程序设计基础在教学过程中存在的问题,在分析了课程和教学对象的基础上,确立了基于“强基础、重实践、激创新”的教学理念,提出了一套理论课程和实践课程的改革方案,以提高课程的教学质量,增强学生分析问题和解决问题的能力,并在实际中取得了较好的教学效果。
关键词:程序设计基础; 教学理念; 教学改革; 课程体系建设
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2016)31-0148-03
1 引言
《程序设计基础》是计算机相关专业的基础必修课,旨在培养学生基本程序设计思想和程序设计能力。它是一门理论与实践相结合、具有很强的实践性的课程,同时是后续课程《数据结构》、《面向对象程序设计》、《操作系统》、《计算机网络》等专业课的前导课,该课程掌握的好坏直接影响到许多后继课程的学习。
针对程序设计基础课程的教学改革已有一些研究成果,文献1结合程序设计基础课程教学改革与实践经验,提出一种新的教学模式;文献2针对"C语言程序设计"课程传统教学模式中存在的问题,并结合学校对该课程,改革的实际情况,探讨新的C语言教学模式;文献3提出了一种新的课程改革思路以提高教学质量和教学效果;文献4就如何开展综合性实践性实验做了探讨;文献5探讨了一种教学改革的思想和方法;文献6对C语言中的教与学方法改革进行了探讨。针对以往教学过程中存在的问题,经过认真的分析、总结,并参考了国内重点院校和同等院校的好的经验,结合安阳师范学院计算机与信息工程学院的实际情况,提出了“强基础、重实践、激创新”的教学理念,并应用于教学中。
2 课程分析
2.1课程地位
C语言是一种常用的软件设计语言,同时是其它面向对象程序设计语言的基础,熟练掌握了C语言,那么其他语言就触类旁通,学习起来也比较容易,它是计算机专业课程和相關语言类课程的基础,是和学生未来的发展息息相关的一门重要的专业基础课程。无论是准备考研的学生还是准备就业的学生,只要能够很好的掌握这门课程,就可以为以后的发展打下良好的基础。因此可以毫不夸张地说,C语言掌握的程度可以直接影响学生四年的学习,甚至对学生毕业以后的深造和发展也会有着深远的影响,该课程在本学科体系中的作用由此可见一斑。
2.2存在的问题
本课程所针对的教学对象是大学一年级的新生,新生入学以后,其学习方法和思维模式还停留在中学阶段,学习主动性比较差。且由于在中学阶段接触计算机知识比较少,造成学生在接触计算机知识比较少,程序设计能力几乎为0,结果造成对于课堂上老师讲述的基本语法和编程思想都是被动地接受,对于教材上的习题或者验证性的实验,掌握相对较好,但是对于要解决的实际问题,不知道如何下手,创新能力更无从谈起,导致在以后的教学过程中,不断有学生因畏难、缺乏兴趣、被动学习而掉队,这就影响了后续相关课程深入学习。
2.3课程目标
C语言的课程目标是以程序设计方法为主线,以语法和程序结构为核心,培养学生的基本编程能力,并不断提高学习兴趣,变应试教学为应用教学。在教学过程中,教学目标分为以下四个方面。
知识目标:在教学过程中,注重培养学生分析问题的能力,解决问题时,会定义合适的数据类型或数据结构存储数据,并且能够选择合适的控制结构并写成一个独立的功能函数。从而能够掌握基本语法和三种基本控制结构,掌握数组和函数的运用,掌握指针和结构体类型的应用。
技能目标:学生会编写简单的程序,能够积累一定的算法,如枚举法、贪心法、选择排序等常用的算法,初步具有算法分析和设计能力。在实验和实践过程中充分利用开放性教学资源与实验平台,提高学生的自主学习能力。
素质目标:通过学习,能够形成独立思考、具有解决实际问题的能力;可将学生分为若干个小组,课堂讨论和课程实践均以小组为单位,逐步培养学生的团队合作意识,达到同学之间互相帮助、共同学习和进步的目的。
情感目标:希望同学们能在自主和谐的气氛中学习,能够在学习过程中感受到乐趣,激发学生们的学习兴趣。采取的主要措施有:采用灵活的教学方法,吸引学生的注意。在授课中注意和实际问题的结合,激发学生的学习兴趣。组织一批比较有趣好玩的程序,比如俄罗斯方块、打字练习程序等,由老师完成其中的大部分内容,学生只有写出其中的一段代码,即可使程序运行,从而更好的激发学生自主学习编程的兴趣。
3教学理念
为了达到以上的教学目标,针对以往教学中存在的问题,结合安阳师范学院的实际情况,经过认真的分析、总结和研究,并参考了国内重点院校和同等院校的好的经验,确立了基于“强基础、重实践、激创新”的教学理念,改革了C语言的理论教学和实践教学。
1)“强基础”;改革传统的理论教学模式,分学期进行,前期在讲课过程中淡化语法,偏重基本知识点和基本编程能力的培养,并强调算法分析和程序的调试,后期偏重应用知识解决问题,从而帮助学生形成正确的程序设计思维方式。
2)“重实践”;改革传统的只有实验的教学模式,在教学过程中引入实践课,采用实验和实践并行的方式。目的可以提升学生的动手能力,并在课程建设过程中建立一些课程资源平台,如引入ACM在线评测平台、建立课程网站等,激发学生的学习竞争意识。
3)“激创新”;在实践的基础上,拓展出问题规模较大的一些问题,并引入教师的一些科研子课题,让感兴趣的学生参与其中,学院每年都会有一些大学生创新基金项目,让有想法的学生申请,目的是为了培养学生的团队合作精神和创新能力的。
4课程改革
4.1教材建设
本课程所选用的教材是由清华大学出版社出版,由谭浩强主编的《C语言程序设计》(第三版),之所以选择这本教材,是因为该教材比较符合初学者的特点以及认知规律,在内容选择,章节层次结构等方面的安排做得较好,同时作者将难点分散到各个章节中,例题也较为丰富,学生学习起来通俗易懂。且此教材以应用为目的和出发点,具有很强的实用性。这本教材也是目前国内各高等院校选用率最高的教材之一,目前国内的很多考试都是指定此教材作为参考书的。
教材从整体上可以分为两大部分,其中的一到九章为第一部分,是C语言的语法基础,偏重于基本知识的掌握和基本编程能力的培养;十到十三章为第二部分,是应用基础,偏重于应用所学的基础知识来解决实际编程中的问题。其中语法基础中的一到三章是基本语法,四到七章为程序控制基础,八、九两章为程序的组织方法。
4.2课程体系建设
该课程教学内容上包含有理论教学和实践教学两大部分,在理论教学中,主要内容包含有基本的语法知识,三种基本结构的使用,以及数组、函数、指针和结构体的应用;在理论教学过程中,注重把握重点,分散难点。实践教学分为实验教学和实践教学两部分。在实验教学中,主要注重培养学生基本理论知识的应用和基本编程能力的提高;在实践教学中,侧重用理论解决实际问题,培养学生的综合运用能力。为了达到“强理论、重实践”的教学目标,在课程的开设模式上,本课程分为两学期进行开设。大学一年级第一学期为《C语言程序设计基础》,主要学习教材中的第一到九章,偏重于基本知识和基本编程能力的培养,第二学期为《程序设计基础课程设计》,主要学习指针、结构体、链表、文件的知识点,偏重于应用知识解决实际问题,同时为后续课程打下良好的基础。为了达到以上目的,两个学期采用不同的教学模式:
第一学期,4+2模式;每周4节理论课、2节实验课。在具体教学内容的处理上,基本语法要少讲、精讲,而控制结构和程序组织为重点,要多讲多练。实验课程主要是包含有基础实验,综合实验,基础实验包含验证性的实验、程序的跟踪调试、设计实现等;通过实验,一方面加强学生对程序组织结构、控制语句的掌握和理解,另一方面促进学生对算法的认识,掌握如何调试程序,提高学生的编程能力。
第二学期,2+2+2模式;每周两节理论课、两节实验课和两节实践课。在第一学期的基础上,加强实践,注重应用理论知识解决实际问题的应用能力的培养。第二学期的实验安排和实践主要和后续课程《数据结构》中的内容相结合,为学生后期学习《数据结构》做好铺垫,打好基础;实践课分为两个阶段,前10周主要结合《河南省大学生程序设计大赛》的比赛形式,给出各种具体的问题,要求学生利用学过的知识自主解决,每周一个实践题目。后8周给出一个具体的比较大的综合性的题目,然后根据学生的程度对学生进行分组,每组3~5人,在教师的指导下,合作完成一个复杂的问题,整个实践课程的安排主要侧重于应用能力的培养,让学生初步具有大型程序设计的思想,并培养学生的团队合作精神,为以后学习其他面向对象的编程语言打好基礎。同时实践课程中突出了对学生创新能力的培养,强化“激创新”的理念。
4.3教学方法的改革
针对教学对象的特点和达到的教学目标,采用了不同的教学方法应用于不同的教学内容中,在所选用的教学方法中,主要有以下几种:
案例导入法:把要讲授的知识点与实践案例相结合,揭示知识点和实际问题的联系,加深学生对知识点的印象,使得学生体会到知识的实用性,提高学习兴趣。
任务驱动法:通过理解问题,提出明确任务,以该任务为目标,讲授知识点;在引导学生解决的任务的过程中,要注意突出重点、分散难点。
对比教学法:将新知识和旧知识作对比,展示其异同;在具体的使用中,可以应用学生学过的比较熟悉的知识,或是前边章节中学过的学生掌握的比较好的知识点来和新的知识点进行对比,加深学生对所学习的新知识的理解。
讨论教学法:在已学习的知识的基础上,对已解决的问题进行扩充,提出问题新的问题,引导学生进行讨论或是要求学生自己讨论并加以解决,使学生加深对所学知识理解。
下面是针对程序设计基础中数组的定义与应用这一章节进行的教学过程的设计,在这一节的教学内容中,融入了多种教学方法:
数组是学生学习的C语言中的第一种复杂的数据类型结构,主要作用是用来做批量数据的处理,同时数组也是指针和动态分配内存的基础,在本节的教学过程中,主要分为以后6个环节:创设情景->观察归纳->解决任务->讨论探究->即时训练->总结反思。
1) 创设情景:为了避免直接介绍数组这样一种抽象的结构,使学生容易理解,在引入的过程中,用与学生紧密相关的奖学金评定问题,进行进入。
2) 观察归纳:通过对问题归纳分析,提出任务:如何在计算机内部存放学生成绩,以及如何对存放好的学生成绩进行排序;在讲述的过程中采用对比分析法,并借助于多媒体教学设备呈现。
3) 解决任务:对任务的分析,提出解决任务的方法为使用数组:知识讲授:主要介绍数组的定义,以及数组元素的引用,在讲授中解决任务,在讲授过程中注意把握重点,知识点讲授完毕,加强应用,解决提出的第二个任务,完成排序,进行算法分析,解决观察归纳过程中提出的学生成绩排序问题,在讲排序方法的过程中,采用形象的排序过程进行动画演示,使同学们可以在和谐的气氛中掌握整个排序方法。
4) 讨论探究:学生们对任务继续进行讨论,是否还有一些其他的解法。
5) 即时训练:提出新任务,如果想在已经排好序的学生成绩中插入一个新的学生成绩,使得数组还是有序的,应该如何做?
6) 总结反思:老师对学生所完成的任务进行点评,指出其容易错误的地方,同时,学生进行自评。
5考核方式改革
传统的课程考核方式主要是笔试环节,对于程序设计这样一门实践性非常强的课程,显得非常太合理,学院针对这种情况,改革了课程考核方式,对于第一学期,考核主要分以下三个部分:平时成绩占总成绩的20%,主要考查学生的出勤、作业、课堂表现等;实验环节占总成绩的20%,主要考查学生的程序调试能力、实验报告等;期末考试采用机试,占总成绩的60%,其中机试题采用安阳师范学院ACM在线评测系统,由学院老师出题,给出8到机试题目。按照难度给出分值。
第二学期增加课外实践,考核主要分为平时成绩20%和实验成绩20%以及期末成绩30%和课外实践成绩30%,课外实践主要考查学生的团队协作能力,在学期结束时单独考核,采用答辩的方式,分为以下几个部分:演示、答辩、创新、团队、报告编写等,根绝答辩的情况打分。课程评价体系中和以前的评价体系相比,最大的不同之处在于突出了对实践部分的考核,以考核为指挥棒,引导学生主动加强动手能力的培养。
6教学资源建设
学院主要建立了程序设计基础(C语言)精品网站,在网站中包括有课程大纲、课件、习题资料、实验设计指导等,并引入了教学辅助平台ACM在线评测平台,学生在学院的机房或者是外网都可以通过学号登陆练习一些基本的ACM大赛题目。结合这些结合ACM竞赛,可以培养主动式学习模式,激发兴趣,同学们在登录网站时也可以看到周围的同学的做题情况以及自己的排名,在学生中间可以建立竞争机制。
7结语
通过分析程序设计基础的课程特点和教学对象的特点,在课程的建设过程中,提出以上的教改思路,并将以上教改思路在学生的教学过程逐步的加以实践。从教学效果看,教学质量确实有了很大的提高,主要表现在学生整体素质、水平的提高和后续课程中老师的反馈。
参考文献:
[1] 李军,曹记东,林勇,等.程序设计基础课教学内容及模式改革[J].计算机教育,2013(8):34-37.
[2] 储岳中,秦锋,刘宏申.“C语言程序设计”理论与实践一体化教学的几点实践[J].计算机教育,2012(12):22-25.
[3] 于延,崔艳玲.“程序设计基础”课程改革实践[J].计算机教育,2012(20):47-49.
[4] 刘丹,刘德山.C语言程序设计课程综合性和设计性实验研究[J].计算机教育,2012(9):75-77.
[5] 张长海,陈娟.以“程序设计”为主线、以“案例”为驱动的程序设计教学改革[J].计算机教育,2008(8):141-143.
[6] 裴霞.C语言课程的教与学改革初探[J].赤峰学院学报:自然科学版.2014(13):263-264.