时间:2023-07-24 16:32:49
导语:在程序设计的基本结构的撰写旅程中,学习并吸收他人佳作的精髓是一条宝贵的路径,好期刊汇集了九篇优秀范文,愿这些内容能够启发您的创作灵感,引领您探索更多的创作可能。
关键词:卓越计划 实践教学 考核模式 创新能力
中图分类号:G642 文献标识码:A
学生的实践能力与创新精神的培养是教育部卓越计划的核心目标,如何改革原有专业教学模式与课程体系,更好地满足对卓越工程师实践与创新能力培养的根本需求,成为卓越计划实施中的关键问题。作为教育部第一批卓越计划试点专业,山东理工大学计算机学院从计算机科学与技术专业最重要的实践与创新能力――程序设计能力培养入手,以程序设计基础类课程的建设与创新为切入点,结合多年来“定制式培养”“校企合作”的专业改革经验,先后从课程的教学内容整合优化、实践教学模式创新、考核模式改革和创新能力培养等方面,进行了深入的探索实践。
1.程序设计基础类课程内容整合优化
程序设计基础类课程包含了程序设计基础、数据结构、编译原理等课程,这些课程均是计算机专业卓越工程师计划中最核心的专业基础课。程序设计基础主要介绍基本的程序设计思想与方法,数据结构主要介绍数据的逻辑组织形式与存储组织形式、编译原理则通过介绍程序设计语言编译器的构造原理、设计方法和实现技术,使学生在更高的层次上理解程序设计语言工作原理与程序运行机制。从课程特点来看,这几门课程在教学内容上既是紧密关联的又是直接衔接的。首先,程序设计基础为数据结构与编译原理的学习提供了必需的程序设计方法与基本技巧;数据结构既实现了复杂数据下程序设计基础内容的进一步的延伸与发展,又为编译器构造提供了结构化数据的逻辑与存储形式;编译原理则完成程序设计的经典方法与数据结构合理组织的有效结合,为在解决问题中实现程序设计方法的选择以及合理数据结构的表示提供了一个综合应用的平台。
基于卓越计划的培养要求以及三门课程内容上紧密关联的特点,我们对各门课程的教学内容进行了整合,根据课程之间的衔接关系适当的调整了部分教学内容。比如,基本线性结构的组织作为程序设计能力的重要基础,虽然既是数据结构也是编译技术中的基本问题,但在课程整合之前的课程中介绍均不够突出,在整合后就以专题的形式在程序设计基础上强化基本的线性数据结构(包括数组、Y构体、单链表等)表示与实现的知识,使得学生可以有重点的集中学习并掌握这些基本结构的表示与使用方法。再如,经典的算法设计思想是程序设计与编译程序设计实现必备的能力,在课程整合之前,与之相关的知识是零散的分布在三门课程中的,但每一门课程都未做特别的强化,学生掌握的总体效果并不好。在课程整合之后,把经典算法的设计思想与实现的内容更多地放在了数据结构课程中,结合各类不同数据的组织来讲授相关的经典算法,会使学生对算法与数据结构理解的更加深入。
2.课程实践教学模式的改革与创新
卓越计划的核心目标之一是提高学生的实践动手能力,程序设计基础类课程都是理论与实践紧密结合的课程,这些课程实践教学环节的教学水平与质量,对学生动手编程习惯的养成和编程水平的提高,有至关重要的作用。
首先,在实践教学环节设计上,实现了各门课程实践教学内容的优化整合以及有序连接。整合之后,三门课程实践教学内容各有侧重,其中基本编程能力的训练集中在程序设计基础实验以及实训中完成,数据组织技巧与算法应用训练集中在数据结构实验以及课程设计中完成,程序设计语言编译器的比较、系统分析与设计集中在编译原理中完成。
其次,课程的实践教学平台的建设是实践教学的关键,优质的实践教学平台可以非常高效的达到实践教学的目的。传统的实验教学存在着诸多的弊端,主要表现在:一是课内的上机课时非常有限,短时间内,学生调试不了几个程序,效率非常低;二是虽然也可以指定一些课外上机的题目,但教师无法实时地跟踪学生课外编程过程,学生无法得到及时指导。基于上述问题,我们从程序设计基础课程开始对实践教学模式进行彻底的改革。借鉴国际ACM大赛的竞赛平台模式,建立了山东省高校第一个程序在线评测系统(Oline Judge)SDUTOJ,针对不同学生的学习水平,提供了适合各层次学生的难度不同的大量题目,为各个层次的学生提供了选择的余地。学生可以随时随地通过网络提交自己的源代码程序,并且立即得到程序正确与否以及错误类型的信息反馈,还可以看到别的用户的提交状态以及各个题目的提交汇总信息,整体排名以及班内排名的信息等。截止到2017年4月6日,程序在线评测系统SDUTOJ已有注册用户24639个,实践性题目2870道,累计提交次数251万余次,是山东省高校中用户最多、题目数目最多、开放性最好、教学应用最为广泛的实践教学平台。在课程内容整合后,将该实践教学平台引入到数据结构与编译原理的实践教学中,并按照类别在程序在线测试系统中增加了大量的与数据结构以及编译原理有关的练习题目。程序在线评测系统平台被其他课程共享使用后,学生的动手实践积极性明显提高,特别是学生利用课外时间做题的数量越来越多,很多学生的课余时间都用在了程序调试上。课程实践教学所在的学期,每班的题目提交数量将近10000次,每个学生提交通过的程序数目在平均在150个以上。
3.课程考核方式的改革与创新
课程的考核方式应该体现课程教学的核心理念,程序设计基础类课程的核心理念已经从以往的单纯理论知识学习改变为理论与实践并重的学习,原有的考核模式已经无法适应对实践能力考核的需求。经过多年的改革与实践,我们逐渐摸索出一种有效的考核模式,对程序设计基础类课程原有的考核方式进行了彻底的改革,将传统的以理论考核为主转换为理论与实践同步考核的方式。在新的考核方式中把课程的考核分为基本理论与实践技能两个模块,基本理论考核以考察相关课程的基本思想与基础理论知识为主,主要的考核方式是期末的理论考试,试卷成绩占总成绩的40%。实践技能考核又分两个部分,第一部分是平时的实验成绩,以学生平时在程序在线测试系统(SDUTOJ)中通过的题目数量与质量作为评价依据,根据学生的排名得到平时实验成绩,占总成绩的30%;第二部分是期末的上机考试成绩,利用ACM竞赛的模式,学生在规定时间内独立上机编程,在规定时间内按照学生提交通过的题目数量以及专业相对排名次序核定成绩,占总成绩的30%。
4.课程建设对学生创新能力的培养
学生的创新精神与创新能力培养是卓越计划的另一核心目标,也是程序设计基础类课程建设的重要目标,与课程有关的大学生创新竞赛是改革效果的重要检验平台。我们建立了“以校赛带面、以训练带片、以大赛拔尖”的三级创新能力训练机制,培养学生程序设计能力。自2009年开始组织学校ACM大赛,参赛人数超过300人,以ACM创新实验室为训练基地,组织学生进行程序设计能力训练,参加程序设计基础训练的学生人数从最初的100人左右达到现在的800人左右。在此基础上选拔部分学生参加山东省和国际ACM大学生程序设计竞赛。
近年来,课程组先后组织卓越班学生参加了山东省以及国际ACM大学生程序设计创新竞赛,以检验课程建设在学生创新能力培养方面的效果。其中,在2010―2016年山东省举行的第一届至第八届ACM大学生程序设计大赛中,我校的25支参赛队伍全部获奖,其中获得一等奖7项,二等奖10项,三等奖8项。在2009~2016年的ACM/ ICPC国际大学生程序设计竞赛中,共获得30余项亚洲区域赛优胜奖、17项铜奖、6项银奖,并于2016年获得1项亚洲区域赛金奖,ACM竞赛总成绩位列山东省高校前三位。
5.课程创新与实践的效果
经过各项课程创新与实践措施的实施,程序设计基础类课程的教学质量得到明显的提升。2010-2012三届卓越班毕业学生均反映通过课程的学习,个人的实践动手能力得到逐渐地提升。课程任课教师也一致反映,通过程序设计基础类课程改革,卓越班学生的程序设计能力,特别是动手编程的能力较以前有了非常大的提升,学生综合竞争力增强,就业质量和考研继续深造的学生比例有大幅提高。从整体情况来看,我们的程序设计基础类课程的创新和实践改革处于省内领先水平,可以为卓越计划的教学改革和学生能力培养提供有益的借b。
参考文献:
[1] 刘晓静,王晓英,张玉安,黄建强,刘志强.以创新人才培养为目标的数据结构实验教学改革[J].实验技术与管理,2014,(11).
[2] 金兰.程序设计基础课程教学改革探索与实践[J].中国教学信息化,2017,(1).
一、如何应对全国计算机二级等级考试的公共基础知识大纲
计算机二级考试大纲中关于基础知识的有数据结构与算法、程序设计基础、软件工程基础、数据库设计基础四部分,下面笔者分别介绍一下这些部分的学习重点和方法:
1.数据结构与算法。
本章内容在计算机专业基础课中相对较复杂,考生对本章的内容必须理解,死记硬背是无效的。在二级等级考试中本章考核的重点和难点为二叉树的相关知识,其考核的形式主要为二叉树的遍历问题(如给图求遍历序列,给前序、中序遍历求后序遍历等)、二叉树的结点问题(如给出一些条件然后求叶子结点个数)、排序和查找。排序主要以计算时间复杂度的形式考核,查找主要以计算最佳、最坏比较次数的方式考核,其余的知识点主要以概念的形式考核,考生需要仔细看书并理解。
2.程序设计基础与软件工程基础。
这两章以概述的形式简介了规范化开发软件的方法。与数据结构不同,这两章内容主要是记忆性的知识点。程序设计基础这章在原大纲的基础上添加了面向对象程序设计的内容,考生对这部分知识了解即可;软件工程基础这章主要考核结构化分析、结构化设计方法(即SA及SD,约占50%)、软件测试(约占20%),考生需熟记相关的概念及规则。
3.数据库设计基础。
数据库是当前软件处理的信息核心,目前大部分软件是基于数据库的,因此,考生学习数据库的知识对程序开发是大有裨益的。本章主要的考点是关系模型、关系代数及数据库系统的基本概念,考生对其余的知识点了解即可。对于数据库的设计和管理,考生结合软件工程来看,会发现这两者有很多相似之处。本章内容除了关系代数会考一些简单的计算问题外,其余的都以概念题的形式出现,考生需要有针对性地进行复习。
二、二级公共基础知识的特点
大纲对全国计算机二级等级考试作了重大的调整:在取消了过时的考试科目和调整了一些科目的考试之外,新增加了目前比较流行的计算机语言C++、Java和Access数据库。公共基础知识的考核方式为笔试,与C语言程序设计、C++语言程序设计、Java语言程序设计、Visual Basic语言程序设计、Visual FoxPro数据库程序设计或Access数据库程序设计的笔试部分合为一张试卷,共有10道选择题和5道填空题,占全国计算机二级等级考试笔试总分的30%。公共基础知识部分的试题具有如下特点:
1.涉及面广,但难度小。
全国计算机二级等级考试中有关公共基础知识部分涉及的内容,从整体上分析,考核内容的难度不大,考点也相对比较集中。
2.考核重点为基本概念、基本方法和基本运算。
考试中涉及的题目都是基本概念、基本方法和基本运算,考核以概念和认识性内容为主,理解性、应用性内容极少。
3.考核重点是数据结构和算法。
数据结构和算法、程序设计基础、软件工程基础、数据库设计基础部分各占公共基础知识部分题目的百分比分别为:50%、12.5%、18.75%、18.75%,可见在全国计算机二级考试中,数据结构和算法是重点。
三、学习方法
1.考生的复习必须遵守“80/20的原则”。
全国计算机二级等级考试的公共基础知识部分覆盖面广,它至少涵盖了计算机应用专业的四门核心课程:数据结构与算法、程序设计基础、软件工程基础、数据库设计基础。事实上,这些课程本身的涉及面就很广,难度系数较大。所以,考生应把80%的时间用在20%的重点知识点上,争取用20%的重点知识点来答对80%的考题,这是考生复习全国计算机二级等级考试的公共知识部分的总体思路。
2.复习的关键是考生必须准确判断和掌握常见的考点。
考生必须准确判断和掌握常见考点,例如:算法部分主要考查算法的概念及算法的复杂度,数据结构部分主要考查最基本的概念、最典型的数据结构和最常见的操作,程序设计部分主要考查程序设计风格的基本要求、结构化程序设计的最基本知识和面向对象程序设计的最常见概念,软件工程基础部分主要考查软件工程的基本概念和软件生命周期的各个阶段的基础知识,数据库设计基础部分主要考查数据库基本概念、数据模型、关系代数基础知识、数据库设计方法和步骤。考生对常见考点的准确把握能避免盲目地复习,从而轻松面对考试。
3.基础知识的掌握方法。
很多考生在复习公共基础部分时都会发现内容零散,知识点之间的跳跃性大,似乎没有连续性。所以掌握起来很困难,似懂非懂,对知识点处于模糊认知状态。因此,考生必须在准确把握知识点的基础上,学会把“知识点”连成“知识链”,并把“知识链”织成“知识网”。
4.做题技巧。
考生切勿采取题海战术。对全国计算机二级等级考试公共知识部分,学生没有必要做大量的题目,更不能为了应付考试记一大堆错误答案。
5.非“灵活”地掌握知识点。
考生在掌握知识点时最好经历一个“先死后活、熟能生巧”的过程。全国计算机二级等级考试要求的知识点都是最基本的、最简单的,真正需要“灵活”掌握的考点极少。很多考生在考试过程中发现,该部分的题目“会做就是不懂”。所以笔者建议考生在复习过程中不要急于“灵活”,其实考生只要掌握基本的知识点,自然就“灵活”了。
6.答题技巧。
考生在遇到难题时要考虑成本和效果的关系,公共知识部分仅占30分,题目相对简单。因此,考生在答题过程中,对这部分内容要争取速度快、准确度高。在全国计算机二级等级考试中常常出现这样的情景:有些考生为了一道小题花费很长时间仍没有找到任何线索。一般来说,公共知识部分的考题难度不大,没有一道题目需要考虑很长时间。所以,考生如果做一道公共基础题在两分钟内没有任何思路时,就应该跳过此题,把时间留给后面的题目。
参考文献:
[1]全国计算机等级考试二级教程――公共基础.2008.
钟 实
(江西科技学院)
[摘 要]C语言程序设计课程是计算机专业教育的重要组成部分。将探究教学引入C语言程序设计教学中,不仅可以提高学生学习的兴趣,调动教师教学的
热情,也丰富了探究教学的理论与实践。具体分析并探讨了C语言程序设计探究教学的实施目标、实施条件、教学情境的创设、探究形式、教学评价等问题。
[关键词]C语言程序设计 探究教学 实施目标
一、 C语言程序设计探究教学实施的目标:情感目标、能力目标和认知目
标
1、体验C语言程序设计的编程思想,激发和保持对C语言程序设计课程的
求知欲,形成积极主动地学习和参与C语言程序设计课程探究活动的态度。
2、能辩证地认识C语言程序设计对社会发展、科技进步和日常生活学习的
影响。
3、获得亲自参与研究探索的积极体验、培养严谨的科学态度。
4、能从日常生活、学习中发现或归纳可以利用C语言程序设计解决的问题,
通过问题分析确定程序功能。
5、能根据任务的要求,确定所需信息的类型和来源,并鉴别信息的真实性、
准确性和相关性。
6、掌握计算机程序的基本概念,理解并掌握C语言程序设计语言的基本知
识,包括语句、数据类型、变量、常量、表达式、函数等,熟悉语言的语法规则,熟
悉计算机程序执行的基本过程。
7、了解C语言程序设计语言,掌握编写程序、编译程序、连接程序以及程序
开发环境等基本知识,掌握调试、运行程序的基本方法与技巧。
二、C语言程序设计探究教学实施的条件
1、掌握一定的计算机操作基础
C语言程序设计课程由于其学科自身的特点,需要在计算机上调试程序,
所以要求学生具有一定的计算机操作知识,如:开关机、键盘和鼠标的使用、文
件的建立与查找、常用软件的使用等。
2、良好的C语言程序设计认知结构
认知结构就是学生头脑里的知识结构,是学习者观念的全部内容和组织。
奥苏伯尔的认知结构理论是针对新学习内容的影响(即迁移)提出的,良好的认
知结构有利于知识的提取和正向迁移。C语言程序设计探究教学强调在已有知
识经验上的主动建构,面对新的问题和任务,需要学生及时从头脑中提取信息,
建立新旧知识间的联系,在已有C语言程序设计知识的基础上思考解决新问题
的办法,并试图将新知识纳入自己的认知结构中。
3 、良好的探究环境
良好的探究环境是学生顺利进行探究的保证,至少包含两方面的内容:(1)
要有充足的探究时间和灵活的探究条件。探究时间应该根据学习任务进行合理
安排,应该考虑到学生假设错误时所耽误的时间以及讨论交流所需要的时间。
探究教学中可能需要查阅大量的资料,教师还应该准备书籍、网络等辅助资源。
(2)学生在探究学习的时候不能有太多压力,不同的学生由于其自身的因素不可
能以相同的速度学习,所以教师在进行评价的时候也应该因人而异,应该为每
个学生提供充分的思考机会和时间,让每个学生都能以自己的进度进行探索,
并在此过程中感受到乐趣。
三、C语言程序设计探究教学情境的创设
心理学研究表明,恰当、适宜的环境能有效激发人的热烈情绪,提高活动的
质量和效果。教学情境是指教师人为创造的“典型场景”,创设目的在于引出教
学任务,将学生的注意力吸引到学习任务中来。教师把将要学习的C语言程序
设计知识通过一定的情境呈现给学生,使得学生认知结构与周围环境不平衡,
引起他们对学习目标的注意和兴趣,并通过探究活动把学生过去的活动和将来
的活动联系在心理学研究表明,恰当、适宜的环境能有效激发人的热烈情绪,提
高活动的质量和效果。教学情境是指教师人为创造的“典型场景”,创设目的在
于引出教学任务,将学生的注意力吸引到学习任务中来。教师把将要学习的C
语言程序设计知识通过一定的情境呈现给学生,使得学生认知结构与周围环境
不平衡,引起他们对学习目标的注意和兴趣,并通过探究活动把学生过去的活
动和将来的活动联系在一体。探究教学情境的创设应做到:(1)创设的情境是为
C语言程序设计教学服务的,要以C语言程序设计探究教学目标为依据。(2)探究
情境要接近学生的真实生活经验,能够吸引学生的注意力,激发他们的认知冲
突和求知欲。(3)学生在情境中能够感觉到问题的存在,自然地将新旧知识联系
起来。(4)情境中必须包含学生未知的新内容,而且是能够通过探究掌握的。
四、C语言程序设计课程中的探究形式
C语言程序设计课程中开展探究教学主要有4种形式:探究性提问、探究性
讨论、探究性演示和探究性实验。这4种形式是相辅相承的,而不是孤立存在的,
在C语言程序设计探究教学中,需要用到多种形式来构成一个完整的探究教学
过程。C语言程序设计探究教学通常都是由探究性提问开始,然后进行探究性
讨论、探究性演示或探究性实验;也可能从探究性演示或探究性实验开始,在演
示或实验的过程中发现问题,再进行探究性讨论。在实际教学过程中,要根据学
习内容和课堂情况灵活地选用这些形式。
五、C语言程序设计探究教学评价
教学评价指依据一定的标准,通过各种策略和相关资料的收集,对教学活
动及其效果进行客观衡量和科学判定的系统过程。C语言程序设计探究教学评
价是对C语言程序设计探究教学过程及其影响的测量、分析和评定,评价中我
们更关注学生学习和成长的过程,寻找适合学生发展的学习方式,满足学生知
识和能力发展的需要。评价对探究教学的积极作用是很明显的,但是如果评价
指标制定不合理,或者评价方法的选用、评价结果的表述不当,不仅不能达到预
期效果,还会对学生的C语言程序设计学习产生消极影响。
参考文献
[1] 《基础教育课程改革纲要(试行)》教育部文件,教基[2001]17号.
[2] 保罗 朗格朗.终身教育引论瞰[M].北京:中国对外翻译出版公司,1985,
p15~31.
[3] 联合国教科文组织.学会生存——教育世界的今天和明天[M].上海:
上海译文出.
版社,1979,p2.
[4] 张大均。教育心理学[M].北京:人民教育出版社,2005,p68--71.
[5] 靳玉乐.探究教学论[M].重庆:西南师范大学出版社,200l.
作者简介
钟实(1986-02)男、民族(汉),籍贯(江西省南昌市),2010毕业于浙江大学
关键词: 机械设计制造及其自动化 C语言程序设计 教学改革
C语言应用灵活方便,功能强大,是国际上应用广泛的计算机高级语言之一,同时也是众多理工科类专业的必修课程。然而,如何结合理工科专业自身特点进行“C语言程序设计”课程教学,使之既遵循课程教学的基本原则和方法,又融入专业背景是目前“C语言程序设计”课程教学改革研究的热点[1]。
1.机制专业“C语言程序设计”课程教学现状
机械设计制造及其自动化专业的“C语言程序设计”通常开设在大一下或大二上,授课54学时,其基本教学内容为基本语法、程序结构和简单算法及数据结构,教学方法上基本采用教师讲授各知识点,学生上机进行验证性实验。相比计算机类专业教学而言,机制专业学生没有系统地安排计算机类课程的学习,C语言是其学习的首个编程语言,学习难度大;由于缺乏“算法与数据结构”及“编译原理”等后续课程的支撑[2],学生进行真实项目编程实践的机会较少。综上所述,导致目前机制专业“C语言程序设计”课程教学中存在以下三个问题:
1.1对C语言的地位和作用认知不全面。
由于没有接触商业化编程项目,机制专业大部分学生认为C语言比较陈旧,不及JAVA、Python、C#等语言流行度高,仅认为C语言是国家计算机等级考试中的一门语言,没有全面认识C语言的地位和作用。在纯软件编程设计方面,C语言在TIOBE编程语言排名中一直位于前三位,是目前最流行的iOS/Android的底层核心开发语言。同时由于C语言具备位操作,使得其在硬件控制方面有得天独厚的优势,是控制硬件的基本工具,对于机制专业的单片机技术、数控编程、机器人技术、PLC原理及应用等核心课程学习极其重要。
1.2教学内容联系实际不紧密。
传统机制专业“C语言程序设计”课程教学内容过多集中在语法和程序结构的讲解,上机编程实验则集中在验证性实验方面,既缺乏对程序设计中重要思想和调试技巧的讲解和训练,又缺乏对重要数据结构和算法的详细讲解,使学生在解决实际问题时缺乏经验和技巧。同时在教材选择方面,“C语言程序设计”教材基本上是通用教材,并没有区分不同专业的需求和特点,使得机制专业学生在学习中无法接触C语言在本专业中的应用实例,导致大部分学生缺乏明确的学习目的。
1.3传统教学方法不适用。
目前在“C语言程序设计”课程的教学方法上通常以语法知识作为教学主线,教学方法仍以灌输式为主,C语言语法、数据结构及简单算法的理论性较强,传统讲授方法形式单一、启发性及对比性弱,学生未能成为学习的主体,学生理解掌握难度大。同时由于C语言的语法和结构的灵活性,如果不依托真实且具有专业背景的实例讲解,学习难度大,就会极大挫伤学习积极性,教学效果往往事倍功半。
2.基于机制专业特色的“C语言程序设计”课程教学改革
针对机制专业“C语言程序设计”课程教学存在的普遍问题,项目组推动了一系列教学改革,并在实施中不断改进和完善。
2.1增加关联课程介绍环节,强化C语言的地位与作用。
机制专业的“C语言程序设计”课改由本院专业教师承担,一改过去由计算机专业老师承担的现状,本院专业老师既熟悉C语言基本理论,对于C语言在机制专业中的应用情况又比较了解,并且具备使用C语言进行实际项目开发的经验。在教学中可以使C语言和本专业应用更有效地融合。
在“C语言程序设计”课程的入门介绍中,将C语言在机制专业的各领域的应用情况给学生做梳理和介绍,重点介绍其在单片机原理及应用、机械设计原理、数控技术、机器人控制技术、PLC原理及应用、现代控制工程等课程的应用。强化C语言和这些专业课程之间的联系,使学生认识到C语言对于这些专业技术而言,是重要的编程工具,其实际编程能力的强弱将直接决定其能否学习好上述专业课程。同时将C语言和JAVA、Python、C#等其他编程语言从数据类型、语法结构、编译效率、开发平台、商业应用五个方面进行对比分析,从纯计算机编程语言的角度向学生说明C语言的特点。以此强化学生对C语言地位与作用的认识。
2.2调整教学内容,强化机制专业特色。
C语言的教学实例在教学中至关重要,是理解C语言基本概念和程序设计思路的桥梁,而传统教学实例以简单算法(例如:斐波拉契数列、猴子摘桃、杨辉三角等)为主,缺乏专业背景,且略显枯燥。在改革教学中,教学实例增加大量具有特定专业应用背景的项目案例作为实例讲解,使教学实例理论性和实践性有效结合,将理论学习与实物开发通过实例结合后,既体现C语言在这些领域的应用,又提高学生学习的积极性,有利于培养其解决实际问题的能力。
例如当学生完成基本语法和循环结构程序设计的学习后,将“单片机原理及应用”课程中的经典案例――LED跑马灯作为讲解实例,在简要介绍LED灯发光原理后,利用Proteus平台搭建由8个LED灯构成的跑马灯系统,教师编写好程序整体框架后,引导学生使用赋值语句使8个LED灯逐个点亮,使学生理解赋值操作和LED灯被点亮之间的关系。在此基础上,进一步引导学生使用循环结构程序使8个LED灯依次循环被点亮,而且循环次数可以设定,形成跑马灯,让学生在“程序修改”至“现象改变”的过程中深刻理解循环结构程序的作用;当学生完成选择结构程序设计的学习后,引导学生在开源的Arduino系统上对智能小车进行避障控制,当智能小车上红外传感器有信号,表明前方有障碍,则需要绕过障碍,通过实现此控制功能,学生可以深入理解选择结构程序,反复使用if-else语句进行选择结构程序设计,控制智能小车走迷宫;再如当学生完成基于函数和指针的复杂程序设计学习后,可引导学生利用C语言调用相关库函数进行画法几何的作图练习,作出某一零件的三视图,使学生熟练掌握库函数的调用和复杂程序设计。
2.3利用机器人综合实验平台,突出手脑并重。
为使学生学以致用,院实验设备与管理中心联合博创等企业建立了机器人综合实验平台,可作为“C语言程序设计”课程的课外第二课堂,该平台提供底层驱动代码,学生可以在此基础上利用C语言控制机器人上的各种舵机,实现控制功能。在“C语言程序设计”课程的学习期间,引导学生进入机器人实验室进行简单的机器人控制操作,将所学的C语言程序设计知识用于实际控制中。同时,该平台可提供分立元件由学生自行设计搭建机器人,使学生得到充分的动手训练,做到手脑并重。
3.教改效果
实践表明,通过以上教改措施的实施,教学效果显著,教学质量有效提高。首先,学生不再将“C语言程序设计”课程的学习目的仅定义为通过计算机等级考试,而是认识到学习C语言对其后续专业课程的作用;其次,通过具体专业实例的学习,学生的逻辑思维能力得到锻炼,解决问题的算法明显呈现多样性。近年来,贵阳学院机械工程学院学生利用C语言作为编程语言,参加全国大学生机械创新设计大赛,多次获得赛区一、二等奖;在全国“三菱自动化”设计大赛中,多次荣获全国一等奖。以上成绩的取得,表明贵阳学院机械工程学院“C语言程序设计”课程教学改革取得初步成效。
参考文献:
[1]陈丽敏,邵长友.基于自动化专业C语言课程教学改革的研究[J].中国电力教育,2013,(31).
[关键词] C语言教学 兴趣教学 任务驱动 动画效果
一、引言
“C语言程序设计”作为大学计算机基础教学系列中的核心课程体系“计算机程序设计基础”中的一门课程,主要讲授程序设计语言的基本知识和程序设计的方法与技术,其内容以程序设计语言的语法规则和程序设计技术的基本方法为主,同时包括程序设计方法学、数据结构与算法基础等方面的初步内容。
二、C语言教学的目的和特点
在我国大多数高校,无论是计算机专业还是非计算机专业,往往将“C语言程序设计”作为第一门程序设计课程。对于非计算机专业的学生来说,要求他们通过学习成为程序设计人员是不现实的。基于素质教育思想,“C语言程序设计”的教学目的是掌握C语言程序设计的基本知识和程序设计方法,为后续课程的学习打下基础;而更重要的是培养学生分析问题解决问题的能力,培养学生计算机程序设计的能力和素质,以及逻辑思维能力和方法。
程序设计是具有创造性的工作,且具有一定的抽象性,它用数学的方法描述问题,建立数学模型,进行算法设计,将实际问题的解法表达成计算机能表达理解的形式。著名的计算机科学家唐•依•克努特曾论述道:能把问题的解法表达成计算机能够“理解”的一种明显形式(这些机器没有普通的感觉,它还不会“思考”,但它能准确地不折不扣地去做让它做的事情。当一个人初次试图使用一台计算机时,这是最难以掌握的概念)。当一个初学者学习程序设计时,在把计算机这种新的知识结构纳入自己原有的认知体系中时,由于结构差别太大,就会遇到原有结构的“顽强抵抗”,必须创建新的认知结构。学习程序设计是对认知结构的改造,是对学生传统知识体系的改进。因此,在教学中一定要注重学生程序设计能力和逻辑思维的培养,而不能过分强调C语言复杂的语法细节。我们在多年教学工作的基础上,将以下一些教学方法综合应用到实践教学中,实践证明这些方法综合应用可取得良好的教学效果。
三、主要教学方法
1.兴趣教学法的应用
“兴趣是最好的老师”,而且随着高校改革的逐步深入,我校大学生的基础素质有所下降,如何将大部分学生引入程序设计这项枯燥的学习中来,培养学习兴趣是首要的问题。我们在教学过程中注重把趣味教学法合理应用到教学的各个环节,深入浅出地将学生引导到C语言的系统学习中。例如,一开始为了让学生了解程序设计的基本概念,我们举了一个大家都耳熟能详的例子――“把大象关到冰箱里需要几步”,同学们在会心一笑之中,很快就明白了程序设计原来就是将一个问题的解决方法分为简单的几个基本步骤,用一种合适的语言数据结构描述出来,然后交给计算机去自动完成。而到了后期数组的应用编程中,一个非常难理解的问题就是冒泡排序法,我们采用学生比较感兴趣的动画效果演示算法的整个过程,部分截图如图1所示。通过动画的演示,学生对冒泡排序法的算法过程有了清楚的了解,编起程序也就容易多了。
2.网络在教学中的应用
随着高校的普遍扩招,传统的一问一答教学模式已经不能适应现代教育的快速发展,尤其是像C语言这样的实践性很强的课程。因此,促使我们充分发挥现代化教育手段尤其是网络的强大功能,尝试改革教育方法。关于这方面的工作,我们已经在文献[4]中做了大量的研究与实践工作。首先我们把多年批改作业、辅导实验中学生经常出错的源程序分章节保存在各磁盘文件中,形成一个出错源程序库。当本届学生需调试某一章的程序时,就从该库中抽取出几个有代表性的有错源程序,挂到校内专用ftp服务器上,讲解之前先让学生下载并自己动手调试,这样学生就先经历了一个深入思考的过程。这样做的好处是一方面学生想验证自己的调试思路是否正确,另一方面对自己感到棘手的错误又迫切希望从老师那里学到调试方法,这时再由老师边讲解边操作计算机调试程序,效果是事半功倍的。讲解时为了让学生能更好地看清教师的操作步骤,利用windows自带的网络工具软件进行教师机“桌面”的共享,使学生在看清教师操作步骤的同时,自己进行程序的调试练习,达到“看得清,学得快”的目的。
3.任务驱动式教学法的应用
以学生为主体,教师为主导,构建一种基于任务驱动的协作学习模式。在讲解每一知识模块之前均先抛出具有代表性的问题,激发学生求知欲,培养学生主动解决问题的能力,先让学生尝试自己写出程序。然后教师讲解具体细节,并把语言要素穿插到程序的讲解中。最后通过分组讨论,进行任务评价,进一步加强每个学生薄弱环节的学习。
四、结束语
综合实施了以上几种教学方法之后,学生主动学习C语言的积极性明显提高了,学生普遍爱动手、爱动脑、爱独立解决问题,主动总结调试经验,学生的编程、调试能力提高了,因此,受到了学生的一致好评。
参考文献:
[1]姜庆娜,姜玉波.C语言程序设计教程[M].中国计划出版社,2007.
[2]唐•依•克努特.计算机程序设计技巧[M].国防工业出版社,2000.
关键词 C语言 课程建设 改革
中图分类号:G424 文献标识码:A DOI:10.16400/ki.kjdkz.2016.09.054
The Construction and Reform of C Language
Program Design Course in Colleges
LIN Huijun
(Computer Science Department of Basic Educational College, Zhanjiang Normal University, Zhanjiang, Guangdong 524037)
Abstract With the development of computer programming, the professional foundation courses position of C Language Programming design has been changed to core specialty course. With the change of its courses position, content of the curriculum system, teaching methods and teaching model, experiment guide will be changed. Discuss the reform of C language program design in the new situation of college from the angle of course construction.
Key words C Language; course construction; reform
0 引言
C语言是一种面向过程的计算机程序设计语言,其功能丰富、表达能力强,具有完善的模块程序结构,可移植性好,既具有高级语言的特点,又具有低级语言的功能。 C语言曾经是进行软件开发的主流语言,因此“C语言程序设计”课程曾经作为计算机技术专业核心主干课程,在高等院校计算机相关专业中广泛开设。然而随着面向对象程序设计思想的广泛应用,“C语言程序设计”的专业核心地位开始动摇,一些高等院校计算机专业已不再开设“C语言程序设计”,取而代之的是Java、C++、VC++等课程的直接开设。
那么,在高职高专院校的计算机应用技术专业中,“C语言程序设计”是否还有继续开设的必要?如果开设应如何开设?“C语言程序设计”课程应如何进行改革才能适应计算机专业课程体系的发展?在本文中,我们将从课程的地位和开设的必要性、课程内容体系、教学方法、实验指导等方面就大专院校的“C语言程序设计”课程建设进行深入的探讨。
1 课程的地位和开设的必要性
“C语言程序设计”曾经是计算机相关专业的核心主干课程,主要学习C语言的语法规则、算法、模块化程序设计思想,并以C语言为开发语言进行系统的开发。然而随着技术的发展,C语言由于其在可视化编程方面的局限性使得它不再成为软件开发的主流语言,在这种情况下,C语言的核心主干课程地位发生了改变,我们曾经对多所高校计算机相关专业的课程设置进行了调查,多所高校根据专业的发展已不再开设C语言,部分院校直接开设JAVA,部分院校直接开设C++,部分院校即使开设C语言,也只是把C语言作为专业基础课程来开设。
大专院校的计算机应用技术专业学制三年,通过学习,学生应具备基本程序设计能力,能使用计算机语言进行程序的设计、调试和维护。大专院校学生的入学基础较为薄弱,多年的教学经验我们得到一个结论:学生一入校门接触计算机专业课程,感觉最难的就是程序设计,如果其第一门课程学的是面向对象的编程语言,则须从结构化程序设计开始学,学习时间较长,很容易将结构化程序设计与面向对象程序设计混淆,导致学习越来越困难,因此有必要在开设面向对象程序设计课程之前先开设结构化程序设计课程。C语言是古老而长青的编程语言,它的语法是C++、VC++、Java、C#等多种面向对象程序设计语言的基础,也是后续课程“计算机组成”、“操作系统”、“编译原理”、“计算机体系结构”、“数据结构”等的基石。因此把C语言作为大专层次计算机应用技术专业基础课程或计算机语言的入门课程来来开设是必要的,有利于学生对计算机语言及结构化编程思想的理解和掌握,为面向对象程序设计课程及其他的开设后续课程的开设打下一个良好的基础。
2 课程内容体系
在把“C语言程序设计”作为核心主干课程开设时,其课程的最终目标是学生能使用C语言进行系统的开发,因此其教学内容是围绕着软件开发这一主题展开学习,学时较长,内容详尽。而把“C语言程序设计”作为专业基础课程来开设时,对学生能利用C语言开发系统的要求降低,学时不宜过长,课程总体目标转变为培养学生对程序设计的理解和操作能力以及提高程序设计的兴趣为主,同时让学生在学习程序设计的过程中,养成良好的代码编写风格,对代码不再感到害怕。
“C语言程序设计”可以说是大专院校学生入校后所接触的第一个程序设计语言,根据计算机编程思想和技术的发展,以及大专学生的特点,考虑相关的后续课程以及面向对象编程语言的开设,本着面向基础、以“必需、够用”为度,我们将“C语言程序设计”的课程内容进行了重新整合。
如图1的内容所示,我们对C语言的教学内容的重点和难点做如下的变革:
(1)C语言包含的基本概念很多,如变量、常量、存储空间、地址、运算符、表达式、函数、指针、数组等,这些概念都是后续课程的基础,因此应加强学生对这些概念的理解与掌握。
(2)不管哪一种编程语言,其程序的基本结构都离不开顺序结构、选择结构、循环结构,这三种程序结构也是面向对象编程的基础,因此C语言的教学重点也在于让学生完全理解和掌握三种程序结构的编写。在这三种程序结构的教学中,应以算法为主线、结合C语言的语法规则进行讲授,案例功能不宜太复杂,程序不宜过长,以单一功能为主,这将有利于后续面向对象程序设计课程学习的衔接。函数是C程序的基本构成,也是大部分计算机语言的基本概念,对函数的概念、定义和声明、返回值、函数的调用、参数的传递、变量的作用域应予以详细的讲解,以理解其中的基本方法为主。
(3)在数据类型部分,重点在于基本类型、指针概念、数组的讲解,放弃一些构造型的数据类型,如共同体、结构体等,因为在面向对象编程语言中,已使用类来实现这些复杂数据类型数据的封装。
3 教学方法
“C语言程序设计”以C语言为平台,使学生全面了解程序没计的基本算法、C语言的语法规则以及结构化程序没计的方法,并具有一定的结构化程序设计和调试的能力。“C语言程序设计”传统的教学方法是讲授与实验相结合的方法进行教学。由于C语言涉及的概念比较复杂,规则繁多,许多知识点抽象且难以理解,使用灵活,容易出错。在实际教学中,我们发现很多学生认为内容抽象、枯燥,学习起来都感到困难和吃力,并在不同程度上产生畏惧心理,学生学习兴趣度较低。
基于上述原因,我们认真研究了思维可视化技术、微课程技术等教学理论和教学方法,并将其用于实践教学,效果较好。
3.1 思维可视化技术
思维可视化技术是一种以数据可视化、计算可视化和信息可视化为基础,促进知识的传播和创新的技术,其要点是运用一系列图示技术把本来不可视的思维(思考方法和思考路径)呈现出来,使其清晰可见的过程。思维可视化的目的是使思维流程化、图形化、图谱化和清晰化,其可视化工具包括有概念图、思维导图、流程图、语义网络、图表等。
C语言概念繁多,层次性较强,思维可视化技术的引进有利于学生对计算机语言整体概念的理解。如在讲解C语言数据类型时我们可以使用一张图完成教学。图2为基本数据的概念图。
概念图以SWF文件出现,在教学时以数据基本数据类型为中心,进行层次的折叠,在讲授时以知识点为中心中心展开或折叠。整个教学直观,一目了然,效果较好。
思维可视化技术可贯穿C语言的整个教学过程,我们将可视化的各种图示工具教会学生,课前使用思维对图进行预习,课中使用概念图、流程图进行教学,课后使用思维导图进行内容的整理。这不仅有助于学生对知识的掌握,也有助于学生编程思维能力的提高。
3.2 微课程技术
微课程即微视频课程,是一段短小精悍的、以教学为目的的视频。一段微课程视频大约10分钟左右,讲解一个知识点,目标明确。与PPT相比,实践证明微课程的视频形式更有效,更吸引学生,视听结合,能增强学习者的信息处理能力,降低学习者的认知负荷,提高学习效率。微课程的反复播放有助于学生自己掌握自己的学习进度。
在C语言教学中,我们往往利用一节课的时间讲授知识点,知识点相对较多,一节课45分钟,学生的注意力不能持续集中。将微课程技术引入C语言的教学过程后,我们将微课程分为知识点微课程、练习微课程,每个微课程大约10分钟右左右,两种课程轮流交替进行,既达到传授知识的目的,也能在课堂上完成课后巩固环节。在多个知识点微课程和练习微课程后,进行综合实例微课程进行综合的训练。能最大程度地避免学生注意力的分散。
如循环结构是C语言教学的重点和难点,学生对循环的每一次执行较难理解。我们以例题作为知识点制作微课程,将循环的每一次执行、内存变量值的变化、执行的结果以动画的方式呈现出来,一目了然,且学生可以多次观看,避免因老师一次讲解难以掌握而又无法回顾的问题。实践证明C语言中许多的知识点使用微课程教学都取得了较好的效果,如排序微课程、运算符微课程等,其在显示程序运行过程中变量的变化、运行结果的变化等方面尤其有效。
4 上机实践与习题
上机实践是“C语言程序设计”课程的重中之重,我们需要培养学生程序设计的素养和程序编辑、修改、调试、运行的能力。C语言的开发环境经历了Turbo C、VC++6.0、VS等,目前使用较多的是VC++6.0。一般情况下,如果单纯是学习C语言,使用VC++6.0已足够,如果后续开设C#等课程,建议使用VS,以便于后续课程的开设。
大多数的实验指导书中的实践教学内容和题目以验证型和设计型为主。验证型的题目要求学生按照书本上的指示,输入程序,填写结果即可,学生处于被动接受的地位;设计型的题目对于大专院校的学生来说,难度较大,学生往往无从下手。为了全面提高学生的实践能力和应用能力,使实践教学能满足不同层次学生自主学习的需求,我们制定并实施了以下改革措施:
(1)改革上机实践的教学模式:我们对实验内容进行了重新的设计,每个实验衔接课程的内容,实验内容小而精练,将以往一个完整的理论知识点教学完之后再进行实践教学的教学模式改为由理论教学和实践教学相互联系、相互交叉、彼此渗透、有机结合、同步发展的教学模式。
(2)设计多种类型的实验题目:针对学生存在基础不同、接受能力不同、个性有差异等问题,设计出包含验证型、改错型、设计型共三种类型的实验,题目尽可能做到既与理论教学内容靠近,又能覆盖知识点,切合实际。通过完成不同类型的实验题目,有目的、分层次地培养学生的实践能力,使学生学会从实验过程中获取知识,积累经验。
要学好C语言,做习题是关键,习题能帮助学生有效地理解知识。通常情况下,习题是在一个章节完成后才进行,知识点过多,学生需要花更多的时间做习题。因此我们对习题进行了重新整理,在一个知识点教学结束后即进行(下转第118页)(上接第113页)习题的训练,将教学与习题有效地结合,将学生做习题的时间分散,缩短,减少难度,达到即时巩固的效果。
5 结束语
由于计算机编程技术的发展,C语言的课程教学也受到了影响。2012年,我校将C语言作为重点课程进行建设,结合实际,我们对大专院校“C语言程序设计”课程的地位、内容体系、教学方法和教学模式、实验指导进行改革探讨,以适应新形势下的大专计算机应用技术专业、电子专业人才培养方案的改变。这些改变能在一定程度上有效解决我校“C语言程序设计”课程发展与教学过程中存在的问题,但仍须在实践中去改进和完善。
基金项目:岭南师范学院2013年青年项目,项目号:QL1311;岭南师范学院基础教育学院重点课程项目
参考文献
[1] 林慧君.思维可视化及其技术特征[C].第十六届全国计算机辅助教育学会年会论文集,新华出版社,2014.8:697-702.
[2] 方英兰,刘高军,宋威.C语言程序设计课程的改革与实践[J].电脑知识与技术:学术交流,2014(12):8225-8226.
关键词:C语言;说课;专业基础;教学质量
在高职院校C语言教学中,教师经常忽略教研备课的作用和意义,同事之间因为所授课程的不同交流也减少了,而在常规的教学检查中又往往没有统一的标准和项目规范,因此无法准确地衡量教学水平。[1]本文采用说课形式,阐述了一定的教学观点,表述了具体执教C语言的教学设想、策略,以及组织教学的理论依据,对高职院校C语言的教学起到了积极影响。
1 课程的性质、地位及目标
(1)C语言课程的专业背景。其专业培养目标是:面向软件公司等IT行业,培养学生具有创新思维的能力,能从事软件编码、测试和技术支持服务等相关工作的高等技术应用型人才。专业就业岗位是:程序员、软件测试工程师、软件技术支持工程师。[2]
(2)课程体系结构定位及课程性质。软件专业第一学期开设C语言程序设计,第二学期根据专业方向的不同分别开设C#程序设计(.NET方向和3G)、JAVA程序设计(JAVA方向),第三学期分别开设C#Windows程序设计、数据结构、JSP程序设计,第四学期分别开设系统开发、J2EE开发,第五学期都将开设综合项目开发。由此可见,C语言的课程性质是高职高专计算机软件专业的专业基础课,为将来进一步学习C#、Java语言,掌握软件开发项目能力奠定坚实基础。
(3)课程目标。总体目标是:让学生在自主、和谐的氛围中感受编程的乐趣、激发学习知识的兴趣、培养团队合作精神,能力目标是:培养编程思维能力,熟悉基本程序设计方法,建立良好的编程思想和风格、解决实际问题的能力、将为后续其他相关课程的学习奠定基础,教学目标是:熟练应用三大语句、掌握程序的基本结构、掌握数组和函数的运用、掌握指针和位运算的基本操作。
2 课程设计的理念与思路
由于高职院校学生具有文化素质较低 、自控能力相比较差、学习积极性较差等特点,C语言的教学应采用教、学、做一体化的教学方法。[3]具体来说,通过突出重点教学来着重培养学生的编程思维能力,启发式教学来激发学生的学习兴趣,任务驱动创建一种基于工作实例的模式来培养学生解决实际问题的能力,项目教学可以使学生了解项目开发过程并培养学生的团队合作及沟通交流能力。
3 课程内容设计
(1)夯实基础。将C语言课程的内容分为四大模块:C基本概念、三种基本程序设计结构,数组与指针、函数。这样将有助于学生逐个模块对基础知识的掌握,从而夯实了基础。[3]
(2)突出重点与难点。C语言课程的重点模块是:程序设计基础知识、顺序结构程序设计、选择结构程序设计、循环结构程序设计、数组、函数,与其所对应的重点内容有:流程图的画法、变量的理解、表达式的正确书写、数据的输入/输出、if语句选择结构、while与for循环结构、函数的定义与参数传递。C语言课程的难点模块是:选择结构程序设计、循环结构程序设计、数组、函数、指针、结构体,与其对应的难点内容有:if语句的嵌套、多重循环程序设计、二维数组与字符串、指针、函数的嵌套调用与递归调用。[4]
(3)详细内容设计。 C语言课程的教学案例都来自于学生感兴趣的生活中的案例。具体见图1。
4 教学方法
采用现实生活场景,应用任务驱动、启发式教学方法实现教学做一体化。所谓教学做一体化如2图所示。
任务驱动教学法:为学生提供体验实践的情境和感悟问题的情境,围绕任务展开学习,以任务的完成结果检验和总结学习过程等,改变学生的学习状态,使学生主动建构探究、实践、思考、运用、解决、高智慧的学习体系。在C语言的教学中如,ATM取款机登陆程序,可以将其分解为3个小任务(单个密码的一次登、单个密码的三次登陆、多位密码的三次登陆)来逐步完成。
启发式教学法:设趣(通过问题引入任务目标,提高学生兴趣),再激趣(通过任务分析,激发学生好奇心和求知欲),再诱趣(诱发学生“生疑-思疑-释疑、再生疑-再思疑-再释疑”的螺旋式上升过程,将任务的解决从易到难逐步推进,一环扣一环提出问题,不断诱发学生思考,掌握解决问题方法),然后再扩趣(抓住时机,让学生再质疑,引导学生进一步自主探究),最后才完成任务及掌握方法。
5 教学考核评价
6 教材分析
C语言课程选用了什么教材,以及该教材所具有的特点。
7 教学保障
(1)师资保障。为了提高教师的专业能力及项目实践水平,每年选派老师赴企业实习,参与企业真实项目的实践。
(2)硬件资源保障。软件开发实训室是理实一体化实训室,实训室既有学生上机的电脑又配有投影设备,可供师生双方边教、边学、边做,保障了教学化一体化的实现 。
参考文献:
[1]任宝贵,陈晓端.说课与教师专业发展[J].教育科学研究,2009(02).
[2]姜华斌,张新民.高职软件人才培养模式的探索[J].现代大学教育,2006(04).
[3]管银枝.C语言程序设计实例教程[M]. 北京:人民邮电出版社,2011.
关键词:课程整合;模块化案例教学;启发教学;程序设计;解决问题能力
中图分类号:G642 文献标识码:B
1引言
“C语言”是从事计算机软、硬件开发和应用人员必备的专业知识。C语言既具有高级语言的特点,又具有低级语言的功能,语法结构简洁精妙,便于描述算法,写出的程序效率高,运用C语言可以编写系统底层的内核程序。C++、Java、C#、J#、perl等高级语言也是衍生自C语言,所以掌握了C语言,可以很容易掌握这些新型的语言去开发程序。因此在高等院校与计算机相关专业的教学计划中,“C语言程序设计”是一门必修的基础课及核心课程,是一门理论性和实践性均较强的课程。开设“C语言程序设计”课程主要培养学生掌握结构化程序设计的基本方法,建立严谨的程序设计思想及较强的动手编写及调试程序的能力,逐步培养独立分析问题和解决问题的能力。同时为数据结构、操作系统及其他高级语言课程等后续专业课程的学习打下扎实的理论和实践基础。
在以往的教学过程中,大部分学生对学习“C语言程序设计”存在畏难情绪,更不知如何运用C语言解决实际问题。教学效果不理想,给后续学习造成障碍。笔者在教学中调整了以往按部就班的教学模式和重理论轻实践的教学理念,将模块化案例教学引入“C语言程序设计”的课程中,进行了教材整合和强化实践教学,并围绕模块化案例展开C语言教学,以案例引出C语言的知识点。全部授课都以程序设计为目的,收到显著的教学效果。
2课程进行整合,建立模块化案例教学
2.1传统的教学模式以语言知识为主线
传统的“C语言程序设计”课程教学模式采用以语言知识为主线,按照变量、数据类型、表达式、数据输入/输出、流程控制、函数、指针、结构、文件等顺序进行教学,实训课多以验证为主。学生在学习的过程中每一知识点都是独立听记,不能将所学知识进行综合运用。因此,学生是边学边忘,学习后续内容没有前期知识支撑,学到5~6周就失去学习的兴趣和信心,甚至有些学生放弃对该门课的学习,到期末考试突击复习,不及格率比较高。
2.2课程整合以程序设计为主线
课程整合以程序设计为主线贯穿语言各知识点,就是将“C语言程序设计”课程内容分解为四个模块,即C语言基本程序设计模块、函数模块、指针模块、文件模块,每一模块都以案例展开C语言的知识点教学,讲解C语言的理论知识为目的,上机实训以授课中的案例贯穿始终,即强化理论知识的掌握,便于后续知识的学习,同时还要逐步培养学生编写C程序的能力,紧紧围绕这四个模块的案例举一反三展开程序设计的实训。
2.2.1基本程序设计模块
利用“统计一名学生的三门课程平均成绩”的程序,引导出变量、数据类型、表达式、数据输入/输出等C语言基本知识。这阶段主要是引导学生掌握C语言程序的基本结构,编写程序的基本方法,是学习C语言入门阶段。如图1所示。
2.2.2函数模块
C程序是由若干函数构成的,函数是C语言的核心知识。因此,在讲函数知识及设计函数程序时,将前面讲述的计算学生多门课程成绩组合成较完整的C程序案例。如图2所示。
通过这个案例讲清C语言中变量的存储类型的区别和功能,函数调用、参数传递的方式及要求,按值和按地址传递区别。在讲函数调用时启发学生逐步完成图2各个程序模块的组合。同时调动学生的积极性逐步扩展图2中的功能,将所学的知识进行综合应用,并提出预处理和文件包含知识概念及运用。
2.2.3指针模块
指针是C语言的重要功能,正确而灵活地运用指针,可以动态分配内存和对物理地址直接进行操作,方便地使用字符串和数组,有效地表示复杂的数据结构,在函数调用时能获得1个以上的函数值。指针内容非常丰富,而且复杂,这部分是C语言的重点,也是学习的难点。按常规模式教学,学生对指针知识理解难、运用更难,部分学生到此几乎放弃学习。采用模块案例教学,学生首先了解指针的运用,调动学生学习的兴趣和学习的欲望,然后逐步从指针案例中启发引出知识点,边学边用,通过实例反复练习,学生能较灵活运用指针知识编写程序。指针模块如图3所示。
首先利用演示链表案例引导出动态分配内存。然后演示用指针修改数组处理学生成绩排序的程序案例,或者设计较简单的对硬件操作的案例,让学生了解指针知识运用之后,再由学生模仿将函数模块中用数组存储数据修改为用指针进行数据处理。在知识引申的过程中,逐步提出字符串指针、指针数组及指针数组做main()函数的参数的运用。
2.2.4文件模块
主要讲述输入输出函数,将内存中存储的数据输出到外存上,仍然利用案例分析文件的概念及文件的运用。
3围绕案例展开教学
在基本程序设计模块中,以计算1名学生三科成绩的平均成绩这个程序开始引导C语言基本知识。程序如下:
#include
main()
{ int scor1,scor2,scor3;
float grade, total;
total = 0.0;
printf(“Enter grades: \n");
scanf("scor1=%d ,scor2=%d ,scor3=%d", &scor1, &scor2, &scor3);
total= scor1 + scor2 + scor3;
grade=total/3;
printf(“Grade average is %.2f\n", grade);
getch();
}
3.1案例启发教学,使学生轻松听课
在案例教学过程中,要求学生熟记模块中程序。例如:第一次课熟记“统计1名学生三科成绩”这个程序。然后调动学生学习的积极性和主动性,引导学生积极思考和参与,一起分析程序中语句的含义,在分析语句的过程中,采用启发式的循序渐进、由浅到深、由易到难,逐步提出新问题,引出C程序中新知识,用新知识解决新问题,再举一反三写出对应不同问题的C语言程序。例如:提出判断并输出学生三科成绩的最高分和最低分引出分支结构。提出若是8门课,进行总成绩统计的简便方法,由此引导出循环结构。根据对成绩升序或降序排序引导出一维数组,再计算多个学生中每个学生多科成绩引导出二维数组等,根据引导的知识逐步扩展和加深知识的运用。
保证学生动脑、用心听课。教师在讲解每个基本知识的过程中不要面面俱到,对常用的编程知识细讲熟练,不常用的知识略讲或用表格统解,有些基础知识是随着编程逐步引出或者以后应用时在自学,保证学生听课不疲劳。听得懂、跟得上、兴趣浓,兴趣是学习的动力,动力会产生效果。同时要求学生强化记忆判断最高分、成绩排序等程序,以便于后续课由用户建立的若干个自定义函数构成较完整的程序。在分析函数案例过程中,讲清数据存储类型的区别及参数的使用等知识。授课过程如图4所示,每节课结束前教师与学生共同总结本节课的重点知识,便于课后复习。
3.2培养阅读程序的能力
读程序是学习C语言入门最快,也是最好的方法。教师在讲述程序中各语句含义的时候,首先培养学生阅读程序的能力。在阅读程序的同时注重培养学生掌握C程序的结构。例如:编写程序首先根据表达式确定变量及变量的数据类型,然后给变量赋值(直接赋值或通过键盘接受值),再进行运算,最后输出计算后的结果等。要求学生不放过每一章中提到的所有例题,仔细研读程序,直到每一行都理解了。看懂别人是如何解决问题的,学习解决问题的方法和程序设计技巧,掌握程序结构。为了使学生尽快掌握编程思想和基本结构,教师课后给学生布置一些设计C程序作业,由学生根据自身能力,阅读程序、修改程序、给程序补充语句以及写出程序运行结果,强化训练。
3.3培养学生编写程序能力,掌握分析问题算法
3.3.1模仿编写程序
“C语言程序设计”是一门实践性很强的课程,“纸上谈兵”光学不练是学不好C语言的。在阅读程序的过程中,培养学生学会模仿编写程序,如果没有深刻地理解C语言的语句及掌握编写程序的基本方法,模仿编写程序也是一句空话。在模拟编写程序时,如果写不出来,回过头来再继续研究例题,想想自己为什么写不出来,然后再去写这段程序,反反复复,直到熟练为止,在模仿编程的过程中培养学生养成良好的编程风格。
3.3.2分析算法
利用C语言编程解决实际问题,所需要的不仅仅是C语言语句,还需要相关的专业知识及算法。例如,如果你不知道计算π的公式,即使C语言学得再好也无法编写计算π的近似值的程序。如果不知道判断闰年的条件,就无法计算某年是否为闰年。所以在程序设计过程中,必须注重培养学生分析问题及找到解决问题的最优算法,这是设计程序的重要条件。
3.4强化编程能力的训练,树立编程信心
教师在全部的授课过程中,时时鼓励学生能学好C语言。因此教师在提供丰富多样的实验题目时,注重学生的差异,让学生根据自身水平和兴趣,选择自己能理解的训练题目。让每一个学生都能享受编写程序获得成功的喜悦,以促进学生坚定学习的信心和激情。同时教师鼓励学生在学习“C语言程序设计”的过程中,阅读一本C语言方面参考书,经常上一些好的C语言论坛进行学习、交流,开阔自己的视野。教师也经常组织学生进行师生间、学生间的学习交流活动,对实训题目采取自测、在线判题等活动。这些多种交流学习方式,其目的是充分发挥学生在教学活动中的主体地位,调动学生学习的主观能动性和求知欲望,使学生在交流中得到学习、思考,取长补短获取编程的技巧。成绩考核以笔试、实训、交流等多种形式,每一环节着重考核学生综合运用所学知识编写程序、解决实际问题的能力。
4围绕模块案例开展实训教学
在“C语言程序设计”的实训教学中,通过上机调试模块中的案例强化学生对所学知识的运用及深化理解,不仅培养学生编写程序、调试程序的专业技能,同时注重对学生的人际技能方面的培养。
4.1培养学生专业技能
4.1.1调试基本程序设计模块
初学者首先掌握C语言编程软件的使用及调试程序的基本方法,修改程序中出现的语句、语法、程序流程等错误,积累调试程序的经验。在调试程序的过程中,逐步培养学生主动思考、分析、探索、发现出错的原因,并且能独立加以解决。再通过修改已经运行程序的某些语句,查看程序发生的变化及分析结果变化的原因,加深对新学知识点的理解。实现“输入”程序加深知识的记忆,“修改”程序加深对知识的理解。记忆和理解相辅相成,相互促进编程能力的提高。
4.1.2培养综合实训能力
当学生掌握了基本调试程序方法之后,对函数模块、指针模块、文件模块案例进行调试,提高学生调试综合程序的能力,修改程序中出现的逻辑结构、流程错误。综合实训可以根据函数模块案例建立学习小组,每个自定义函数分配给小组中不同学生独立编写程序、调试、运行,逐步养成独立分析问题,运用知识解决问题的能力和自学能力。然后将小组中每个人编写的程序综合在一起,进行综合调试、运行。调动学生求知欲望及运用知识的能力,鼓励学生树立创新意识,增加程序的功能,利用开放的实训环境进行自主调试,培养学生自我发展的意识。
4.1.3撰写实验报告
实验报告是对实训的总结和知识的巩固,总结实训中调试程序的经验、收获、不足和需要解决的问题,便于后续实训课的操作。实验报告也是师生交流的最好手段,老师掌握每个学生实训过程中的问题、想法、效果等,可以调整授课进度和方法,提高学生学习效果。
4.2注重学生人际技能培养
当今企业用人原则是构建在以智力因素为基础的非智力因素上,看重员工的心智模式建设及工作中表现出的协同合作精神、诚实可信性、抗压抗挫折能力。因此在综合编程实训中,培养学生与人交流沟通的能力,在编写程序过程中遇到问题能在一起讨论、研究、共同解决,养成良好的团队合作精神、责任意识,以适应市场用人的需要。
关键词 VB程序设计 课程教学 实践
中图分类号:G424 文献标识码:A
Discussion on VB Program Design Course Teaching
LIANG Desai
(College of Mathematics and Computer Science, Qinzhou University, Qinzhou, Guangxi 535000)
Abstract VB program design is not easy to master, in order to make students understand and master, in the process of teaching, shold try to make first good lesson, by displaying the programming wonderfulity and practicality to stimulate students interest in learning; Set the appropriate learning ladder, induces the students to study; Hold the key, and gradually extended, cultivation of students' autonomous learning ability; Lead them to conclude, to sum up and, improve the ability of programming; Establishment of the interest group, guides the student to learn programming knowledge and skills applied in the actual development practice.
Key words VB program design; course teaching; practice
0 引言
《VB程序设计》是一门理论性、实践性、灵活性和创造性较强的基础课程。VB课程中的概念、编程思维比较抽象难懂,VB语言枯燥,内容繁多,对仅具有Windows初步知识的初学者来说,要学好这门课程,具有一定的难度。在程序设计教学中,如何激发学生学习兴趣、培养学生自学能力,使学生能够比较好地掌握课程的基本概念、基本理论知识和程序设计技巧,是值得关注和认真探讨的问题。沈国珍从《VB程序设计》课堂教学进行了探索和实践,①朱勇从培养学生综合编程能力的角度提出了教学措施,②包健对课程中的抽象概念和难理解问题,提出了具操作性的教学方法,③杨锦伟对课程教学改革进行了尝试。④下面根据大学低年级学生的实际和特点,谈谈对《VB程序设计》课程教学的探索和尝试。
1 通过奇妙性和实用性来激发和引导学生的学习兴趣
努力上好第一节课。在上第一节课时,应避免“从概念到概念”的这一教学模式。在简单介绍了Visual Basic的窗口构成后,应通过一些简单实例来显示程序设计的奇妙性和实用性,引导学生学习、思考。结合学生的特点和学习的需要,利用最基本的方法开发简单的应用程序,使学生对程序设计、窗体、属性、事件和方法获得直观的体验和认识。例如,教师可引导学生利用Form、Label、Command和Text等控件来显示“Hello World! ”、“欢迎您!”设计实现一个简单的计算器等。利用picture控件显示精美的图片,安排一些简单有趣的动画程序使学生了解如何用Visual Basic开发应用程序,让学生从优美的画面显示过程中感受到用Visual Basic编写程序的乐趣,用具体有效的简单实例开发引导学生体会到用Visual Basic进行程序开发的实用性和有效性,显示Visual Basic的实用价值。教师在现场操作,往窗体中添加各种控件,设置各控件的属性,编写代码,讲述并引导学生理解代码的意义,达到最直观、最鲜活、最直接的教学效果,教师不失时机地加以绘声绘色的讲解和点评,安排实验课,让他们在教师的指导下一步一步地做出来,契合学生渴望成功的心理,这样能唤起学生强烈的好奇心和进一步深入学习的兴趣,这样想方设法上好入门课,使学生在不知不觉中便对窗体、对象、事件、方法、控件及其属性等概念有初步的认识和理解,在随后运用这些概念时,水到渠成,顺理成章,学生便容易理解和接受。
2 通过设置适当的学习阶梯来引导学生逐步深入学习
VB教学的目的之一是使学生能够独立编写程序,而学习编写程序不是一蹴而就的,需要经过反复练习才能掌握。其中,设置恰当的学习阶梯和步骤是一个重要的教学方法。在教学中,设置问题的阶梯,以学生较易理解为尺度,合理控制在学生可以接受的范围,步步为营,循序渐进,逐步深入,一步一步引导学生练习程序设计,使学生容易获得学习的成就感,感受到学习的乐趣,增强学习的主动性,培养学生独立探索、勇于攀登、开拓进取的精神。
在教学中,可以铺设必要的过程和台阶使学生练习编写程序:第一,仔细分析问题,明确问题的要求,理清思路;第二,精选实例,精讲例题,思考用到哪些算法,画出算法流程图,设计界面,设置各个控件的属性,编写代码;第三,加强阅读程序的训练,要求学生阅读程序、写出程序运行结果、指出程序的功能等,使学生体会各种语句的功能和使用,能够读懂别人写的程序是今后自己独立编程的基础和前提;第四,引导学生做程序填充题和程序改错题,给出程序,把其中一些关键的地方留空,要求学生填充,或者在程序中有意提供一些错误语句,让学生自己改正;第五,布置相应的编程题,让学生模仿练习和完成;第六,要求学生独立编写应用程序。
例如,要求学生编程求20个整数的最大值的程序,之后再让学生求这20个整数的最小值,再求这20个整数的和与积,最后写出求这20个整数的排序方法(如冒泡排序)。通过这个实例,可以使学生加深对数据交换、函数MsgBox( )、选择结构及循环结构的理解和运用,在学习了数组之后,这个问题也可以用数组来解决,这样可以从不同的角度和方向来提出问题。
此外,可以根据问题特点,设置问题的梯级,引导学生思考和练习,体现教学过程中问题设置的阶梯性,循序渐进,由浅入深,逐步深入,在教学过程中对问题逐层展开和深入推进。
例如,要求学生编写程序,打印如下所示的“数字三角形”:
这是文献⑤上的一道练习题,学生看到这道题时,感到难以着手。教师可因势利导,为学生铺设台阶,让学生自己思考完成:
编写程序,打印如下的“数字三角形”:
进一步,可提出如下问题,铺设另一个台阶:编写程序,打印如下“数字三角形”:
待学生思考之后,再让学生考虑原来的问题,学生便不再感到困难,而且很快获得成功的喜悦,学习的兴趣油然而生。
3 培养学生的自主学习能力
课程概念多、内容多,课时少,在教学中,不必对教材中的每一部分都讲解,可根据教学的需要,选择基本或重要的内容详细讲授,调整教学内容的先后顺序,降低学习的难度,待学生有了一定基础后,再提高对他们的要求。在教学中培养学生的自学能力,课堂上无法讲授的内容,可安排让学生自主学习。
引导学生在选择结构和循环结构中养成运用动态思维理解程序的习惯,积累各种算法设计技巧,加强算法的教学。算法是指解决特定问题的思路和方法,是程序设计的灵魂,是程序设计教学的重点之一。对一个问题,先分析问题,考虑问题用到哪些算法,算法清楚了,再编写代码。即,在顺序结构、选择结构、循环结构和数组的教学中,要明确和强化求和、求积、阶乘、通项计算、最大最小值、排序、判断素数和奇偶数、递归、过程调用、迭代计算、最大公因数、方程求根、定积分计算、数据交换、查找、字符串的一般处理、顺序和二分检索等常用算法的技能训练。对这些知识点应详细讲解。算法弄清楚了,程序设计就有章可循。
难点解决了,常用算法搞清楚了,就容易扩展到其它的问题,学生对程序设计就不会感到无所适从,就容易取得成功,学习的兴趣才会持续和深化。
4 通过归纳和总结来提高学生的程序设计能力
这也是由本课程概念多、内容多、知识点多决定的。采用案例教学法,在教学中渗透基本概念和知识的教学,注意选择案例的知识性、趣味性、实用性、典型性、代表性、综合性和完整性,包括要讲的新的知识和语句,同时也大量使用了前面已学过的知识,在学习新知识的同时复习了前面学过的知识,这样以“任务”为载体,以点带面。在学完一个单元后,引导、帮助学生总结,布置相应的练习。比如,对循环结构,应引导学生比较几种循环语句的联系、区别和使用,多重循环语句的使用以及For Each…Next用法等,注意结合具体的实例来讲解。学完本课程后,还要帮助学生梳理、归纳和总结,讲授和布置一些典型的综合编程练习题,在练习中复习、巩固所学的程序设计知识,提高程序设计能力。
5 鼓励学生把自己掌握的程序设计技巧应用于实际中
兴趣是最好的老师,而实践是学习知识获得技能的目的和必要的途径,也是深入学习提高技能,保持兴趣,形成和促进良性循环的最好方法。在学生学习了VB程序设计的基本知识后,应不失时机,把教学班分为若干兴趣小组,每组给定任务,要求学生努力完成,使学生在做中学,在学中做。培养学生的实际动手能力和学习能力。例如,给每一组学生各布置一道用VB开发较简单的数据库应用系统设计⑥⑦的题目,如图书管理系统、学籍管理系统、超市管理系统等,使学生认识到所学知识在实际中能派上用场,增强学习的自觉性和积极性。一段时间后,就可以布置这样的问题让学生动手做,要求在学期结束完成。教师要提出明确的要求,可以先简要介绍建立数据库的基本知识,介绍用VB连接数据库的方法,讲解常用数据控件,通过实例做必要的示范,让学生在做信息系统的过程中真正掌握VB程序设计的知识和技能,提高程序设计的能力。
6 结束语
教师要根据教学实际,适当降低入门的难度,精心选择合适的实例,注意实例的知识性、趣味性、实用性和典型性,合理设置问题的难度和梯级,由浅入深,循序渐进,突出重点,分散难点,以点带面,引导学生学习、总结和复习,把程序设计知识应用于具体的实践中,培养、保持和发展学生的学习兴趣,积极思考,努力探索和实践,提高程序设计的能力和自主学习的能力。
基金项目:项目编号0992023-5、HYSYS-ZD01、HYSYS-ZD02
注释
① 沈国珍.《VB程序设计》课堂教学的探索与实践[J].福建电脑,2007(4).
② 朱勇.论培养学生综合编程能力的几点思考[J].农业网络信息,2005(9).
③ 包健.高等代数中的概念教学探讨[J].高等数学研究,2007.10(4):17-25.
④ 杨锦伟.关于《高等代数》教学改革的若干尝试[J].2007.20(1):78-79.
⑤ 刘炳文.Visual Basic 程序设计教程(第二版)[M].北京:清华大学出版社,2003.