以解决本专业问题为导向的C语言程序设计课程教学探索
摘 要 针对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教学网站系统来辅助本课程的学习,帮助学生学会文献检索的技能,为学生在以后的学习和工作中保持继续学习打下坚实的基础。在这一阶段中,要求学生必须提供完整的项目文档并完成教师组织的简单答辩。
以上三个阶段中,除第一阶段由任课教师为学生写出项目文档大纲、学生进行补充完善外,其他两个阶段学生都要独立撰写项目文档。在第二、三阶段中,教师将学生分成若干小组,每个人作为小组的成员,都有分工,每个小组选出一名小组长负责整个小组内部以及小组之间的协调和管理工作,小组和小组之间以竞赛的形式完成各个实训题目并相互评价。教师僅仅起到“导师”的作用,帮助学生打开解题思路,及时引导学生总结归纳编程技巧和语法知识,为学生提供技术支持。通过小组学生之间的讨论和协作,提高他们学习C语言的主动性,同时也锻炼了学生的团队协作能力[3]。最终要求学生以小组为单位提交相关文档以及编写的程序代码来检验本阶段的教学效果,避免了以前个别学生抄袭别人报告的现象。
4 制定合理的过程监控机制,有效记录学生的学习过程
积极探索有效记录学生学习过程的监控机制,以上每个阶段结束,任课教师都会及时对学生项目中的亮点和不足进行分别讲解,并认真对学生的每个项目进行批注,以便学生进行改进。同时为每次作业划分等级,让学生明确自己本次学习所处的层次,让学生既有学习的兴趣,又有学习的压力和动力。期末考核方式参考平时作业成绩,采取“笔试+实验考核+开放式作业+课程论文”的形式进行过程考核,积极探索C语言程序设计课程的“嵌入式”考核方式。
5 以解决本专业问题为导向的教学法的教学效果
基于专业内容的案例教学,培养了学生的学习兴趣 以“加强基础、拓宽专业、注重实践”为原则,以案例教学、任务驱动、螺旋式上升模型等多元化的教学体系引导学生学习,把计算机程序设计作为解决本专业知识的工具,以本专业经典问题为导向的课堂教学案例,促进学生对专业知识的加深理解,使学生体会到C语言程序设计课程在专业学习中的地位,培养学生的计算思维能力、逻辑思维能力和逻辑推理能力,以及利用计算机解决本专业问题的能力,提高学生学习本课程的主动性、积极性,促进学生个体充分自由地发展,培养学生的创新能力。
螺旋式上升的项目任务,激发了学生的求知欲 项目递进驱动的教学法,通过一个比较实际的切入点,特别是再通过附加一些微视频,微视频中教师一步步的详细演示使学生感觉能够入手,解决了学生学习程序设计课程的恐惧心理,然后再将此实例不断修改、扩充,加大难度,引出与此实例相关的一组例子。在这样的案例教学中,因为有提出问题、解决问题、扩展问题、再解决问题、对解决问题的方法进行评价、优化设计等几个环节,实际上是一个循序渐进、螺旋式滚动上升的过程[4]。
在案例教学过程中,学生和教师相互提出问题、共同解决问题、深化和扩展问题、再提升解决问题、并对问题解决方法进行评价,这就是一个不断渐进、提升的过程,在这个螺旋式上升的过程中,能够非常自然地调动学生的参与。通过不断扩展一个问题的多种解决方案并对多种方案进行对比,有效开阔学生的思维,强调学生的学习主体地位。这种层层推进的教学方法避免了学生“三级跳”式学习,而有了“走台阶”的扎实基础,使学生在解决实际问题的过程中完成学习任务,实现计算思维能力培养与专业实际应用的无缝融合,激发学生的求知欲,增强学生的自信心。
立体化的过程监控机制,克服了学生临时抱佛脚的学习劣习 “笔试+实验考核+开放式作业+课程论文”的“嵌入式”过程考核机制,使得学生重视学习过程,避免考试前临时抱佛脚的学习劣习。这种监控机制和“课堂教学→实验教学→创新实践”理论与实践相结合、相辅相成、相互促进的螺旋式上升模型新教学手段,更符合各专业的教学需求。
6 结语
综上所述,从专业内容出发,以解决专业实际问题为导向的C语言教学方法是以建构主义学习理论为指导,通过选取专业领域的经典问题,以协作学习的方式开展学习,通过完成最终的工程项目来达到意义建构。它突破了一般的教学模式,通过解决学生本专业的经典问题来实现学生对C语言程序设计知识的掌握,学生通过螺旋式上升的递进教学法的学习,计算思维能力、解决专业领域实际问题的能力有了极大提高,大大提高了学习本课程的积极性和主动性。本文的教学理念和教学方法不但对非计算机专业学生的C语言课程教学效果比较好,对计算机专业学生的C语言教学也是很好的借鉴。特别是针对目前学生学业水平差异大、自主学习能力差的现状,加上本课程应用性强的特点,本文的教学方法有其卓越的表现。
参考文献
[1]马玉春,汪文彬,王冬,苏静.面向工程技术的C语言程序设计教学实践研究[J].琼州学院学报,2011,18(5):64-68.
[2]姚志宏.中等职业教育中C语言教学改革[J].实验教学与仪器,2013(6):45-47.
[3]于力.基于趣味案例驱动的C语言实验教学设计[J].教育教学论坛,2011(32):187-188.
[4]赵亚玲.项目递进驱动教学法在《C程序设计》的应用[J].陕西能源职业技术学院学报,2010(1):75-76.
推荐访问: 题为 本专业 导向 课程教学 探索