Advances in Education
Vol.08 No.04(2018), Article ID:25764,5 pages
10.12677/AE.2018.84062

C Program Training Teaching Practice for Cultivating Programming Ability

Shuai Yang, Yongjiang Xue

School of Computer Science & Software Engineering, Tianjin Polytechnic University, Tianjin

Received: Jun. 14th, 2018; accepted: Jun. 30th, 2018; published: Jul. 6th, 2018

ABSTRACT

The “C programming” course is a programming introductory course for many computer majors in universities. In order to consolidate professional knowledge and improve programming skills, the practice-oriented curriculum design will be followed. This paper analyzes the knowledge system and the key and difficult knowledge of the language programming. Based on this, we propose a case-based teaching method and design two cases. The process and precautions of the teaching method are described in detail.

Keywords:C Programming, Programming Ability, Cases

以培养编程能力为导向的C程序课程设计教学实践

杨帅,薛永江

天津工业大学计算机科学与软件学院,天津

收稿日期:2018年6月14日;录用日期:2018年6月30日;发布日期:2018年7月6日

摘 要

“C语言程序设计”课程是许多高校计算机类专业的编程入门课程,为了巩固专业知识,提高编程能力,该课程后续会进行以实践为主的课程设计。本文分析了C语言程序设计的知识体系和重难点,在此基础上提出了基于案例的教学方法,并设计了两个案例,详细描述了该教学方法的过程和注意事项。

关键词 :C语言程序设计,编程能力,案例

Copyright © 2018 by authors and Hans Publishers Inc.

This work is licensed under the Creative Commons Attribution International License (CC BY).

http://creativecommons.org/licenses/by/4.0/

1. 引言

随着科技的进步和计算机的普及,社会对程序开发人员的需求与日俱增。C语言程序设计作为一门面向过程的程序设计语言,其教学目的是培养学生初步具有求解复杂科学问题的计算思维能力、算法设计能力、程序编程能力和测试分析能力 [1]。“C语言程序设计”是我院专门为计算机技术、软件工程和物联网工程专业大一新生开设的基础课程。这门课程主要讲解C语言中的概念和语法结构,课上的实验多为练习具体知识点的验证性实验。学完该课程学生很难将C语言中的诸多概念融会贯通。由于课上编写的实验程序枯燥无味,并且解决的都是一些较为简单的问题,所以学生感觉C语言没有什么用途。

为了培养学生的编程思维和编程兴趣,提高学生的编程能力,巩固C语言知识,我院在大一下学期开设了为期两周(共30学时)的“C程序课程设计”课。该课程以提高学生的编程能力为目标,采用案例教学的方法,课上以学生练习和汇报为主。该课程在实践的过程中融入了当今翻转课堂的理念,比较适合工科背景下程序设计类课程的教学。

2. C语言的知识体系及重难点

根据提高学生编程能力的要求,该课程需要重点培养学生的以下能力:问题的抽象与描述、算法的分析与设计、数据表达与构造、程序编写与测试。C程序设计的教学内容主要包括以下几部分:数据类型、算术运算和表达式、标准输入和输出、程序控制结构、函数、指针、数组、结构体和共用体、文件等。每部分的教学内容和要求、重点和难点如表1所示。

3. 基于案例的教学方法

学生由于已经学完“C语言程序设计”课程,已经基本掌握该课程的基础知识,只是课上的很多知识可能是割裂的不成系统的,本课程需要将这些知识融会贯通,从而提高学生的编程能力。程序设计是一种技能性知识,需要在不断的实践中掌握,因此我们采用基于案例的教学方法。该方法的主要步骤如图1所示。

3.1. 案例设计

案例教学需要情景结合,师生互动,注重学生的实践活动。在基于案例的教学方法中,案例的选择是关键步骤。案例设计应该突出学生在教学中的主体地位,注重学生实践动手能力的培养。我们在案例设计中遵循四个原则:案例要具有的知识性和趣味性;案例要贴近实际应用;案例设计要以点带面循序渐进;案例设计注重培养学生以计算机思维解决实际问题。根据以上要求和原则,设计了以下两个实验,详情如表2所示。

3.2. 基础知识回顾

在解决实际问题时,学生应该先有解决问题的思路。这个思路对应到C程序设计中,就是要首先研究

Table 1. The priorities and difficulties of C programming

表1. C语言程序设计重难点

Figure 1. Case-based teaching method steps

图1. 基于案例的教学方法的步骤

Table 2. Case details

表2. 案例详情

和确定算法。由于问题具有一定的复杂性,所以需要教师在课堂上进行适当的引导,指出解决这些问题需要使用的具体知识点。解决具体的问题,对于学生来说既新鲜好奇,又充满挑战。若解决问题的难度过大,学生就容易放弃。因此教师做好基础知识的回顾,适时地启发对于教学效果的提高具有至关重要的作用。

在知识回顾阶段,根据表2中知识点,安排合适的教学内容。以贪吃蛇游戏为例,要回顾的知识点包括:函数、数组、指针、结构体、宏定义、链表和文件等。在知识回顾的过程中,要结合具体的案例。如:贪吃蛇游戏中“蛇”的表示,需要记录“蛇”的坐标,可以使用数组也可以使用链表,由于需要经常在头部添加元素,故而使用链表。在这个过程中让学生明白了数组和链表在存储数据上的优缺点,加深了学生对基础知识的理解。

3.3. 分析问题

教师通过分析案例,启发学生使用计算机的思维去解决问题,同时让知识和案例结合的更为紧密,从而实现从实践到理论,从具体到抽象的学习。以“求任意多边形间的交集”为例,要想灵活地处理不同的输入和输出,那么就要求程序能够基于不同的数据结构工作,实现这个要求使用C语言中的函数指针能够很好地解决这个问题,仅需要调用者提供对应的数据输入和输出的函数,然后将函数指针作为参数传入算法就可以了。

分析问题的过程,是教师思路外化的过程。通过分析问题,学生可以学到教师思考问题的方式方法。这对于提高学生解决实际问题的能力是至关重要的。

3.4. 程序编写和调试

程序编写和调试是基于案例的教学方法的重要组成部分,也是提高学生编程能力的关键环节。通过上一步的问题分析,学生基本已经具有了解决问题的思路,程序编写是一个实现思路的过程,也是将所学的C语言知识应用于解决实际问题的过程。这个过程可以很好地提高学生的编程能力。在这个环节中,突出学生的主体作用,教师作为服务者,提供必要的答疑服务,引导学生正确地进行程序的编写和调试。

在这个环节,学生以小组的形式进行组织,设一名小组长。小组内通过讨论的方式进一步明确问题解决方案和步骤,将问题进行分解,每个成员负责一部分程序的编写。遇到问题,组内讨论找到合适的解决方案。

3.5. 成果汇报和结果评价

学生编写和测试完程序,完成了任务要求中的功能后,需要以小组的形式汇报本小组的工作。汇报需要包含程序设计的思路,主要的数据结构,重要的程序逻辑,程序运行结果,程序设计过程中遇到的问题以及解决方法。汇报最后分享程序设计过程中的感想。

学生通过成果汇报可以加深对专业知识的理解,同时又再次回顾了程序设计的过程,可以站在更高的高度去理解和思考问题,可谓一举多得。

最后教师根据汇报的实际情况进行评价,对学生讲解过程中出现的问题进行指导,对一些关键的知识点和实现方法进行提问,促进学生真正地掌握这些知识。

4. 结束语

从2016年开始,在天津工业大学计算机科学与软件学院物联网工程专业中,使用了本文提出的以培养编程能力为导向的基于案例的教学方法。在实践的过程中,注重突出学生的主体作用,教师作为引导者,以学生动手实践为主,使用分组自主学习的方法,培养学生的编程能力。该方法取得了良好的教学效果。案例的设计以及导入是实现该教学模式的关键,案例的知识性和趣味性是该模式下教学效果的保证。今后仍需进一步设计更多具有知识性和趣味性的案例,丰富教学内容。

基金项目

天津工业大学教改项目(Y20160419)。

文章引用

杨 帅,薛永江. 以培养编程能力为导向的C程序课程设计教学实践
C Program Training Teaching Practice for Cultivating Programming Ability[J]. 教育进展, 2018, 08(04): 407-411. https://doi.org/10.12677/AE.2018.84062

参考文献

  1. 1. 教育部高等学校计算机科学与技术教学指导委员会. 高等学校计算机科学与技术专业核心课程教学实施方案[M]. 北京: 高等教育出版社, 2009: 229-232.

  2. 2. 刘勇奎, 高云, 黄有群. 一个有效的多边形裁剪算法[J]. 软件学报, 2003, 14(4): 845-856.

期刊菜单