以解决本专业问题为导向的C语言程序设计课程教学探索
发布时间:2019-08-07 来源:
摘 要 针对C语言程序设计课程在计算机及其相关专业中存在的“狭义工具论”的教学现状,本着“以应用能力培养为目标、以计算思维为手段”的原则进行知识选取和教学内容、教学案例、教学方法的设计,提出“基于专业内容,以解决本专业问题为导向”的项目驱动、螺旋式上升、过程监控等多种手段相结合的立体化教学方式。通过将计算机基础教育与专业技术相融合,从计算思维能力与创新人才培养相结合的视角,提高专业化教育过程中的创新培养层次,建设培养复合型拔尖人才的课程体系和教学平台,为国家培养创新型人才提供新思路和新途径。
关键词 C语言程序设计;过程监控;螺旋式上升
中图分类号:TP311.1 文献标识码:B
文章编号:1671-489X(2017)06-0084-03
1 引言
C语言程序设计是理工科专业(如电子信息与科学、通信工程、物联网技术和应用数学等)的基础课程,嵌入式系统中的单片机与DSP程序设计,采用C语言编写应用程序比汇编语言可读性更强,且更易于维护[1]。该课程的学习目标是不仅要使学生学习程序设计的基本概念和基础方法,学习编程规则,还要培养学生的计算思维能力、理论与实践相结合的解决专业领域问题的应用能力,提高专业化教育过程中的创新培养层次。
然而绝大多数学生在刚开始接触C语言程序设计这门課时,对计算机语言、算法和数据结构知之甚少,更不具备抽象建模、程序设计技巧的相应知识[2]。加上这是第一门程序设计课,大量的新概念、新名词让学生感觉应接不暇,在刚刚接触编写程序时毫无头绪,只能仿照现成的例子照猫画虎,进行浅层次的验证性实验,根本掌握不到程序设计的精髓,更达不到计算思维能力的培养,以致该门课程教学质量普遍不高。
为了解决这些问题,笔者在长期教学实践中总结教学经验、探索教学方法,提出“基于专业内容,以解决本专业问题为导向,以计算机围绕专业问题服务为原则,促进学生个体发展,增强学生创新意识,产生创新能力”的教学思想。针对C语言程序设计课程特点,从教学理念、考核形式、教学方法、课程内容等方面做了大胆的改革与创新,采取多种教学方法和教学手段相结合,提高学生学习兴趣,取得良好的教学效果。
2 精心设计以解决本专业问题为导向的教学案例
在以往的教学活动中,大部分学生的基础知识虽然掌握得不错,但在灵活解决实际问题方面,还是有不小距离的。他们虽然心中有一些解决问题的模糊思路,但不会将想法转换成程序,甚至还有一些学生直到最后也不会把实际问题变换成算法设计。针对上述问题,课程组教师在教学内容的安排上注重在C语言教学中紧密结合本专业特点,本着“精讲多练,重实用,重算法”的原则,结合专业方向对C语言程序设计课程教学内容的差异化要求,确定分专业分层次的教学内容,制度详细的教学任务,选择各专业的经典问题作为课堂教学案例。以专业知识为基础,以解决专业问题为目标,采取任务驱动、因材施教的方式,创建多元化的教学体系,能够激发学生的学习兴趣。
将单纯的C语言程序设计教学与专业领域应用相结合,把计算机程序设计作为解决专业问题的工具,有利于学生了解C语言程序设计作为“专业工具”的作用,便于学生对C语言精髓的掌握,能够培养学生的计算思维能力、逻辑思维能力和逻辑推理能力,以及利用计算机解决本专业问题的能力,提高学生学习本课程的主动性、积极性,促进学生个体充分自由地发展,培养学生的应用能力和创新能力。
3 项目递进驱动教学法
在实验教学过程中,制定各专业领域相关实训项目,以由易到难、循序渐进为主线,采取多层次的项目拓展训练、递进式的螺旋式教学方法,让学生整体提高程序设计能力。整个教学设计分为三个阶段。
编程基础准备阶段 本阶段的教学内容主要是以本专业的经典问题作为课堂教学案例,引出本课程单元基础知识。在这一部分教学中通过教师对教学案例的讲解,学生通过实训项目的上机操作,会出现输入、编写等问题,通过解决实训时出现的问题加强对语法、编程规则的掌握。本着“精讲多练,重实用,重算法”的原则,用大量典型案例进行实训,起到拓展学生编程思维的作用。如在为数学专业设计程序三大基本结构项目时,本阶段的教学案例分别为分支结构为分段函数的计算、循环结构为求1到10之间的自然数的和。
项目拓展阶段 通过基础阶段的训练,学生已经初步对程序设计有感性认识,并有一定的计算思维基础,本阶段的任务设计上以第一阶段的任务为基础,将与此相近、相关的案例进行总结,主要是通过实训项目的形式来巩固基础阶段的训练成果,养成良好的编程习惯。如在为教学数学专业设计程序的三大基本结构项目时,本阶段让学生完成的项目有:求1到100之间自然数的和、判断某数是否为素数、求1到100之间的素数、打印杨辉三角形、输出各种形式的九九乘法表等。实训题目按类别设计,同类的实训项目一般设计多个,每个题目又根据难易程度设置不同的分值(方便后期的多元立体化评价),学生可根据自己对知识掌握的情况和自己的兴趣爱好选择一部分题目来练习。但不管是容易的题目还是难度较大的题目,都必须严格按照要求提交相关文档以及编写的程序代码。
项目递进阶段 本阶段让学生自由组合成3~5人的互助式小组,以大作业的方式对整个学习阶段的效果进行巩固,同时进行测试和验收。由于任务量比较大,所以该阶段主要在课下完成。在本阶段中,教改组成员在对不同专业做了详细调研的基础上,精心设计若干个与大学生各类竞赛紧密结合的、贯穿整个教学过程的大项目作为本阶段的任务。教改组成员为数学专业学生设计的课程大项目是学生成绩管理、分析系统,该系统用到大量的数学分析函数来实现对学生成绩的统计分析,要求学生尽量自己编写这些数学分析函数,然后和系统提供的函数做出比较。为电子信息科学与技术专业学生设计的课程大项目是汽车导航系统,该系统用到硬件之间的通信和C语言基础编程,让学生看到原来C语言还可以做出如此高级的产品。这一阶段主要以学生自主完成作业、教师负责答疑的形式进行,教师对学生提出的问题并不直接给出答案,仅仅给予学生一定的指引,引导学生通过各种途径查找资料,促使学生自觉利用互联网、校园网、图书馆、BBS教学网站系统来辅助本课程的学习,帮助学生学会文献检索的技能,为学生在以后的学习和工作中保持继续学习打下坚实的基础。在这一阶段中,要求学生必须提供完整的项目文档并完成教师组织的简单答辩。