PC版
搜索导航
论文网 > 教育论文 > 学科教育论文

软件工程专业C语言程序设计教学与考试改革研究

  中图分类号:G642 文献标志码:A 文章编号:1006-8228(2015)06-68-03
  Abstract: There are drawbacks in the traditional teaching of C language programming, which not only affect this course teaching quality, but also have negative effect on the following language courses. In order to improve the teaching effect, this paper proposes the reform measures to teaching quality control, interactive teaching, programming specification and testing. The practical results show that the reform measures improve the C language programming teaching effect significantly.
  Key words: Software engineering; C language; teaching reform; Examination reform
  0 引言
  软件工程专业是一门实践要求非常高的专业,该专业的学生要求在毕业时即可达到软件从业人员所需的软件开发、项目管理的能力,因此,软件工程的教学质量必须得到控制和保证。为此,教学人员从多个方面探讨提高教学质量的途径。邓泽林提出建立教学团队来提高语言类系列课程的教学效果,并深入探讨了教学团队的创建、教学团队的提升等问题[1],同时,他提出从大型软件项目实践、项目管理等方面提高软件工程专业学生的实践能力[2]。周波提出了本科院校学生软件工程能力的评价标准,更好地评估学生的实践能力[3]。
  软件工程专业学生的实践能力主要体现在应用程序设计语言进行软件开发的能力,而C语言程序设计是软件工程专业所有语言课程的基础,该课程的教学效果影响到Java语言程序设计、C++语言程序设计、C#语言程序设计等课程的教学质量,最终关系到了软件工程专业学生的专业素养和求职就业。本课程的教学人员对提高C语言教学效果进行了研究,钟美提出以培养应用人才为目标的C语言教学方法[4],但志平提出改善地方高校C语言教学的改革措施[5]。这些方法和措施尚未探讨教学质量控制、编码规范等方面,对于提高学生的专业素质意义有限。为此,我们提出了教学过程质量控制、师生互动、编码规范和上机考试等多个方面的教学与考试改革措施,以提高C语言教学质量和学生的动手能力,并为后续课程的学习打下良好的基础。
  1 教学中的问题
  1.1 教学只注重课程的讲解,不注重教学过程的质量控制
  传统的教学以课程内容的讲解为主,通过讲解变量、循环、数组、指针等内容,并结合一定的教学案例来推进教学过程的实施。这种传统的教学方法没有考虑到本阶段学生的特点,往往造成教学效果差,教学质量难以控制。C语言程序设计课程在大一新生中开设,许多学生缺乏程序的思维和一定的动手能力,学生难以跟上教学进度,造成一定数量的学生对学习语言失去兴趣,从而影响整个专业课程的学习。
  1.2 教学过程缺乏有效的互动
  C语言程序设计的教学过程中主要使用PPT来讲解,案例程序也通过PPT展示,甚至包括程序运行结果也以截图的形式在PPT中显示。虽然在PPT中可以添加很多的动作,动态地标注、显示程序的运行过程,但这种方法以投影为中心,缺少与学生交流的环节,加上程序类课程相对枯燥,以致学生难以集中精力做到全程听课。
  1.3 代码编写规范强调不够
  编码规范是软件专业学生必须要牢记并遵守的,良好的编码规范不仅能体现软件从业人员的素质,而且使代码有更好的可读性,更容易被别人所理解和交流。该课程的讲解主要以编写简单逻辑来解决一些日常问题、数学问题,编程的环节侧重于算法的实现,往往忽略了编码规范。
  1.4 考试以笔试为主,难以检验学生的动手能力
  传统的C语言程序设计课程考试以笔试为主,考查学生对C语言基本的语法、简单逻辑编写的掌握情况。这种考试机制脱离了程序语言的实现介质,即计算机。虽然在试卷中也可以用编程题目来考查学生的编程能力,但在纸上写程序与在计算机上写程序有本质的不同。在纸上写程序只需要写出大致的逻辑即可,而在计算机上写程序不仅要写出正确的代码,而且需要调试和跟踪代码,最终保证程序的正确执行。因此,笔试并不能很好地检验学生的动手实践能力。
  2 教学改革措施
  2.1 加强教学过程的质量控制
  C语言程序设计课程是一门实践性强的课程,仅通过做一些常规练习无法达到教学质量监控的目的。为了更好地控制教学质量,需要从学生语法规则的掌握到动手编程这一系列环节进行掌握和跟踪。为此,我们开发了一套在线作业系统用于教学质量的控制。
  ⑴ 作业题库的建设
  C语言程序设计的任课教师根据自己的经验和理解来搜集和设计C语言题目,包括基础知识的题目和编程实践的题目。基础知识的题目主要用于C语言知识点的训练,包括填空题、选择题、判断题和程序阅读题;编程实践的题目主要用于编程能力的训练,这类题目需要学生对问题进行正确分析、设计算法、编程并运行,最终得到结果。教师在给出题目时,需要提供测试数据和对应的结果。   ⑵ 作业的布置与批改
  教师可以根据每次课的教学大纲、课程内容,从作业题库中选择一些填空题、选择题、程序阅读题、编程题来建立课程作业供学生在课外完成。学生在规定的时间之内完成作业后提交作业,系统根据教师预先设定的答案进行自动批改,形成每个学生的作业记录。如果学生在规定的时间之内没有完成作业并提交则失去本次作业的记录。教师通过查阅部分学生的解答来掌握学生对相关知识的掌握情况,特别是需要整理学生所犯的共性问题,并有针对性的开设习题课进行解答。
  ⑶ 配套政策
  为了使学生重视平时作业的完成,课程的期末成绩将考查平时作业的情况。如果学生没有提交作业的次数在30%以上,则平时成绩计0分,其他情况按照提交作业次数和作业得分根据一定的公式进行计算得到学生的平时成绩。这种策略的主要目的在于督促学生跟着教学进度进行学习和训练,不至于严重滞后于教学进度而失去学习的兴趣,可有力地保证教学质量。
  2.2 加强教学过程中的互动
  课堂教学应该在一定程度上脱离PPT的教学,这样才可以调动学生的积极性。加强师生之间的互动可以结合本课程特点进行。在讲解课程知识点后,配以适合的案例进行教学,这些案例都是需要编写C语言程序来实现的。此时,编程实现的环节不要通过PPT展示,而要在教师的计算机上动手编写并运行得到结果,这样可以改变教学节奏,吸引学生的注意力。C语言课程案例程序的一大特点是代码量少,一般在20~30行之间,适宜在课堂上完成。
  教师在编写程序的过程中,可以向学生展示编程中需要注意的问题,同时,进一步讲解C语言的语法和基本知识点。教师在编写程序的过程中难免会犯小错误,或者是有针对性的故意犯一些学生经常犯的错误,在编程后的编译运行时会有错误报出,这时对于提高师生交互是很好的机会。从学生的角度来说,他们的编程往往会有很多错误,编译时会出现大量的错误提示。此时,学生可能就比较迷茫,不知道如何定位并解决错误。因此,当老师也出现错误,而且是学生经常遇到的错误时,学生往往是比较兴奋的,希望能知道老师是如何处理错误的。从老师的角度来说,真实地反映程序编写、编译的过程,展示程序错误的发现、定位、解决的方法,能够更快地提高学生的动手实践能力。面对错误,教师还可以引导学生参与程序错误的解决,消除学生对程序错误的恐惧感。
  在解决程序错误时可以参考以下步骤。首先,教师要把所有错误信息读出来给学生听,因为一般编译出来的错误是用英文写的,而且有些单词学生不熟悉,因此,老师需要指出错误是变量重定义、变量没有定义、还是其他错误;然后,指出核心错误的位置,教师要告诉学生程序报出很多错误信息往往是由一个小错误导致的,因此,老师要指导学生学会确定引起其他错误的核心错误;最后,在源程序中找到错误的位置,修改错误并重新编译,得出运算结果。
  这个错误处理过程是针对简单语法错误的处理方法,如果程序中出现了逻辑错误,即程序编译正确,但运行结果不是预期结果,此时,错误的处理方法更为复杂,可能需要重新检查程序逻辑,并使用编译环境进行程序中可疑变量的监视,通过观察变量中的数值在程序运行过程的变化来确定错误。
  通过实地编写程序并调试,发现和解决程序错误,最终得到正确的计算结果,不仅能使同学更好地掌握程序编写的方法,而且还能更好地与学生进行互动,提高教学效果。
  2.3 强调代码规范
  有些老师在教学的过程中特别是演示程序时,注重于解决问题而忽视代码规范,甚至是自己写程序也是这样,没有代码规范。虽然遵守代码规范并不能改善程序的性能,但遵守代码规范能够使程序具有更好的可读性、可维护性,是软件代码实施过程中软件从业人员良好素质的重要体现。改善代码规范可以从以下几个方面进行。
  ⑴ 适当的缩进
  每一行代码不要顶格书写,而要根据情况缩进。具有良好缩进格式的代码不仅能少犯语法错误,还能够使阅读者快速掌握程序内容。
  ⑵ 适当的空行
  函数与函数之间增加必要的空行,使得程序构成一目了然。
  ⑶ 适当增加代码注释
  程序中函数的开头最好加上注释说明该函数的作用、参数的意义,在函数中重要逻辑的部分加入注释说明该逻辑的主要思路、算法。
  ⑷ 代码块要用花括号界定
  代码块尽量使用花括号来界定代码范围,即使代码块里只有一行代码,这样可以提高代码的可阅读性,防止阅读者误解程序。
  ⑸ 变量和函数的命名
  尽量使用多个字母来命名变量和函数,使得程序阅读者通过名称即可大致了解变量的意义、函数的作用,提高程序的可读性。
  通过编码规范的强调和实施,使学生认识到软件开发的专业素质,对于提高学生的专业素养具有潜移默化的作用。
  2.4 上机考试
  上机考试采用在线考试的方式进行,考试环节包括如下几个部分。
  ⑴ 试题库的建设
  C语言程序设计的任课教师负责组建上机试题库,试题库中的题目都是编程的题目,用于考核学生的编程能力。教师在组建试题库时,标明每个试题的知识点和大致难度,并提供测试案例和对应的答案。题库负责人负责查看、重新编辑每个题目,从题库整体的角度更新每个试题的难度。
  ⑵ 上机考试的实施
  为单次考试准备7个知识点和1个综合知识点的题目,教师在考试之前为每个知识点选定难度相当的5个题目。每个学生登录系统后,系统自动建立考卷,具体策略是从为每个知识点准备的5个题目中随机选择1题组成一个考卷,因此,该考卷包含8个题目,这8个考题要求学生在4小时内完成编程。考试时间一般定为上午8:00至中午12:00点。
  学生根据随机组成的考卷题目进行解答,为每道题目编程求解,并在学生机上利用示例测试用例检验代码的正确性。如果在本地没有通过检测,则进行逻辑检查,修改程序;如果本地通过测试,学生需要将代码提交到服务器。服务器接收到代码后,自动调用教师提供的更多的测试用例来检测程序运行结果是否与预先设置的结果匹配,进行代码逻辑黑盒测试。如果全部通过,则说明学生的编程逻辑是正确的,此时将学生成绩记录中对应的题目标为通过,并回显“通过”给学生,学生继续做下一道题目;如果其中有的用例运行结果不正确,则返回“错误”给学生,学生可以接着做本道题目,也可以选做另外一道题目,同时,在学生成绩记录中对应的题目标为错误。   教师在考试现场调取并查看所有学生成绩记录信息,如果发现异常信息,如在很短的时间内完成了过多的题目,则可能学生在作弊。此时,根据异常学生信息中的IP地址找到该学生,进行现场查证,如果确认为作弊则立即处理。如果学生正确完成了8道题中的5道题,则学生通过上机测试,否则,学生没有通过上机测试。为了减轻学生的压力,上机考试可以分两次进行,如果第一次没有通过上机考试,还可以组织学生进行第二次考试,取这两次考试的较高分作为学生成绩。
  3 结束语
  C语言程序设计是软件工程专业的一门重要的基础课程,其教学效果直接影响后续语言类课程的教学效果。
  传统的C语言程序设计在教学过程难以进行质量控制;师生之间缺少良好的交互,没有强调编码规范,没有进行机试测试,导致教学效果难以保证。为此,本文提出了一系列改革措施,这些措施包括:利用在线练习系统来保障学生的课程作业得到及时的完成;通过课程程序的现场编写、编译等措施,加强与学生的互动交流;强调编码规范提高学生的专业素养;通过在线考试提高学生的程序思维能力和动手实践能力。
  通过这些措施,学生学习C语言的进度基本能够得以保证。由于学生平时就被要求在作业系统中进行程序的编写并在线评判,从而具有了良好的编程能力,而且所编写程序有较好的编码风格,最终大多数学生能够通过机试考试。实践表明,本文所提出的改革措施提高了本专业学生的专业素养和动手实践能力,有力地保证了后续语言课程的教学质量。

相关论文

软件工程程序设计语言改革程序教学
新闻传播政策与法规“课程思政”案例
医疗保险本科专业人体解剖学教学研究
浅谈心理学理论在初中数学教学中的运
浅谈初中英语教学中“教育戏剧”的实
汉语言文学对传统茶文化的作用研究
写生课程融入学前教育美术教学的应用
电商直播课程教学融入思政教育构想
课程思政融入“保险学”教学的路径及
浅谈茶文化的旅游管理教学改革模式
高校商务英语教学中的思政融入构想