软件工程环境下的C程序设计课程教学

时间:2022-09-17 05:53:56

软件工程环境下的C程序设计课程教学

摘要:程序设计能力是计算机类专业的基本能力,也是检验计算机类毕业生是否合格的标准。针对目前计算机专业中各门课程教学相对独立、缺乏课程间有机衔接的现状,本文提出一种软件工程环境下的C程序设计课程教学模式,即通过C语言来讲述程序设计,并将程序编写与软件工程原理的阐述有机地贯穿在一起,以期增强学生的专业学习兴趣,提高学生整体的程序设计能力和社会竞争力。

关键词:C程序设计;软件工程;混合式教学;双语教学

计算机和数学被看成是各个学科最重要的工具,同样,编程和算法也成为一种基本的技能。程序语言是程序员间、程序员与机器间交互的媒介。随着程序越来越复杂,程序必须遵循某种准则开发才能更好地被他人、其他程序或机器更好地理解,才能更好地演化为符合某种特定目标的软件[1]。

目前我国的计算机专业课程体系都是按照CC2001的框架制定的。CC2001是IEEE/CS和ACM为了规范和促进大学计算机学科教育所制定的教学体系。CC2001的指导思想是计算机学科的课程应由4个专业方向部分,即计算机科学、计算机工程、软件工程与信息技术交织组成。作为计算机科学的第一门课程――CS101程序设计基础,其要求是介绍过程式程序设计的基本概念,内容包括数据类型、控制结构、函数、队列、文件、运行机制、测试和调试;并对计算机科学作为一门学科进行了概述[2]。

C程序设计作为我院计算机专业的第一门专业基础课程,其扮演角色的重要性不言而喻。它是后续众多专业课程的基础。但目前专业教学中存在这样的问题,各阶段课程教学相对独立,缺乏课程间的有机衔接,程序类课程教学中重视语法结构和案例,很少能从程序设计的基本方法和思想进行引导,学生只能照样画瓢,缺少抽象思维、逻辑思维能力,难以编程解决实际问题。我们希望在学生掌握程序设计过程中激发起学生的软件工程兴趣。

针对这个问题,本文提出了一种两点并行的流程教学模式――软件工程环境下的C程序设计教学模式,即通过C语言来讲述程序设计,并将程序编写与软件工程原理的阐述有机地贯穿在一起,期望起到事半功倍的效果。

1C语言透视图

C语言是一种复杂而专业的计算机语言。如果将语言放在一个透视图中,学生由此能理解它的设计,这样,C就不是一种难懂的语言了。我们在实际课堂教学中,打破原先程序设计课程顺利讲授的方式,将课程内容按软件工程体系结构的要求逻辑重新组合。让学生通过透视全局的方式快速进入独立程序设计状态。

课堂教学以程序设计为中心组织内容,采用“案例引导,问题驱动”的描述方式。案例基本上来源于生活工作中的实际问题,较大程度地激发学生的学习兴趣。另外,在前两章内容中先简要介绍程序设计的基本思想以及利用计算机求解问题的过程,然后从实例出发,介绍顺序、分支和循环3种控制结构以及函数的使用。从第3章开始,再分主题逐步深入讲解程序设计的思想和方法,以及相应的语言知识。改变以前从一开始就进入C语言的语法学习,学生觉得枯燥乏味和教学低效的问题。让学生形成“算法比程序更重要,思想方法比知识更重要”的贯穿整个专业学习过程的思维宗旨。

2 “混合式教学”触发器

混合式学习(blended learning,BL)是传统面对面的课堂学习方式和数字化学习两种方式的有机整合,其本质是强调教师的主导作用和学生的主体地位。它与传统学习相比优势在于:不仅局限于对书本知识的简单记忆,更多的是对知识的深度理解和扩展,以及多方面能力的提升;既要发挥教师引导、启发、监控教学过程的主导作用,又要充分体现学生作学习过程主体的主动性、积极性与创造性[3]。

教师的教学灵感就像是触发器,在教学过程中要合理有针对性的释放,尽可能大地挖掘学生的学习欲望和潜力。我们在课堂教学的具体实施过程中应用混合式学习的理念,精心设计各部分课堂教学的课程导入、活动组织、学习支持、教学评价4个教学环节。如图1所示。

这里以C语言函数这一知识点的第一堂课内容为例,描述整个课堂教学过程,教学目标如图2所示。

所采用的主要教学手段,有以下5个部分。

1) 课程导入:利用前期课程中的实验案例引入新课概念。举例引入“斐波那契数列之前是用循环实现的,现在采用函数该如何实现?”

2) 角色扮演:通过角色扮演的游戏方式,让学生体会程序设计思路。同时感性地理解函数基本概念和函数构成的三要素。

3) 纸面模型:用“纸面模型”法的实物演示形式将抽象思维具体化。模拟函数参与程序后的整个流程。同时引入软件工程中的三个相关知识点:结构图,函数的复合以及自顶向下的开发的讲解。

4) 团队合作:分组完成一个随堂项目“在给定的函数中挑选合适的完成――学生成绩统计程序”的微型案例。强化记忆。

5) 互评机制:学生互相评价。教师总评与总结。

同时,在课堂教学中多媒体教学与黑板教学并用,课件与程序运行环境并用。部分例子,有时也不一定是一个完整的例子,只是相关知识点的几行代码,在课堂上边讲边编边运行,让学生边听边“消化”,并寻找时机进行提问,实现教学互动。引导学生针对问题构思框架,进入设计的细节,使用特定的描述方法,如流程图。最后使用计算机语言体现设计思想。

3软件工程环境的映衬

在每一章节的结尾部分,我们都安排软件工程原理的讨论。在这里讨论的目的当然不是代替独立的软件工程课程,是想将基本的软件工程原理引入早期的学习中,学生能更好地为以后正式参与项目开发做好准备,同时起到一个承上启下的衔接作用。更重要的是,一开始就将逻辑简单清晰、易读易懂作为程序编写的一个重要标准,学生就不需要在以后被强迫忘却坏习惯并重新学习。他们能在以后的课程中更好地理解软件的涵义,了解软件开发的过程。

尽管软件工程内容重点讲解出现于每一章节的末尾,但最好在每章一开始就先介绍,然后再在每章结束时对课程讲授中所展示的软件工程原理进行小结。因此,我们掌握的一个原则就是,在软件工程环境的映衬下,发挥C语言讲解的主导作用。

还是以函数这一章节为例,知识点的讲授顺序如下图3所示[1]。

4实践出真知

“Do it”才能够“Understand it”。C程序设计课是实践性极强的一门课程。只有通过在机器上编写代码,体现出把实际问题转换为计算机处理过程,理解计算机的“思维”方式,才能够激发学生的学习积极性和学习热情,同时通过编程产生一种“实现”的成就感。

我们在课程中引入综合性设计类实验的内容,设计6个左右的主题实训作业,其中安排3个有完整系统功能需求的任务,要求学生综合应用所学的知识,分析、设计、编码和测试完成自己的设计并撰写一份符合模板要求的报告文档。

1) 分层次设计主题作业。

在实际教学中,我们发现学生编程能力有较大差异。因此,6个主题实训作业按难度设置成3组(难度高、中和低,设置不同的考核得分),难度低的提供的参考资料(分析、算法和部分程序段)较多,这样使得层次低的同学也能完成作业。

2) 培养团队合作精神。

对于难度最高的主题作业,鼓励学生每2~3人组成项目小组,小组成员共同选择题目,商讨编程方法和具体分工模块。单人独立完成的项目,可培养学生对一个小型的功能相对完整的软件项目的理解能力和分析能力。而多人小组完成的项目,可培养学生的项目管理能力和团队协作精神。

5双语补给

英语是计算机的“母语”。在实际教学过程中我们发现,没有一定的英语基础已成为学生深入学习程序开发的“绊脚石”。首先,它反映在专业课程中,如果不重视这部分基础补给的话,接下来就会给一系列专业课程带来不良影响,其中就有软件工程。换句话说,如果能在程序设计学习过程中让学生形成比较好的英语氛围,这将对学生的整个专业学习起到相当积极的作用。但学生的英语基础参差不齐,就每个学生个体来说,各项英语素质也是高低不等,可能词汇量不少,但听说理解能力较差。因此,我们认为给学生进行双语补给,不等同于英语专业课程的要求。在这里,英语是一个配角的角色,不可缺,但也需要我们教师有的放矢的引导。

课程常规教学中,引入双语。在初期的代码讲解过程中,要有一定比例的时间锁定在双语讲解上,例如关键术语的讲解,代码编译错误的具体解释等。这些往往也是后续课程必须用到的专业词汇。

课后布置一定量原版书籍的翻译作业。让学生在指定的原版书籍中,每周任选一页进行翻译,定期教师检查评估。指定原版书籍为经典书籍Programming in C(中译名为C语言程序设计)和Software Engineering (中译名为软件工程)。通过这样的翻译练习,有助于学生原汁原味地理解知识点,有时这样的原味理解更直接更深刻。

鼓励学生阅读一些专业外文期刊的最新学术论文,以跟踪国际相关研究动态,开拓学生视野。

以上三点是对全体学生的要求和具体实施方案,对于专业上比较高的自我要求的学生以及到了高年级后还可以引导他们做如下的拓展:

1) 结合已有知识与见识,广泛阅读国外论文。

2) 通过开发类的外文文档学习专业英语。

3) 深入国外专业论坛进行交流学习。

4) 经常光顾国外大学、研究机构的相关专业网站。

5) 研究阅读国外开源软件的开发类、方法类等文档。

6) 网上听、看国外专业学术讲座与报告。

7) 国外开放课程在线。

6结语

C语言程序设计课程是计算机专业一门非常重要的基础课程,对学生的信息化素质培养至关重要,因此,应对本课程进行教学改革意义重大。通过在该课程教学中融入软件工程的思想,把老师积累的工程经验传递给学生,能够开阔学生的思维和眼界,动手实践能力也能得到了成倍的培养。将这两门课程的核心部分有效结合与衔接,这样的改革值得深入研究和进一步推广。

参考文献:

[1] Behrouz A Forouzan,Richard F Gilberg. Computer Science: A Structured Programming Approach Using C[M]. 3rd ed. Singapore:Cengage Learning,2007:90-138.

[2] 何钦铭,颜晖,陆汉权,等. C语言程序设计[M]. 北京:高等教育出版社,2008:1-10.

[3] 冯晓霞,陆汉权,方红光,等. 面向通识课程的程序设计基础课的教学实践[C]//浙江省高校计算机教学研究会.计算机教学研究与实践:2008学术年会论文集.杭州:浙江大学出版社,2008:93-98.

A Teaching Mode of C Programming Language in Software Engineering Environment

FU Chuan, SHEN Xin, JIANG Weiwei

(Information Technology College, Zhejiang Chinese Medical University, Hangzhou 310053, China)

Abstract: Programming capability is the most basic ability required for computer majors and a standard for qualified computer graduates. In current teaching system, relative independence of course teaching has brought about lack of effective link-up among courses. Aiming at the problem, the paper proposes a teaching mode of the C Programming Language in the software engineering environment―programming is taught through the use of the C language and the combination with the teaching of principles of software engineering. It is hoped to enhance students’ interest in learning their major, improve their overall programming capability and social competitiveness.

Key words: C programming language; Software Engineering; blended teaching; bilingual teaching

上一篇:“C语言程序设计”与计算机相关课程的融合教学... 下一篇:“编译原理”全英文授课模式探索