摘 要:C语言作为编程语言的基础课程,是高等院校计算机相关专业的必修课,其目标是培养学生的计算机思维能力以及解决问题的能力[1]。但在传统教学模式下,学生缺乏练习,缺乏兴趣。因此,笔者根据在讲授C语言过程中出现的问题,结合学生特点和专业定位,进行深入思考,提出了教学模改革创新,将传统的“48+16”教学模式改为“64学时理论实践同步”的教学模式。本文深刻总结了传统教学模式中存在的弊端,详细阐述了教学模式改革中各项改革实施细节。
关键词:C语言;能力培养;教学改革
中图分类号:TP391 文献标识码:A
Abstract:As the basic course of programming languages,C Language is a compulsory course for computer-related majors in colleges and universities.It aims to cultivate the student's ability of thinking and solving problems in the field of computer science.But,in the traditional teaching mode,students do not have enough practice and enthusiasm.Thus,Based on the problems existing in C Language teaching process,the paper integrates the student's characteristics with the major orientation,and accordingly proposes a teaching mode reform and innovation,which converts the traditional "48+16" teaching mode into the "64-hour theory-practice paralleled" teaching mode.This paper summarizes the drawbacks in the traditional teaching mode,and elaborates on implementation in the teaching mode reform process.
Keywords:C language;ability training;teaching reform
1 引言(Introduction)
C語言程序设计作为编程语言类的基础课程,在高等院校计算机相关专业开设,该门课程作为计算机相关专业编程语言的基础课程[2,3],是非常好的入门选择课程,它不仅仅能培养学生的专业技术,使之能够有一技之长,还能培养学生的计算机思维能力,使之能够用计算机的思维进行分析问题和解决问题。该门课程结合软件、硬件,在学科设置中起到举足轻重的作用[4]。
2 C语言教学现状及存在的问题(C Language teaching status and problems)
目前全国高校采取的教学模式均为传统教学模式,课程一共64学时,其中48—52学时在教室进行,设置12到16学时的实验。该种教学模式主要是“教师讲解,学生听课”为主。C语言因其丰富的数据类型、数据结构、运算符,可以操作硬件,不依赖硬件,目标代码高效以及可移植性强等特点,使得在学习和讲授的过程中理论性太强,造成教学效果不理想的状态[5,6]。分析存在的问题主要有以下几点:
(1)教学目标不明确
编程类课程的目标是能够让学生通过一个学期的学习掌握一门计算机语言,理解计算机的运行方式、计算机语言的本质特征,培养计算机思维能力,为后续的课程做好准备。绝不仅仅是通过期末考试,拿到好成绩;通过计算机等级考试,拿到证书。因课时的有限性,教师在讲授过程中重点讲解考试涉及章节,如顺序结构、选择结构、循环结构、数组、函数等,而对指针、结构体、预处理等章节的讲解会降低深度。给学生造成学习课程是为了考试,而非完整掌握一门语言的精髓这样的错觉。在学期末学生对部分章节内容只有简单的了解,没有深刻理解。
(2)理论学时多,实践学时少
该门课程一共64学时,其中理论学时48,实践学时16。按照课程比例,学生上三次课才能上一次实验,也就是说两周内有三次理论课,一次实践课。学生需要在两个学时内对六个学时的理论知识进行练习和总结。C语言的理论知识本身就很零散和复杂,如果没有足够充分的复习,学生在上机时已经不知道要对哪些知识点进行验证和练习。直接导致的结果就是学生将书上的例题照搬到Visual Studio 2010环境中看看结果,至于涉及的知识点全然不知。
(3)理论教学依赖教材,创新差,缺乏互动,学生学习兴趣淡薄
不论是哪一种版本的教材,为了结构的完整性,章节设置基本都为绪论-算法-基本结构-数组-函数-指针-结构体-文件-预处理-位运算,设计的案例单一,经典算法较多,实用性差,且随书PPT大都是课本的复制。教师在讲授过程中依赖教材和PPT,导致学生对课堂内容缺乏兴趣,互动少,对一些经典案例也只是死记硬背经典算法,缺乏自主创新。
(4)实践环节任务单一,缺乏创新动力,且指导能力有限
鉴于课时的有限,教师在安排实践任务时尽可能地让学生对理论知识进行练习,如此一来学生专注于基本知识的练习和简单案例的验证,没有更多的时间对新问题新案例进行思考及编程实现。而且开设该门课程的所有专业实践内容一样,很大程度限制了将所学专业与该课程结合的力度。
C语言的语法非常谨慎,细微的错误都会导致编译出错等一系列的问题,在实践环节当中,学生初次接触编程语言,对编程语言以及编程环境不熟悉,在编程过程中出现的问题千奇百怪,而且学生对调试程序的过程还没有接触。如果前期实践过程中不能及时解决学生编程出现的问题,会直接导致学生对编程产生抵触情绪。而高校一般课堂容量在80到160,一名指导老师想要及时解决每位同学的问题难度系数非常大。
(5)考核方式中欠缺对实际编程能力的考核
根據调研,目前全省高校考核方式大多采取的方式为“期末笔试成绩+平时成绩”,比例一般在80%—20%到70%—30%,其中平时成绩中涉及出勤、作业和实验报告及表现。从中可以看出考核中不能体现学生的编程能力,计算机思维能力,语法的深刻认知以及正确编写能力,亦不能考查学生在实际项目中需要的任务分工以及团队合作能力。如此,学生重在学习期末涉及章节及知识点,对实践环节不重视,计算机思维能力不能得到锻炼,编程能力不能得到提升,创新能力不能得以提高。
3 C语言教学改革措施(C language teaching reform measures)
通过在传统教学模式的教学工作中出现的问题,通过不断探索,深刻认识到要想提升学生能力,唯有进行教学改革,找到适合课程、学生和老师的教学模式,才能培养出经济社会需求的人才。下面详细叙述教学改革的措施:
(1)课堂模式改革
进行课堂翻转,将原有的“48+16”学时的课堂结构改革为全程机房上课。机房需要同时满足教室上课和机房实践的需求,须有投影仪、屏幕、黑板等基本设施满足对理论性知识的讲解和说明,须能够满足学生一人一台电脑进行独立编程的环境,同时还需要有教学软件能够满足教师对学生机的控制、监控、下发作业、回收作业、回答问题、学生个人演示等功能。
翻转课程既能够满足教师对理论知识的讲解,又能满足学生对所学知识及时上机编程验证深刻理解。
50分钟的课堂分为三个环节,前15分钟为理论知识讲解环节,在该环节教师对本节课的理论知识进行深入浅出的讲解,并通过与实际生活相贴切的例子帮助学生更好地理解知识点的社而至以及知识点的原理。通过案例讲解培养学生运用计算机思维解决问题的能力;中间25分钟为学生上机操作环节,在环节学生不仅可以对正确的C语言语句进行练习,还可以在编程过程对可能出现的错误进行学习,以此更加深刻理解正确的C语言语句。最后10分钟要求学生对编程中出现的错误以及错误的原因进行总结,教师对学生编程中出现的错误进行汇总,如此一来可以对错误印象深刻。
如在输入输出函数中,正确的语法应该为:
scanf("sum=%d\n",∑);
printf("sum=%d\n",sum);
学生通过理论知识的学习对语法的认识不够深刻,在实际编程中可能会出现的部分错误书写方式有:
scanf("sum=%d\n",sum);
scanf("sum=%d\n,"∑);
scanf("sum=%d\n,∑");
scanf("sum=%d\n"∑);
scanf("sum=%d\n",∑);
scanf("sum=%d\n",∑);
scanf("sum=%d\n,∑);
printf("sum=%d\n"sum);
printf("sum=%d\n,sum");
通过在Visual Studio 2010环境中进行语句的编写和编译,学生在编译调试的过程对语句的严谨会有更加深刻的理解和掌握。前期编程提升了学生的兴趣,一方面能够在后续的过程中更加熟练的编程,另一方面学生对编程不会抵触,更愿意通过编程展示自己的能力,从而进一步提升自己。
(2)教学案例改革
在我校开设C语言课程的系部有:机械工程系、电子工程系、自动化系、材料工程系、经济与管理系等,在教学过程中用的教学案例如果能够根据不同的系部专业特征设计,学生能够感到所学课程不仅仅是通过考试获得证书,更重要的是能够将所学知识结合自己专业有所应用。如电子工程系的学生对位运算的应用比较多,那么在教学中可以将该部分内容设置更多实际案例进行深度讲解。
(3)教学方法改革
在传统教学方式中,教师大都依赖教材所用案例,解法也都是经典算法。实际上在学生初次学习的过程中重点是对C语言结构的认知,并非对经典算法死记硬背。
教师在设置案例的时候需要从实际出发,从生活中考虑,将生活中的例子用C语言的方式表达出来,学生可以更加容易理解语言的精华。另外,对于特定案例,无需要求学生全部按照经典算法来实现,在学生能够掌握经典算法的基础上要求学生可以通过自己的思考用C语言表达出来。
比如在讲解循环结构时,可以让学生求1到10的和,也可以通过学生去操场跑步的场景引导学生对于循环需要考虑的问题。
在讲解案例的过程中根据所学知识点由浅入深循序渐进进行讲解,如设置案例:输出九九乘法表。
分析:
第一步:输出“*”
实现方式:
printf(“*”);
输出结果见图1:
(4)指导环节改革
大部分高校依然存在师生比很大的现象,也就是课程的课容量很大,通常在80—120,教师无法对实践环节中学生出现的问题进行详细深入的解答。一旦学生在实践环节感到吃力,会对编程产生抵触情绪,不利于课程的学习。
为此,可以采取以下几种方式进行:
一是减少课容量,设置在20—30人比较合适。
二是对学生进行分组,对出现的问题先组内解决,组内无法解决的问题寻求其他小组的帮助和老师的帮助。
三是为每个班级配备实验助手,实验助手一般是高年级或者喜爱编程者,通过在实验助手和老师共同努力下提高实践环节的效率。
(5)考核方式改革
提高编程考核成绩比重,设置考核组成比例为:期末:平时:编程為3:2:5。
以往的考核重在期末笔试成绩和平时实验报告上,缺乏对实际编程能力的考核。在本次改革中不仅要对理论知识的掌握的情况进行考核,还要对学生的编程能力进行考核。主要通过两种方式,一是在重要章节设置大作业,可以对学生分组,3—5人一组比较合适;二是在学期接近尾声之际设置课程大作业,该大作业将多个章节知识点融合,通过大作业对学生的实际编程能力进行考核。
4 结论(Conclusion)
笔者总结了在《C语言程序设计》课程的教学工作中出现的问题,结合问题进行了深入思考,提出了《C语言程序设计》教学模式改革,详细阐述了教学模式改革中各项措施的具体实施细节,如课堂模式、教学案例、教学方法、指导环节、考核方式等,旨在提升学生在学习过程中兴趣和成果,锻炼学生的实际操作能力,培养学生的计算机思维能力和分析问题解决问题的能力。
参考文献(References)
[1] Ying Li,Shimin Zhang,Meihua Wang.Teaching Study on C Language Program Design Course Based on Computational Thinking[A].Information Engineering Research Institute,USA.Proceedings of 2nd International Conference on Simulation and Modeling Methodologies,Technologies and Applications(SMTA 2015)[C].Information Engineering Research Institute,USA:2015:4.
[2] LIU Shukun,CHEN Zhen,TANG Jinpeng.The Improved Methods of Teaching Practice Based on C Language Programming[A].计算机科学与电子技术国际学会(Computer Science and Electronic Technology International Society).2013年教育技术与管理科学国际会议论文集[C].计算机科学与电子技术国际学会(Computer Science and Electronic Technology International Society),2013:4.
[3] Ruilian Hou 1,a,Aizhang Guo 1,b 1 School of information,Shan Dong Polytechnic University Jinan,China. Research of the Teaching Model Reform of C Language Program[A].Information Engineering Research Institute, USA.Lecture Notes in Information Technology—Proceedings of 2012 2nd International Conference on Future Computers in Education(ICFCE 2012)[C].Information Engineering Research Institute,USA:2012:5.
[4] 曾庆尚,高慧,梁振军.C语言程序设计的实践教学改革与探索[J].大学教育,2014(6):116-117.
[5] 查建中.工程教育改革战略“CDIO”与产学合作和国际化[J].中国大学教学,2008(5):16-19.
[6] 张吴波,史旅华.建立开放的实验体系,提高C语言教学质量[J].大学教育,2014(4):134-135.
作者简介:
申月莉(1989-),女,硕士,助教.研究领域:信息安全.