基于项目任务驱动的C语言程序设计课程教学改革与实践

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第2期 2017 年 2 月 10 日
计算机教育
Computer Education
文章编号:1672-5913(2017)02-0041-04
41
中图分类号:G642
基于项目任务驱动的 C 语言程序设计课程教学 改革与实践
郭银章,王丽芳
(太原科技大学 计算机科学与技术学院,山西 太原 030024)
摘 要:针对高等工科院校计算机类专业 C 语言程序设计课程在教学过程中存在的问题,在分析该课 程教学目标、教学内容和学生能力培养要求的基础上,提出以培养计算思维能力和程序设计能力为目 标的课程教学改革思路与方法。作者采用建构主义的教育思想,将任务项目驱动的教学模式引入课堂 教学和实践教学过程中,设计一种包含“学习任务设计与执行、分析与求解、编程与测试、评价与总 结”四阶段教学模式。最后说明关于 C 语言程序设计课程教学的几点思考。 关键词:C 语言程序设计;任务驱动;项目驱动;计算思维;算on
2017
1 C语言程序设计课程的教学目标与知识 体系
1.1 教学目标与能力需求 C 语言程序设计是一门面向过程型的程序设
计课程,其培养目标是通过程序设计语言的基本 结构、算法分析与设计、数据的表达与构造、编 程测试与分析等知识与方法的学习,使学生理解 程序设计语言的基本构造,掌握算法设计的基本 思想和方法,掌握变量、函数、数组、指针等基 本数据表达和构造方式,掌握数据处理流程控制 方法以及程序模块化结构设计方法,具备计算机 基本科学问题的分析和数据表达能力、算法描述 与基本算法实现的能力、模块化程序设计及调试 分析能力,初步达到利用计算机求解复杂科学问 题的计算思维能力。
表 1 C 语言程序设计知识单元的重点和难点
知识单元
重点和难点
程序设计基础
计算机学科求解工程问题的基本特点和程序设计的范型概念;程序设计的基本结构。
算法设计基础
计算思维方式的建立以及算法在科学问题求解过程中的重要作用;掌握算法的描述方法以及排序、查找、 递推、迭代等算法的实现;了解贪心和分治算法的设计思想。
0 引 言
C 语言程序设计作为一门面向过程的程序设 计语言,其教学目的是培养学生初步具有求解复 杂科学问题的计算思维能力、算法设计能力、程 序编程能力和测试分析能力 [1]。通过该课程完善 提出问题、设计算法、数据表达、编程测试以及 结果分析的整个程序设计过程,进而培养学生求 解复杂问题的计算思维能力、设计与选择解决方 案的能力以及用程序设计语言实现方案并进行测 试和评价的能力 [2]。目前,在 C 语言程序设计教 学过程中,由于很多任课教师对课程教学目标认 识不清,而且教学内容抽象繁杂、教学方法和手 段单一,使得学生在学习过程中,虽然掌握了大 量的程序设计概念和语法,却缺乏求解工程实际 问题的科学思维能力、算法设计能力和编程实现 能力。具体表现在以下几个方面 [3]。
(1)课程教学目标模糊,对学生能力的要求 不具体。作为计算机类专业的第一门专业核心基 础课,很多任课教师没有很好地理解和掌握 C 语 言程序设计课程的教学目标,在教学过程中,没
有突出学生计算思维能力的建立、算法设计思想 的掌握以及程序设计方法的讲授。另一方面,在 学生能力培养的达成度方面,没有清晰明确地指 出该课程学习的能力要求。
(2)课程教学内容繁杂,课程知识体系有待 优化和调整。在实际教学中,授课教师只是片面 地按照教材的章节进行讲授,只重视程序设计语 言的概念和语法细节,形成了很多孤立的知识, 学生无法建立程序设计的整体概念,导致学生学 习困难、死记硬背、眼高手低等问题产生。
(3)课程教学方法陈旧,教学理念和手段急 需改革。当前,C 语言程序设计的教学模式普遍 存在“满堂灌”的现象。任课教师重视课堂教学 的形式、忽略编程实践能力的培养,没有达到 编程训练的学时要求,学生程序实现能力得不 到提升。
函数
参数的设计原则与参数的传递方式;变量的生存周期与作用域;递归函数的实现机理和执行过程;利用 函数实现模块化程序设计的基本方法;分治、贪心等常用算法的设计策略。
数组与构造类型
数组和结构体作为函数参数时的数据传递方式;结构体和共用体在占用字节数上的区别;向函数传递一 维数组和二维数组的基本方法;用字符数组表示字符串的基本方法;嵌套结构体成员的引用方法。
很多高校在开设 C 语言程序设计的课程中,
存在采用面向对象的 C++ 和 C# 语言进行讲授的 问题,从本质上讲,面向对象的程序设计是一个 设计方法层面的问题,其最终对象体的实现,仍 然是一个结构化控制过程 [4]。在具体的教学过程 中,通过增加面向对象程序设计基础内容的讲 授,对比面向对象程序设计与结构化程序设计方 法在解决问题思维上的不同,使学生从本质上认 识封装、继承、多态等基本概念和编程思想。 1.2 课程内容与知识体系
C 语言程序设计的教学内容和知识体系,按 照问题抽象与描述、算法分析与设计、数据表达 与构造、程序编程与测试的教学要求,设计不同 层面的知识单元和知识体。其教学内容主要包括 程序设计基础、算法设计基础、数据类型基础、 程序控制结构、函数、数组与构造类型、指针、 文件与数据存储、面向对象程序设计基础等。每 一部分的重点和难点列子表 1 中 [5]。
针对以上问题,笔者提出了一种基于项目任 务驱动的 C 语言程序设计教学模式,该模式融合 了当今翻转课堂、CDIO、慕课、微课线上线下 等先进的教学方法和手段,特别适用于工程背景 突出的程序设计类课程的教学。
基金项目:山西省教学研究项目(J2014073);太原科技大学教研项目(201116,201418)资助。 第一作者简介:郭银章,男,教授,研究方向为协同计算与系统安全,guoyinzhang@。
数据类型基础
各种数据类型的数值在内存中的表示方法和取值范围;各种数据类型变量的命名、存储、赋值、转换; 算术、赋值、关系、逻辑运算符含义、优先级、结合性以及表达式的计算规则。
程序控制结构
讲解顺序结构时,穿插介绍基本输入输出的标准函数;讲解条件结构时,讲清嵌套结构及基本的程序测 试思想。介绍控制结构时,可穿插介绍累加、累乘、迭代、穷举等常用算法。
相关文档
最新文档