摘 要: 针对C语言实践教学中存在的问题,提出将软件工程思想引入C语言课程设计的教学改革中。以项目任务为主线,按照软件工程方法分组、分阶段地实施课程设计。实践教学过程中强化学生的计算思维训练,采用实践任务表驱动和阶段性验收方式培养学生自主学习能力,从而提高C语言程序设计实践课程的教学质量。
关键词: C语言课程设计; 实践教学; 软件工程思想; 计算思维
中图分类号:G642 文献标志码:A 文章编号:1006-8228(2015)12-105-03
Study on teaching reform of c language experiment based on software engineering idea
Lou Yichao
(College of Information & Electronic Engineering, Zhejiang Gongshang University, Zhejiang, Hangzhou 310018, China)
Abstract: To address the problems of traditional C language experiment teaching, this paper presents some suggestions adopting the software engineering idea for teaching reform of C language curriculum design. Following the project tasks, students are grouped and perform the experiment in several stages according to the software engineering lifecycle. During the teaching process, the training of computational thinking is emphasized, and practice task list driven and phased acceptance method are used to cultivate students" autonomous learning ability. Based on these reformations, the education quality of C programming practice course can be efficiently improved.
Key words: C language curriculum design; practical teaching; software engineering ideas; computational thinking
0 引言
目前,计算机技术的快速发展、普及和应用极大程度地推动了计算机教育的发展。C语言程序设计作为计算机基础教育中的一门重要课程,已经成为全国高等院校工科各专业学习计算机程序设计的一门基础课程,提高其教育质量对培养学生的编程思想和编程技能至关重要。
C语言是程序设计的启蒙性语言,也是学习数据结构、JAVA语言程序设计和软件工程等计算机类其他重要课程的前趋课程。作为一种抽象的且实践性很强的语言,它具有数据类型繁多、语法结构复杂等特点,这些特点给教学带来一定的难度,上机操作实践成了巩固和熟练掌握课堂知识的一个必不可缺的环节。实践教学效果的好坏直接决定着学生对C语言学习的效果,以及能否调动学生对程序语言学习的能动性。因此加强C语言实践教学环节,可以为后续的其他计算机类课程的学习奠定良好的基础,而且,从长远来看,也符合社会对高素质工程应用型软件人才培养要求。
1 实验教学中存在的问题
C语言程序设计课程的教学指导思想应是以应用为目的,重点培养学生分析和解决问题的能力,提高学生的动手能力。根据几年来在本学院网络工程专业开展C语言教学效果来看,现有的实践教学尚存在一些薄弱点,主要表现在以下方面。
⑴ 注重单一的语法练习。语法练习的案例为训练学生熟练掌握某个或某几个语法点而设计,其程序简单,代码量少,通常仅有一个main函数,学生常通过死记硬背的方式去记忆语法点和语法规则,极易失去学习兴趣,并且,少量的几行代码不能同时覆盖多个知识点,这会导致学生不能把各知识点有机地结合起来融会贯通。
⑵ 验证性实验较多。验证性实验是一种巩固知识的再现式教学模式,过多的这类实验使得不少学生养成程序运行时一出现预期答案就终止实验的习惯,不利于培养学生的程序测试意识,致使其分析错误和调试能力差。
⑶ 缺乏计算思维的培养训练。计算思维的培养应该是计算机基础教学方面的一项核心任务[1],但由于近年来网络工程专业常以通过全国计算机等级考试为目标,等级考试的拟题形式直接导致了学生对编程的认识局限于代码的填空、写出程序运行结果等诸如此类的形式,而对算法缺少整体上的认识,更谈不上从多角度、多方位尝试用不同的方案、不同的算法来实现程序功能。
⑷ 评价方式单一。传统的实验教学采用随机指导方式,在学生提出问题的情况下进行解答指导,评价仅以最后的实验作业为依据,评价方式过于单一,学生中易出现抄袭现象,不能反映教学效果。
2 教学改革措施
针对实践教学环节的薄弱点,我们在传统理论课结合实验课模式的基础上,进一步开设C语言课程设计这一综合性设计实验课程,承上启下的实现教学衔接。
2.1 教学内容改革
社会的发展需要创新能力佳、实践能力强的复合应用型人才,因此,C语言课程设计的内容改革首先在选题上就要符合以应用为导向这一教学目标,而不能局限于通过计算机等级考试。在开展教学过程中,进一步融入软件工程思想,强化计算思维训练。
选题上,以一个小而完整的软件开发项目贯穿整个课程教学过程,克服验证性实验存在的与实际应用脱节问题。C语言作为程序设计的入门语言,考虑到学生尚不熟悉软件开发的流程,项目选择以贴近生活的信息管理系统为主,例如电话簿管理、宿舍管理等。这类系统开发项目能覆盖多个知识点,尤其是覆盖数组、链表、指针、结构体等重点内容,也具有一定的可扩展性,可以引导学生逐渐从简单功能实现向较难的功能实现过渡。例如信息管理系统的基本功能点是对信息的录入和读取,在此基础上根据学生的能力和完成进度,可以逐渐添加一些功能点,如各种查询、排序,或进一步加入文件处理以保存信息。这样就形成了知识链条,由浅入深地扩充并覆盖到教材中各个重要的知识点。
一个小而完整的项目具备一定规模的代码,C语言又是一种理想的结构化语言,在这种结构化程序开发的教学过程中,需要提前向学生渗透软件工程思想,潜移默化地熏陶学生养成良好的软件开发习惯。内容上,引入模块化设计思想,模块代表一个小的完整的功能点,用增量方式逐个实现,介绍相对容易理解的瀑布模型,针对每个需求获取分析、系统设计、开发、测试等几个阶段布置具体任务,让学生提前接触软件开发过程,纠正学生在没有分析清楚需求就急于写代码的习惯,而测试时适当引入一些简单的黑盒测试方法,例如边界值法等,避免学生测试的随意性。
C语言涵盖了语言和方法两方面的内容,方法指算法设计和使用计算机语言描述算法的过程[2]。算法可以说是程序的灵魂,而从学生的反馈来看,计算思维的训练尚存在很大不足。计算思维是运用计算机科学的基础概念去求解问题、设计系统和理解人类行为的能力,在2006年被提出并明确定义以来[3],逐渐成为计算机教育的新要求,在2010年首届“九校联盟计算机基础课程研讨会”上提出把培养学生的“计算思维”能力作为计算机基础教学的核心任务[4]。算法的学习是一个不断积累的过程,需要将计算思维的培养贯穿始终。以数据排序为例,可以让学生对不同的数据结构(数组或链表)、不同算法的选择进行优劣分析,增加数据量或运行次数进行测试,让他们对计算复杂度有直观的了解,激发起学习兴趣。
2.2 教学方式改革
C语言课程设计以项目任务为主线安排教学步骤,借鉴翻转课堂教学模式,分为课内实验和课外两个阶段学习,分组合作,采用阶段性验收方式,以实践任务表为驱动,促进和提高学生自主学习的能力。
自主学习是一种学习者在总体教学目标的宏观调控下,在教师的指导下根据自身条件和需要制定并完成具体学习目标的学习模式[5],是我们C语言课程设计的一个重要的教学目标,翻转课堂思想可以有效地帮助实现这一目标。翻转课堂作为一种新型教学模式,近年来得到了越来越多的教师的关注。它是以学生为中心,课后学习,课堂上集中精力完成练习以及和教师同学交流[6]。借鉴于此,C语言课程设计的课外学习阶段安排查找或观看跟实践任务表中问题相关的资料和视频,课内则集中时间进行实验。
课堂实验采用项目分组方式,每组至少3人,并推选一位组长负责组内协调和阶段汇报,要求每个项目组按照软件工程方法进行需求分析、总体设计、详细设计、编码和测试。需求分析阶段可以实行角色扮演方式,将组内部分人员放在用户的位置上,采用面对面访谈方式进行需求获取。在总体设计阶段,要求根据自顶向下、逐步求精的模块化设计思想,拆解为若干个功能单一、相对独立的子模块,根据每位学生对现有知识的掌握程度及编程水平进行任务分配,尤其要引导学生注意模块间数据的传递和接口设计问题,减少使用全局变量,提高程序可维护性。详细设计阶段则要求学生多方位思考程序的实现途径,对于稍微复杂点的必须先给出详细的算法流程图或伪代码,然后进行编码,将其映射为编程语句,以促进计算思维的培养。编码和测试没有明确的界限划分,要求学生边编码边进行单元测试,这个过程中要求学生学会看编译出错信息,掌握调试技术,例如VC断点调试、单步跟踪等技巧,观察内存变量值的变化等。这样一方面可以纠正学生原先那种与书上源代码校对来查找错误的方式,另一方面可以提升对知识点的理解,尤其是通过在调试窗口观察程序的动态运行过程来深入理解指针和链表问题。编码阶段完成部分测试后,还需要将各模块功能集成到系统中进行测试,该过程中,向学生引入简单的等价类划分和边界值测试等方法,避免学生测试随机性和重复性。
信息时代的教学模式应以启发学生探究为主,教师则是学习的指导者和帮助者,引导学生思考存在什么问题,可以用什么方式解决,而不是直接说明怎么解决。学生是学习的主体,为激发学生自主学习的热情,C语言课程是设计采用实践任务表驱动和阶段性的验收方式,引导学生课外学习按照自主的节奏一步一步有序学习。学生经过课堂实验,梳理归纳出实践任务单,任务单包含课堂碰到的一些编程问题,以及教师给学生留下启发式的思考题。阶段性验收以小组进行,以小组为单位汇报进度或发表意见,与教师进行面对面交流,测评实验问题解决方案。这样鼓励学生在课后有针对性的自主发现和解决问题,课后去查找资料,独立思考,从而实现从“做中学”到“学中思”的过渡。
课程设计结束后,采用答辩方式进行考核,分为小组考核和个人考核,每组用15分钟左右进行项目演示、功能介绍和总评,个人考核则以过程性考核为主,依据其所实现功能点的数量、在项目合作中发挥的作用,对调试操作的熟练程度等多个方面的指标进行。这样就做到考核方式多样化,而不单纯以实现结果来衡量,从而能在全方面督促学生进步,也加强了学生良好的团队意识和合作精神的培养。
3 结束语
本文探讨了网络工程专业教学改革的具体措施,在本院实践表明,实际项目的开发能很大程度上提高学生的学习兴趣,加深知识点的理解,分组分阶段的项目开发方式培养了学生的团队协作能力,增强了学生的软件工程意识,而通过任务驱动的课外学习方式,学生的学习自主性和解决问题能力都有了较大的提高。为了能够满足社会对应用技术型人才的深层次需求,我们还需要在今后的实践教学中继续探索新的改革方案,以期达到更好的实践效果。
参考文献(References):
[1] 何钦铭,陆汉权,冯博琴.计算机基础教学的核心任务是计算
思维能力的培养—《九校联盟(C9)计算机基础教学发展战略联合声明》解读[J].中国大学教学,2010.9:5-9
[2] 杜恒.C语言程序设计(理实一体化教程)[M].机械工业出版
社,2011.
[3] Jeannette M.Wing. Computational Thinking [J].Communi-
cations of the ACM,2006.49(3):33-35
[4] 九校联盟(C9)计算机基础教学发展战略联合声明[J].中国大
学教学,2010.9:4,9
[5] 谢飔羽.自主学习及大学生自主学习能力培养[J].中小企业
管理与科技,2009.3:122
[6] 张金磊,王颖,张宝辉.翻转课堂教学模式研究[J]. 远程教育杂
志,2012.4:46-51
扩展阅读文章
推荐阅读文章
77范文网 https://www.hanjia777.com
Copyright © 2015-2024 . 77范文网 版权所有
Powered by 77范文网 © All Rights Reserved. 备案号:粤ICP备15071480号-27