论文部分内容阅读
摘 要:以C语言的教学为例,分析了程序设计类课程授课存在的相关问题,从理论教学和实践教学两方面探讨了如何在程序设计课程的教学过程中培养学生的程序设计思维,进而提高学生的分析和解决问题的能力。
关键词:程序设计;思维模式;培养与实践;C语言
中图分类号:TP314,G712
文献标识码:A
1. 程序设计课程的教学和学习现状
C语言是计算机类、信息科学类、电气类等相关专业的基础课程,对数据结构、单片机、微机原理等后续相关课程的学习起着非常重要的作用。然而,在C语言乃至所有程序设计类课程的教学过程中,许多学生由于缺乏必要的程序设计思维能力,对程序设计类课程缺乏兴趣,甚至有些同学在课程结束后,也写不出一个像模像样的程序。程序设计课程的教学似乎陷入了一个误区。本文首先以C语言的教学为例,分析现阶段程序设计类课程教学过程中存在的相关问题。
(1)学生对课程的认识不够。现在高校为了压缩教学时间,通常将C语言安排在大一上学期开设,课时通常在48课时至64课时。从开设时间上看,有些仓促。学生处于大学刚入学的阶段,对大学阶段的学习、生活都有一个磨合的过程。同时,摆脱了高中那种紧张而又枯燥的学习阶段,对大学中的一切感觉新鲜和好奇。许多学生对大学的学习还停留在“60分万岁”的那种认知上,或者从高年级学生得到的许多错误的认识,这些错误的认识导致了许多同学对程序设计课程的认识和重视程度不够,许多学生仍然坚持高中的学习方法,或者幻想着采取考前突击的方法通过考核。如果授课教师在授课过程中再不注意教学方法,将会导致学生的发展离大学的培养目标愈来愈远。
(2)许多教师不注重教学方法和教学手段。现在大学的许多课程采取多媒体教学,C语言的教学也不例外。利用多媒体手段进行教学,本意是为学生提供图、文、声并茂的多媒体资源,促进课程的教学。然而,现在许多教师以课时不足或者科研压力大为借口,备课投入的精力不足,或者根本不重视课程的教学工作。在授课过程中过度地依赖制作的课件,甚至个别老师的课件都是从其他教师那里拷贝过来直接使用,上课经常出现卡壳的现象,根本不在意学生的感受。许多教师在授课过程中,照本宣科,过于强调程序设计语言的语法,忽略了对学生程序设计能力的培养。
(3)对实践教学的重视程度不够。C语言是一门实践性很强的课程,需要学生通过大量的编程练习掌握程序设计的基本思路。然而,许多教师在实践教学过程中放取“放羊”的教学方法,布置几个题目,让学生自由练习,导致学生对实践能力的锻炼非常盲目,对编程完全失去了兴趣,达不到课程制定的实践教学目标。
2. 对理论教学模式的改革与探索
针对程序设计类课程中出现的相关问题,作者所在的软件工程系在学院领导的大力支持下,有效利用现有的教学资源,对程序设计课程的理论教学模式进行了改革,并将其付诸实践,在软件工程系的程序设计类课程的教学中,取得了较好的效果。
(1)采取教学团队制。软件工程系集中优秀教师,成立了程序设计核心课程教学团队,负责所在学院程序设计类课程的建设。团队负责人组织教师集体备课、听课,共同设计教学案例、组织教学。考虑到程序设计的课程具有较强的实践性,不同的教师在教学过程中会设计不同的教学案例,采取不同的教学方法,因而团队定期组织相关教师进行集体备课,设计更好的案例、设计更好的教学方法。在集体备课中,大家各抒己见,对如何讲授相关的知识点进行深入的探讨,共同设计合理的教学案例。同时,组织相关教师集体听课,学习有丰富教学经验老教师的教学方法,帮助年轻教师尽快提高,从而提升整个教学团队的教学质量。
(2)除Java、C#等面向对象的程序设计课程外,取消C语言等其他程序设计课程的多媒体授课,将教学重心从语法知识的讲授转移到程序设计能力的培养。这样处理有两种考虑:考虑到现有的以多媒体为主的教学方法容易让教师陷入讲授语法知识的误区,忽视对学生程序设计能力的培养,采取板书授课,可以让教师按照认知的规律从事教学,培养学生的逻辑思维能力和程序设计能力。同时,可以督促教师把更多的精力投入到教学中,精心设计和组织教学案例,改进和提高教学方法,努力提高自身的教学水平。
(3)采取项目引领式教学,精心组织教学案例,提高学生的学习兴趣。许多同学感觉C语言很枯燥,不知道学习C语言后有什么用,可以解决什么样的问题。甚至有的同学在学习完C语言后,也不知道这门课程到底有什么用处。有的学生甚至认为,程序设计的有些题目利用基本的数学知识就可以解决,根本不需要编程实现。针对这种情况,课程教学团队采取了项目引领的教学模式,通过从实际的项目中、或者相关的程序设计大赛中抽出一些典型的问题,或者直接面向具体的应用问题,要求学生编程解决。例如,在程序的三种基本结构中,设计了如下的基本问题,要求学生通过编程实现。
小明的爷爷很怀旧,冬天来了他还是要自己做煤球。并且爷爷把煤球堆放得十分整齐有规律:最上边一层只有1个煤球。第二层4个煤球摆成正方形,再下面9个煤球也是摆成正方形。总之,第 n 层就是边长为 n 的正方形。这样的结构既通风又稳固。小明数了数,一共有30层,请你帮助计算一下,一共有多少个煤球?
通过在教学中引入这样的实际问题,可以进一步提高学生的兴趣,也必将提高学生分析问题和解决问题的能力。
(4)模块化教学、阶段性考核。按照C语言的知识体系,将C语言的教学分成了六个基本模块,并在相应的模块结束后进行阶段性的考核,检验教学成果。本文对C语言的知识体系划分以及不同阶段考核的要求如表1所示。通常在模块化教学前,首先布置阶段性考核的综合性题目,要求学生独立完成。在阶段性考核的过程中,首先通过两三个小程序对本模块的知识点进行巩固,并对综合性题目采取小组答辩的方式进行,重点考察学生程序设计的思维能力和解决实际问题的能力。 3. 对实践教学模式的改革和探索
为了切实提高学生的编程能力,作者所有的程序设计教学团队要求抛弃以前的实践教学模式,在实践教学中切实发挥教师的主导作用,采取“学—练—赛”的模式,通过兴趣小组、组织学生参加竞赛等方式,真正训练学生的程序设计思维,切实提高学生的编程能力。具体做法总结如下。
(1)将传统的教学模式移植到实践教学中,发挥教师在实践教学中的主导作用,切实提高学生的编程能力。在C语言的实践教学中,在理论课结束时,作者所在的教学团队会首先布置一下实验的题目,要求学生思考解题的思路。在实践教学时,教师会首先领着学生做几个类似的题目,告诉学生在这个程序中要注意什么问题;然后会让学生试着写程序。在实验课的最后阶段,通过小型的程序设计比赛,激发学生的学习动力,提高学生的学习兴趣。
(2)组织程序设计兴趣小组,有效地组织学生在业余时间练习程序设计。国家信息学奥林匹克竞赛中国队总教练、清华大学教授吴文虎说,学习计算机不是听会的,也不是看会的,而是课下在实践环节中实实在在的上机练会的。因此,有效地利用课余时间编写程序,对提高学生的编程能力至关重要。在C语言的教学中,课程教学团队通过兴趣小组有效地解决这一问题。在授课过程中通过定期为兴趣小组布置相关的程序设计题目,可以有效增强学生的团队合作能力,提高学生的学习兴趣。
(3)丰富学生的第二课堂,组织学生参加相关的比赛,进一步检验教学成果。为了培养学生对程序设计的兴趣,程序设计教学团队利用周末的时间组织小型的程序设计比赛,鼓励不同年级的学生参加。通过这样的比赛,既提高了学生兴趣,也为参加ACM程序设计大赛、蓝桥杯程序设计大赛等专业程序设计比赛选拔后台人才。
4. 保障措施
为了保证程序设计相关课程的教学效果,提高学生的应用实践能力,课程组得到了所在的学院和学校的大力支持,主要有以下几方面。
(1)要求学生必须有创新学分。在培养方案中,要求学生毕业时必须拥有4个创新学生,这些创新学分可以通过参加教师的创新实验室或者参加相关的比赛获取。这为程序设计团队组织学生参加相应的程序设计大赛提供了政策上的保障。
(2)执行本科生导师制。学院为能力强的学生配备导师,这里的导师可以是学院的年轻教师,也可以是能力较强的、被学院认可的高年级学生。这为程序设计兴趣小组的运行提供了保障。为高年级学生安排教师作为导师,为低年级同学安排高年级学生作为导师,可以使程序设计的兴趣小组持续地发展。
(3)成立创新实验室。课程组所在的学院为了鼓励学生提高自身的应用实践能力和创新能力,组织相关教师成立了创新实验室。在程序设计创新实验室里,学生有更多的机会参与教师的实际课题,近距离体验或者参加ACM程序设计大赛、蓝桥杯程序设计大赛、软件设计大赛等相关比赛,提高对程序设计的兴趣。
5. 成果
通过持续三年的实践,软件工程系的学生实践能力有了长足的进步,专业建设和质量工程建设也取得了丰富的成果。《高级语言程序设计》、《面向对象的程序设计》、《数据结构》、《数据库原理与应用》等课程获山东省精品课程立项,《离散数学》、《Java程序设计》、《C#程序设计》获校精品课程立项。软件工程专业先后与HP公司、东软集团、NEC(济南)等相关专业软件公司成立软件人才合作培养基地。同时,软件工程系的相关教师将相关的教学材料整理,和清华大学出版社合作,先后出版了《C语言程序设计》、《基于案例教学的C++程序设计》、《C#.net程序设计》等有特色的教材。同时,软件工程的相关学生积极参加ACM程序设计大赛、蓝桥杯程序设计大赛等相关比赛,在省级比赛和全国性的比赛中都取得了优异的成绩。通过程序设计思维的培养训练,软件工程的大部分学生编程能力得到了很大的提升,软件工程专业的就业率稳居学校工科专业的前列。
6. 结语
本文以C语言的教学为例,对程序设计类课程的教学现状进行了分析,并从理论教学和实践教学两个方面对程序设计思维能力的培养进行了探索和实践,取得了阶段性的成果。在下一阶段的教学工作中,将重点探索基于校企合作平台的程序设计能力培养,借助校企合作平台提升学生的工程实践能力。
参考文献:
[1] 宋丽华,雷鹏,张小峰等.C语言程序设计[M],清华大学出版社,2014年
[2] 雷鹏,宋丽华,张小峰等.基于案例的C++教学[M],清华大学出版社,2014年
[3] 刘莉,李梅,姜志坚.C#.net程序设计[M],清华大学出版社,2014年
[4] 郭晓俐,汤克明.研究性教学模式在 C 语言教学中的实施[J],计算机教育,2010,2:135-137
关键词:程序设计;思维模式;培养与实践;C语言
中图分类号:TP314,G712
文献标识码:A
1. 程序设计课程的教学和学习现状
C语言是计算机类、信息科学类、电气类等相关专业的基础课程,对数据结构、单片机、微机原理等后续相关课程的学习起着非常重要的作用。然而,在C语言乃至所有程序设计类课程的教学过程中,许多学生由于缺乏必要的程序设计思维能力,对程序设计类课程缺乏兴趣,甚至有些同学在课程结束后,也写不出一个像模像样的程序。程序设计课程的教学似乎陷入了一个误区。本文首先以C语言的教学为例,分析现阶段程序设计类课程教学过程中存在的相关问题。
(1)学生对课程的认识不够。现在高校为了压缩教学时间,通常将C语言安排在大一上学期开设,课时通常在48课时至64课时。从开设时间上看,有些仓促。学生处于大学刚入学的阶段,对大学阶段的学习、生活都有一个磨合的过程。同时,摆脱了高中那种紧张而又枯燥的学习阶段,对大学中的一切感觉新鲜和好奇。许多学生对大学的学习还停留在“60分万岁”的那种认知上,或者从高年级学生得到的许多错误的认识,这些错误的认识导致了许多同学对程序设计课程的认识和重视程度不够,许多学生仍然坚持高中的学习方法,或者幻想着采取考前突击的方法通过考核。如果授课教师在授课过程中再不注意教学方法,将会导致学生的发展离大学的培养目标愈来愈远。
(2)许多教师不注重教学方法和教学手段。现在大学的许多课程采取多媒体教学,C语言的教学也不例外。利用多媒体手段进行教学,本意是为学生提供图、文、声并茂的多媒体资源,促进课程的教学。然而,现在许多教师以课时不足或者科研压力大为借口,备课投入的精力不足,或者根本不重视课程的教学工作。在授课过程中过度地依赖制作的课件,甚至个别老师的课件都是从其他教师那里拷贝过来直接使用,上课经常出现卡壳的现象,根本不在意学生的感受。许多教师在授课过程中,照本宣科,过于强调程序设计语言的语法,忽略了对学生程序设计能力的培养。
(3)对实践教学的重视程度不够。C语言是一门实践性很强的课程,需要学生通过大量的编程练习掌握程序设计的基本思路。然而,许多教师在实践教学过程中放取“放羊”的教学方法,布置几个题目,让学生自由练习,导致学生对实践能力的锻炼非常盲目,对编程完全失去了兴趣,达不到课程制定的实践教学目标。
2. 对理论教学模式的改革与探索
针对程序设计类课程中出现的相关问题,作者所在的软件工程系在学院领导的大力支持下,有效利用现有的教学资源,对程序设计课程的理论教学模式进行了改革,并将其付诸实践,在软件工程系的程序设计类课程的教学中,取得了较好的效果。
(1)采取教学团队制。软件工程系集中优秀教师,成立了程序设计核心课程教学团队,负责所在学院程序设计类课程的建设。团队负责人组织教师集体备课、听课,共同设计教学案例、组织教学。考虑到程序设计的课程具有较强的实践性,不同的教师在教学过程中会设计不同的教学案例,采取不同的教学方法,因而团队定期组织相关教师进行集体备课,设计更好的案例、设计更好的教学方法。在集体备课中,大家各抒己见,对如何讲授相关的知识点进行深入的探讨,共同设计合理的教学案例。同时,组织相关教师集体听课,学习有丰富教学经验老教师的教学方法,帮助年轻教师尽快提高,从而提升整个教学团队的教学质量。
(2)除Java、C#等面向对象的程序设计课程外,取消C语言等其他程序设计课程的多媒体授课,将教学重心从语法知识的讲授转移到程序设计能力的培养。这样处理有两种考虑:考虑到现有的以多媒体为主的教学方法容易让教师陷入讲授语法知识的误区,忽视对学生程序设计能力的培养,采取板书授课,可以让教师按照认知的规律从事教学,培养学生的逻辑思维能力和程序设计能力。同时,可以督促教师把更多的精力投入到教学中,精心设计和组织教学案例,改进和提高教学方法,努力提高自身的教学水平。
(3)采取项目引领式教学,精心组织教学案例,提高学生的学习兴趣。许多同学感觉C语言很枯燥,不知道学习C语言后有什么用,可以解决什么样的问题。甚至有的同学在学习完C语言后,也不知道这门课程到底有什么用处。有的学生甚至认为,程序设计的有些题目利用基本的数学知识就可以解决,根本不需要编程实现。针对这种情况,课程教学团队采取了项目引领的教学模式,通过从实际的项目中、或者相关的程序设计大赛中抽出一些典型的问题,或者直接面向具体的应用问题,要求学生编程解决。例如,在程序的三种基本结构中,设计了如下的基本问题,要求学生通过编程实现。
小明的爷爷很怀旧,冬天来了他还是要自己做煤球。并且爷爷把煤球堆放得十分整齐有规律:最上边一层只有1个煤球。第二层4个煤球摆成正方形,再下面9个煤球也是摆成正方形。总之,第 n 层就是边长为 n 的正方形。这样的结构既通风又稳固。小明数了数,一共有30层,请你帮助计算一下,一共有多少个煤球?
通过在教学中引入这样的实际问题,可以进一步提高学生的兴趣,也必将提高学生分析问题和解决问题的能力。
(4)模块化教学、阶段性考核。按照C语言的知识体系,将C语言的教学分成了六个基本模块,并在相应的模块结束后进行阶段性的考核,检验教学成果。本文对C语言的知识体系划分以及不同阶段考核的要求如表1所示。通常在模块化教学前,首先布置阶段性考核的综合性题目,要求学生独立完成。在阶段性考核的过程中,首先通过两三个小程序对本模块的知识点进行巩固,并对综合性题目采取小组答辩的方式进行,重点考察学生程序设计的思维能力和解决实际问题的能力。 3. 对实践教学模式的改革和探索
为了切实提高学生的编程能力,作者所有的程序设计教学团队要求抛弃以前的实践教学模式,在实践教学中切实发挥教师的主导作用,采取“学—练—赛”的模式,通过兴趣小组、组织学生参加竞赛等方式,真正训练学生的程序设计思维,切实提高学生的编程能力。具体做法总结如下。
(1)将传统的教学模式移植到实践教学中,发挥教师在实践教学中的主导作用,切实提高学生的编程能力。在C语言的实践教学中,在理论课结束时,作者所在的教学团队会首先布置一下实验的题目,要求学生思考解题的思路。在实践教学时,教师会首先领着学生做几个类似的题目,告诉学生在这个程序中要注意什么问题;然后会让学生试着写程序。在实验课的最后阶段,通过小型的程序设计比赛,激发学生的学习动力,提高学生的学习兴趣。
(2)组织程序设计兴趣小组,有效地组织学生在业余时间练习程序设计。国家信息学奥林匹克竞赛中国队总教练、清华大学教授吴文虎说,学习计算机不是听会的,也不是看会的,而是课下在实践环节中实实在在的上机练会的。因此,有效地利用课余时间编写程序,对提高学生的编程能力至关重要。在C语言的教学中,课程教学团队通过兴趣小组有效地解决这一问题。在授课过程中通过定期为兴趣小组布置相关的程序设计题目,可以有效增强学生的团队合作能力,提高学生的学习兴趣。
(3)丰富学生的第二课堂,组织学生参加相关的比赛,进一步检验教学成果。为了培养学生对程序设计的兴趣,程序设计教学团队利用周末的时间组织小型的程序设计比赛,鼓励不同年级的学生参加。通过这样的比赛,既提高了学生兴趣,也为参加ACM程序设计大赛、蓝桥杯程序设计大赛等专业程序设计比赛选拔后台人才。
4. 保障措施
为了保证程序设计相关课程的教学效果,提高学生的应用实践能力,课程组得到了所在的学院和学校的大力支持,主要有以下几方面。
(1)要求学生必须有创新学分。在培养方案中,要求学生毕业时必须拥有4个创新学生,这些创新学分可以通过参加教师的创新实验室或者参加相关的比赛获取。这为程序设计团队组织学生参加相应的程序设计大赛提供了政策上的保障。
(2)执行本科生导师制。学院为能力强的学生配备导师,这里的导师可以是学院的年轻教师,也可以是能力较强的、被学院认可的高年级学生。这为程序设计兴趣小组的运行提供了保障。为高年级学生安排教师作为导师,为低年级同学安排高年级学生作为导师,可以使程序设计的兴趣小组持续地发展。
(3)成立创新实验室。课程组所在的学院为了鼓励学生提高自身的应用实践能力和创新能力,组织相关教师成立了创新实验室。在程序设计创新实验室里,学生有更多的机会参与教师的实际课题,近距离体验或者参加ACM程序设计大赛、蓝桥杯程序设计大赛、软件设计大赛等相关比赛,提高对程序设计的兴趣。
5. 成果
通过持续三年的实践,软件工程系的学生实践能力有了长足的进步,专业建设和质量工程建设也取得了丰富的成果。《高级语言程序设计》、《面向对象的程序设计》、《数据结构》、《数据库原理与应用》等课程获山东省精品课程立项,《离散数学》、《Java程序设计》、《C#程序设计》获校精品课程立项。软件工程专业先后与HP公司、东软集团、NEC(济南)等相关专业软件公司成立软件人才合作培养基地。同时,软件工程系的相关教师将相关的教学材料整理,和清华大学出版社合作,先后出版了《C语言程序设计》、《基于案例教学的C++程序设计》、《C#.net程序设计》等有特色的教材。同时,软件工程的相关学生积极参加ACM程序设计大赛、蓝桥杯程序设计大赛等相关比赛,在省级比赛和全国性的比赛中都取得了优异的成绩。通过程序设计思维的培养训练,软件工程的大部分学生编程能力得到了很大的提升,软件工程专业的就业率稳居学校工科专业的前列。
6. 结语
本文以C语言的教学为例,对程序设计类课程的教学现状进行了分析,并从理论教学和实践教学两个方面对程序设计思维能力的培养进行了探索和实践,取得了阶段性的成果。在下一阶段的教学工作中,将重点探索基于校企合作平台的程序设计能力培养,借助校企合作平台提升学生的工程实践能力。
参考文献:
[1] 宋丽华,雷鹏,张小峰等.C语言程序设计[M],清华大学出版社,2014年
[2] 雷鹏,宋丽华,张小峰等.基于案例的C++教学[M],清华大学出版社,2014年
[3] 刘莉,李梅,姜志坚.C#.net程序设计[M],清华大学出版社,2014年
[4] 郭晓俐,汤克明.研究性教学模式在 C 语言教学中的实施[J],计算机教育,2010,2:135-137