在线客服

c语言课程设计论文

引论:我们为您整理了1篇c语言课程设计论文范文,供您借鉴以丰富您的创作。它们是您写作时的宝贵资源,期望它们能够激发您的创作灵感,让您的文章更具深度。

c语言课程设计论文

c语言课程设计论文:基于Funcode平台C语言课程设计论文

1课程设计平台的改革

为了激发学生的兴趣,可以采用Funcode平台进行课程设计。Funcode平台是一款基于游戏设计和动画界面的C\C++\Java综合实验教学平台,该平台以游戏设计为“噱头”,吸引学生的学习兴趣,虽然如此,该平台通过精选大量的游戏案例,还是很好地将程序设计知识点和游戏设计紧密地结合起来,始终紧扣C语言知识点,为C语言课程设计教学提供了一个很好的工具。

1.1图形方式的游戏界面编辑Funcode平台采用图形界面方式的游戏编辑环境,直观、美观、简洁易用。图1所示为正在设计中的游戏,左侧矩形框中为最终运行时可见的游戏界面,可以从右侧中的“鱼”(Funcode中称为“精灵”,任何类似的图片都是精灵,不同的精灵以精灵名区分)中任意拖拽一条“鱼”到左侧矩形框中,即可在游戏界面中增加一条鱼。

1.2提供功能函数,屏蔽对图形的复杂处理Funcode平台提供了大量功能函数,屏蔽对图形对象的复杂处理,使学生能够专注于程序设计和游戏逻辑功能的实现。例如:功能函数voiddSetSpriteLinearVelocityX(constchar*szName,constfloatfVelX)可以使精灵以某一速度水平运动。让图1左侧中的鱼(假设该鱼命名为fish0)游动起来,学生只需用一条函数调用语句dSetSpriteLinearVeloctyX(“fish0”,30)即可实现;亦可通过调用功能函数dSetSpriteLinearVelocity(“fish0”,30,30)使鱼水平方向和垂直方向分速度均为30,即在屏幕上“斜向”游动;功能函数dSetSpriteFlipX(“fish0”,true)调用可以使鱼水平翻转,即实现“掉头”功能。

1.3整体逻辑框架简洁,功能强大Funcode平台整体逻辑框架由7个主要函数模块组成,分别是主函数模块、鼠标移动事件模块、鼠标单击事件模块、按键事件模块、按键弹起事件模块、对象碰撞事件模块、对象与边界碰撞事件模块。其主函数模块如以下程序代码所示,通过主函数模块控制整个游戏的运行和界面刷新。其他的6个函数模块几乎包含了游戏设计中需要处理的所有事件,并且向学生屏蔽了事件激发所需要的复杂判断过程,所有的鼠标事件、键盘事件、碰撞事件均为自动激发,这很大程度上降低了设计难度,使学生可以专注于游戏逻辑功能的实现。例如:要实现图1中的“鱼”游到右侧边界时掉头向左游逻辑功能,在Funcode平台下,当图1中的“鱼”游到右侧边界时,“对象与边界碰撞”模块将会自动激发,该模块的初始程序代码如下所示。此时,学生无需判断和处理“鱼”是否游到边界(这对大学一年级学生而言比较困难),只需要知道“鱼”游到边界后会自动调用“对象与边界碰撞”模块对应的dOnSpriteColWorldLimit函数即可。因此,学生只要能够根据游戏功能在该函数中正确地编写相应的代码就可以了,具体实现“掉头向左游”逻辑功能的完整程序代码如下所示。显然,这样就极大地简化了对图形对象和事件的处理,学生就可以把更多的精力投入到游戏逻辑功能的实现和代码的编写和调试中。

1.4开放式环境,极大地激发学生创新能力Funcode提供了开放式的开发环境,除了完成Funcode提供的课程设计案例以外,学生也可以按照自己的思路,添加素材,大胆创新,设计和开发真正属于自己的游戏,这样能极大地激发学生的程序设计热情。例如:一组学生开发的“大鱼吃小鱼”游戏,当大鱼吃小鱼得分达到一定的分值时,可以生出“鱼宝宝”,尾随大鱼游动,生动有趣。

2教学内容和方法的改革

基于Funcode平台,在教学内容和方法的改革上,以激发学生兴趣,调动学生学习主动性为主要目标,在此基础上,贯穿整个课程设计的各个阶段,采用多种教学方式和方法培养学生各方面的综合素质。

2.1选题阶段在选题内容上,典型游戏设计和自主创新相结合。改变原有的设计内容变为基于Funcode平台游戏设计。设计内容分为两类:一类是典型的可在Funcode平台上实现的游戏,比如坦克大战、打地鼠等;另一类是学生自选题目,要学生根据Funcode平台功能,发挥自己的想象力,创造自己的游戏。教师要通过讨论、引导等方式,鼓励学生自己设计游戏,培养其创新意识和创新能力。题目选定之后,要求学生将游戏整体功能用功能模块和流程图的方式清楚地表示出来,并且要能够地描述各模块之间的关系,锻炼学生的抽象思维和逻辑思维能力。在选题方式上,要坚持组内讨论和师生互动相结合。组内讨论有利于游戏功能的完善,有利于发挥所有同学的创新潜力,有利于调动学生参与的积极性。通过教师和学生的讨论交流,教师要控制游戏功能的实现复杂度,既要保障设计的工作量,又要保障控制在可实现的范围内。

2.2设计阶段在课程设计过程中,要避免“学生问,教师答”的教学模式,教师要积极地参与到所有学生的设计中,主动和学生交流讨论,掌握他们的设计情况;善于通过引导启发,培养学生各方面的综合素质。在设计中,要及时发现并指出存在的问题;对于学生提出的问题,要善于引导他们积极独立思考,尽量让其自主分析,找到原因,进而找到解决问题的方法,这一方面可以培养学生独立思考,分析问题和解决问题的能力,另一方面可以增强学生的成就感和自信心,有利于调动学生参与实践的热情。对于游戏功能的实现,要让学生画出流程图或实现步骤,体会程序设计中的抽象思维和逻辑思维。比如对于“打飞虫”游戏,当“拍子”拍中“飞虫”时,对应Funcode抽象概念为“拍子”对象和“飞虫”对象发生碰撞事件,由于碰撞事件自动激发,所以拍中“飞虫”后对应的游戏功能实现逻辑应该在碰撞事件中表达。对于该碰撞事件的处理,要求学生首先画出拍中“飞虫”后的处理逻辑,体会程序设计中的逻辑思维。比如:使“飞虫”图像从界面消失在“飞虫”链表中删除该飞虫显示拍中特效根据拍中的“飞虫”类型计分刷新游戏界面上显示的实时得分值。课程设计要求按组进行,设计中要求分工合理,任务明确,紧密协作,严格按照日程安排,完成设计任务。要求每2天一次,将每人独立设计的模块进行整合并测试,同时要求学生定期开展讨论,鼓励他们对设计中存在的问题,积极和同组同学交流沟通,要善于发挥集体的力量,解决问题。在协作设计中,培养学生的团队合作意识。此外,在游戏的设计过程中,必然会存在一些较难实现或者知识点超出课本内容的功能,从经验来看,大多数学生都会无奈地选择放弃该功能。此时,教师一定要向学生强调自主学习的重要意义,让他们认识到课堂教学中讲的内容大多是最基础的核心知识点,而实际的应用中要涉及的知识却远非如此,并积极鼓励和指导学生学习和掌握相关知识点。

2.3考评阶段为了进一步培养学生兴趣,调动其积极性,考核采用每组分别进行讲解和演示,交流心得体会,其他组同学和教师进行打分的形式。打分项分为游戏功能、工作量、流畅性、创新性、美观性等5个方面。演示中鼓励其他组的同学提问和试玩游戏,尽量找出游戏设计的缺陷,通过多种方式培养学生的展示能力和竞争意识。,教师再进行总结性点评,指出设计的优缺点。

3教学效果

从调动学生学习积极性方面来看,在整个课程设计过程中,学生始终保持着极高的热情。教师为课程设计建立了QQ群,提供全天答疑服务,从QQ群讨论情况来看,学生提问很多,讨论热烈,而且绝大多数在课外时间。此外,课程设计结束后,很多学生指出,Funcode平台美中不足的是:自己创造出的游戏最终生成的可执行程序离开Funcode平台不能运行,非常令人遗憾。这也可以从一个侧面反映了学生的热情和对自己劳动成果的珍惜。从课程设计内容来看,学生大多是按照自己的想法设计的,游戏功能可谓五花八门,创新能力得到了很好的培养和锻炼。更重要的一点是达到了课程设计的教学目的,学生对程序设计的理解更加深刻,巩固了C语言学习成果,能够将游戏功能的实现逻辑用计算机语言地表达出来。在程序设计中遇到的具体问题,学生能够提出自己的解决思路,并通过编写程序表达自己的思路,很好地将课堂上学到的理论知识应用于实际问题的解决,抽象思维和逻辑思维能力、程序设计实践动手能力均得到了很好的锻炼。例如:图2所示为学生设计的游戏初始界面。该游戏实现的功能有:游戏实时;游戏实时显示得分;通过键盘控制游戏的开始、暂停和游戏场景的切换;用鼠标控制“拍子”进行移动和拍打;打到大蚊子、小蚊子积分不同,打到坚果则减分,且打中目标有图片特效产生;蚊子的产生地点、时间、数量和产生时的飞行速度都是随机的,且飞行速度随着积分级别越来越快;游戏结束时显示得分较高的三条历史记录等。此游戏中,学生自己编写代码(不包括自动生成的代码)行数在800行以上,使用的C语言知识点涵盖了数组、链表、函数、变量作用域、多分支结构、循环结构等。

4结语

Funcode平台简单易行、图形界面化的游戏界面编辑方式,使学生有很大的热情根据自己的意愿去设计华丽精美的游戏,简单的游戏设计主框架和平台提供的图形处理接口函数极大地降低了游戏设计的难度,使学生能够专注于游戏功能的设计和游戏逻辑的实现。功能强大,提供了大多数游戏开发所必需的基本函数模块,开放,学生可以根据自己的思路,发挥创造力和想象力,设计出真正的自己的游戏,极大地调动了学生对程序设计的兴趣和热情。总之,40个学时的C语言课程设计中,学生对程序设计的兴趣和热情被激发出来,绝大多数学生体会到了程序设计的乐趣,对程序设计的认识更加深刻,各方面的综合能力得到了锻炼和提高,取得了较好的教学效果。

作者:武航星姚琳张敏单位:北京科技大学计算机与通信工程学院

c语言课程设计论文:C语言课程设计教学探究

一、传统C语言课程设计教学模式

C语言是最基本的计算机编程,是计算机、电子信息类等相关专业学生的专业入门课,在其学习过程中,要求必须掌握编程的技能。但是C语言的学习有其特点,规则比较多、知识点多,涉及到的编程程序等也比较难懂,在运行上代码的要求较高,程序执行效率高,因此更讲究教学和学习的方式方法,但是在我们的教学中,目前教学方法比较单一,随着信息化的发展,传统的教学模式已经无法适应,亟需改革。

1、传统型

这种教学模式,也是最常用的,课堂上以老师为主,学生只能被动的接受知识的传授。通过最直接“填鸭”式照本宣科,不管学生接受与否,的考核也是以知识点的记住与否,造成学生死记硬背,不能真正掌握知识。其基本模式为:学习——回答——纠错——总结。这种模式下,使得教师在教材以外的发挥余地极小,基本是“照本宣科”,强行灌输C语言的概念、特点、编程程序、基本的方法等,整个教学过程缺乏灵活机动、具有启发性的内容,学生被动的接受知识、被动的记忆、被检查、被考试、被批评等,日复一日的教条式训练,不能有效地激发学生的主观能动性与创造热情。

2、任务型

C语言教学区别于其他学科,在理论知识的传授之外,还需要培养学生的实际动手能力,因此,很多学校也采用“任务型”教学模式,基本模式为:根据具体要求提出任务—鼓励学生设计方案—实际操作—解决任务。在日常的教学中,学校大多会利用电脑等锻炼学生的实际动手能力,利用实际操作,锻炼编程、逻辑等能力,从而掌握C语言的基本知识。例如翻转课堂模式,教师将知识传授环节制作成教学微课,课前提供给学生预习,通过预习使课堂的实践性练习目的性更明确,教师随堂对学生遇到问题进行指导分析,从而培养学生独立思考能力和实际操作能力。这种模式的采用,相对于传统模式,有其进步性,这也是C语言等专业性、操作性学科区别于其他学科的特点决定的,在这种模式下更取决于教师自身的素质、知识、能力等,是整个课程的掌控者、引导者,他们的能力直接关系着教学成果。

二、信息化背景下面临的挑战

随着科技的发展,信息化在教学领域的应用越来越普遍,信息技术的日新月异,也使得其在课堂上,已经不仅仅是局限于简单地计算机和多媒体运用,移动技术、智能化与虚拟技术等为我们的教学提供了新的思路和方法,如何能使我们的教学与高速发展的信息化相结合,是教育领域不断探索的课题。C语言程序设计等课程具有很强的专业性要求,主要是建立在计算机信息技术的基础上,对于信息化的反应更为灵敏,传统的课堂上,以教师为中心的“面对面”的教育模式面临着挑战和冲击,用技术手段的灵活性与便利性来增强课程学习的兴趣和接受能力。随着新技术的广泛应用,会促使传统的教学模式发生变革,以教师为中心的教学模式逐渐转化为互动式教学模式,达到更好的教育效果。在C语言课程设计教学领域,进行信息化教学改革的尝试,充分利用信息技术,变革教学手段和模式,是信息化发展的必然要求。只有实现C语言课程的信息化教学改革,使得教育信息化能够普遍运用,才能展现出信息技术在推动C语言教学中的强大威力和广阔前景。

三、教学模式改革的基本对策

教学模式直接反映出一定的教学理念,也直接决定着教学成果。随着信息化的发展,教育信息化逐渐打破传统的教学模式,在这样的背景下,C语言教学模式的改革任务艰巨,如何构建新型的信息化教学模式也是我们在实践中不断摸索的问题。

1、充分利用信息化的科技手段

信息化的科技手段,给我们的教育领域带来变革,尤其是计算机领域的学习,其主要是建立在信息化发展的基础上,因此在教学中,更要与时俱进,与信息化的发展程度相互依存,相互辅助,C语言课程设计教学中,可以充分利用信息化的科技手段,如计算机技术、云计算技术、多媒体技术、网络技术、虚拟现实技术、通信技术、移动学习技术、人工智能、传感器技术等,这些技术的发展,带来C语言教育领域的变革。为提高C语言教学质量,激发学生学习C语言的积极性,我们可以在课程建设过程中充分利用现代技术带来的便利与多样性,以及趣味性。如在教学课件设计上,利用多媒体技术,图、文、动画并茂,减少其枯燥的理论传授,增加趣味性;利用网络技术,实现在线教育,建立“C语言程序设计”网站,分组进行网站维护,运用编程能力进行更新;应用现代的通信技术,建立微信学习群,让学生分享自己的学习经验,共享学习资源。

2、案例引导式教学模式

改革C语言教学模式,另一探索的模式为案例引导式教学模式,C语言的教学,是为了培养学生读程序、调试程序、写(仿照)程序的能力以及规范性编程的能力,学习最主要的目的是为了应用,对于编程的应用,只有具体的应用场景,即案例,才能更容易被接受,更易懂。案例引导式教学模式,在别的专业课教授中,常被使用,主要特点就是用案例去引导知识点的掌握,对案例进行分析,通过分析启发学生的思路,将学生带入到具体的案例中,让学生有一种“身临其境”的代入感,从而掌握具体的知识,学会在这种场景下解决问题的方法,这种模式的教学更有针对性、系统性。案例引导式教学模式在C语言课程设计教学中的运用是指针对C语言课程的每一个核心知识点,建立配套的案例,通过这些案例的学习和掌握,使得学生在例子的佐证下,更加了解C语言的应用,这种案例的设计,和我们的书本知识相结合,把理论知识融入到具体的案例中,进行综合性的阐述,如具体的计算机程序的编写,设计游戏环节,运用所学的C语言知识设计网站,并使之运行,可以在班吉内分组进行维护等,并加以各种领域成功案例或者失败经验的案例,让学生能够更进一步了解其应用范围、能力、领域等。

3、实践教学模式

C语言课程设计的学习,所需的能力不再是死记硬背,而是更注重实践和应用,因此我们在教学过程中,不能只传授书本知识,还要锻炼学生的动手能力和编程能力,实践教学模式应运而生,依靠大量的实践,将所学的知识转化为实际操作,得到进一步的应用。信息化技术为这种教学模式提供支撑服务,我们可以在课堂上设计各种实践环节,也可以在课堂后与各种软件公司、游戏公司、网络公司等合作,增加实践机会,让学生在具体的实践环节中,真正了解C语言的知识,并主动内化这些知识,变为实际操作能力。在这种教学模式改革中,如何能够更好的提高实践能力需要通过各个环节的相互配合,如课程设计上,增强实验、实训环节,让学生在熟练掌握C语言语法、程序结构的基本理论的同时,通过大量的实践操作,进一步掌握C语言的知识,学会编码;同是,积极与各软件、互联网、网络公司签订实践基地,让学生可以在实际应用中,边做边学,提高学生逻辑思维、实际操作能力,真正实现教学目的,熟练掌握计算机编程能力。

作者:王桂华 单位:营口职业技术学院

c语言课程设计论文:C语言课程设计研究与运用

1开设课程设计的目的及意义

高等职业教育的目标及侧重点不同于普通高等教育,其培养的学生在毕业后应能直接上岗,具有熟练的实践操作技能。教育部《关于以就业为导向深化高等职业教育改革的若干意见》中指出,高职教育应“坚持培养面向生产、建设、管理、服务及时线需要的‘下得去、留得住、用得上’,实践能力强、具有良好职业道德的高技能人才”。

因此,加强实践性课程教学,对保障人才培养质量显得尤为重要。我院为贯彻《关于提高高等职业教育教学质量的若干意见》(教高[2006]16号文件)精神,针对区域经济发展的要求,灵活调整和设置专业课程,以就业为导向,加快专业课程对应的课程设计改革。目前,我院按照由浅入深、不断深化的教学规律,构建了实践教学三层次四环节的实践课程体系(图1)。实践教学三层次包括基本技能、专业拓展、综合创新,四环节包括实验、实习实训、设计和课外实践。“C语言课程设计”是我院信息类专业的必修专业基础课程设计,在“C语言程序设计”课程教学结束后的下一学期进行,历时2周,40学时。课程开设的目的在于培养学生分析问题和解决问题的能力,为学生提供一个动手、动脑、独立实践的机会。

2项目教学法的简单介绍

2.1项目教学法“项目教学法”是基于建构主义教学理论的一种教和学的模式。著名的瑞士心理学家皮亚杰认为,知识不是通过教师传授得到的,而是学生在一定的情境下,借助他人的帮助,利用必要的学习资料,通过意义建构的方式而获得的。美国项目管理专家约翰·宾认为:“项目是要在一定时间里,在预算规定范围内需达到预定质量水平的一项一次性任务。”

“项目教学法”是通过实施一个完整的项目而进行的教学活动,旨在把学生融入有意义的任务完成的过程中,让学生积极地学习,自主地进行知识的建构,在课堂教学中把理论与实践教学有机地结合起来,充分发掘学生的创造潜能,提高学生解决实际问题的综合能力。因此,在教学活动中,教师将需要解决的问题或需要完成的任务以项目的形式交给学生,在教师的指导下,以小组工作方式,由学生自己按照实际工作的完整程序,共同制定计划,共同或分工完成整个项目。

在项目教学中,学习过程成为一个人人参与的创造实践活动,注重的不是最终的结果,而是完成项目的过程。在高等职业技术教育中,项目是指以生产或制作一样具体的、具有实际应用价值的产品的工作任务。在技术领域,很多小产品或一些复杂产品的模型都可以作为项目,如:在信息类专业,可以开展微机组装、网站建设、信息管理系统开发、局域网构建、单片机制作、多媒体课件制作等项目;在电子类专业,可以开展报警器、LED、门铃、家电组装等项目;在商业、财会和服务行业,所有具有整体特性并有可见成果的工作也都可以作为项目,如商品展示、产品广告设计、营销策划等。

2.2项目教学法的基本特征项目教学法与传统的教学法相比,有很大的区别,主要表现在改变了传统的3个中心:以教师为中心转变为以学生为中心;以课本为中心转变为以“项目”为中心;以课堂为中心转变为以实际经验为中心。项目教学法具有以下特点:(1)实践性。项目“源”于企业,项目的主题与真实世界密切联系,由浅入深,选择的项目具有典型性、实用性。(2)自主性。提供学生根据自己的兴趣选择内容和展示形式的决策机会,让学生能够自主地进行学习,从而有效地促进学生创造能力的发展。(3)发展性。长期项目与阶段项目相结合,构成了实现教学目标的认知过程。(4)评价特殊性。项目型教学的评价注重学生在项目活动中能力发展的过程,测评内容包括学生参与活动各环节的表现及作业质量,避免了传统的一张试卷定成绩的弊端。测评可以采用自评、小组评、教师综合评等方法。教师只有明确并抓住项目化教学特点,才能更好地完成教学目标。

3项目教学法在“C语言课程设计”中的实施

3.1教学内容为了更好地开展课程设计教学,经过多次实践和摸索,总结出学生在具体实施项目中一般存在2个方面的知识不足:及时,在教学内容上,由于前导课程在教学上受学时影响,很多教师对指针、结构体、共用体和文件基本操作的知识介绍不甚完善、系统,更难谈上辅以实例加以消化。对此,针对学生在这些知识点上的掌握程度,利用4~6个学时,实施区别式的、辅导性的、实例化教学。第二,学生对项目管理知识知之甚少,针对此情况,采用2个阶段实施有别于常规教学的补课行动。第1阶段为项目准备阶段,利用2~4个学时,安排曾经做过项目且做得比较好的学生,现身介绍项目的准备工作(包括如何选题、如何查找资料、如何复习C语言知识)、项目实施过程要完成的工作(包括如何做市场调查、如何做需求规格分析说明书、如何做概要设计说明书、如何做详细设计说明书、如何选择使用代码编码器代码编写注意事项)、项目验收及作业提交的工作(包括程序测试事项、如何写课程设计报告)等。在学生介绍中,教师穿插讲解,辅以点评。第2阶段为项目实施阶段,教师应针对学生发生的问题,及时给予指导,直到学生弄懂为止。

3.2教学要求切实保障教学质量和教学效果,本着“学以致用”的原则,要求学生做到以下3点:及时要做到“学有三备”,即:在项目实施前做好知识储备,在项目实施中做好安全防备,项目结束时做好被评准备。第二要写好“三书一报告”。“三书”即每个项目组要做需求规格说明书、概要设计说明书、详细设计说明书,“一报告”即人人都要做课程设计报告。第三要做“四自”参与者。“一自”即自律,要求学生自觉履行学生守则和项目实施有关规则,不迟到、不早退、不缺席,实施点名制度,若无特殊原因,有5次旷课者自愿以重修论处;“二自”即自尊,要求学生尊重知识、尊重学习规律、尊重项目组成员、尊重教师、尊重自己;“三自”即自信,要求学生相信自己能够按时、按量、按质完成工作内容,遇到困难时,沉着、冷静,理性地寻找问题解决的办法;“四自”即自强,要求学生不满足自己已有的成绩和以往与课题项目组共同取得的成绩,用创新和超越的思想,做出比以前哪怕是前进一小步的事情。同时也要求教师做好相应的工作,如做好项目整体规划、精心准备、努力激发学生参与行为、为人师表、表扬为主、批评为辅、多分析、精点评等。

3.3项目实施进程项目教学法是一种生动、灵活、多样化的教学方法。在项目实施过程中,既不能生搬硬套地利用一个时间标准,又不能影响项目实施的整体进程,因此对时间的灵活处理是非常关键的,也是值得商榷的。

3.4明确项目内容,帮助学生立项立项首先要审题。当学生拿到项目列表时,最不能忽略的问题,就是提醒学生审题。审题恰当对学生以后开展各项工作是关键。审题时,学生首先要考虑自己的长、缺处,做到扬长避短,也就是说审题就是学生自己审自己完成该项目有多大的能力,有没有信心。只有学生明白自己,才可以避免以后实施项目过程中走弯路。同时既要建议学生在组建项目组时,考虑所在组的其他学生的长处和短处,又要尽量避免使被学生认定的差等学生没人愿意与其组合,而成绩好的学生又抱团的现象发生。

根据近几年带课程设计的经验,关于如何合理选择项目,建议教师应从学生的角度考虑以下4个因素,协助学生做好选题:(1)规模。项目规模太大会影响项目的完整性,项目规模太小难以体现课程的实践性。(2)难度。项目难度一定要适中,既要激发学生学习的兴趣又不能影响学生的自信心。(3)实用性。项目的选择应该是现实世界真实的工作任务,具有一定的现实和实用性。(4)趣味性。兴趣是好的老师,所以在选择项目时应考虑其趣味性,让学生有更大热情投入项目。

c语言课程设计论文:C语言课程设计实践与分析

摘要:C语言课程设计是C语言学习中一个不可缺少的环节,是学习和掌握C语言的重要手段。结合C语言的学习和课程设计的经验,给出了C语言在学生成绩管理系统设计的一些框架,指出了C语言课程设计中应该注意的一些问题。

关键词:C语言;课程设计;学生成绩管理系统

1 设计要求

矩阵乘法:编写一个函数实现矩阵A(2行3列)与矩阵B相乘(3行2列),乘积放在C数组中。在主函数中输入相乘的两数组,并输出结果。

学生成绩管理:结构体数组、函数、指针、算法、流程结构及文件等的综合应用。

程序说明:有N个学生,每个学生的数据包含学号(不重复)、姓名、三门课的成绩及平均成绩,试设计一学生成绩管理系统。

2 功能模块的设计

2.1 输入记录函数STUDENT *create()

算法:先声明一个首节点head,并将head->next设为NULL。每输入一个数据就声明一个新节点p,把p->next设为NULL,并且链接到之前列表的尾端。

N-S流程图如图1:

图1

2.2 记录函数void print(STUDENT *head)

算法:先将p结点的指针指向及时个结点,将p结点(即及时个结点)的数据输出。然后再将p结点的指针指向p指针的的指针(即下一结点),将p结点(即及时结点)的数据输出。重复执行此步聚直到p指针指向NULL为止。

N-S流程图如图2:

2.3 找记录函数void search(STUDENT *head)

算法:采用线性查找法往下一个节点查找。输入所要查找的学生的学号s,设一个指针变量p,先指向及时个结点,当strcmp(p->name,s) && p!= NULL时,使p后移一个结点,如果p!=NULL,输出p所指的结点。

N-S流程图如图3:

图3

3 设计中应注意的问题

3.1 程序效率分析

在程序中频繁的调用函数会增加系统的负担,降低程序的执行速度,花费较多的时间,影响C程序的执行效率。同一个程序编写方式的不同,它们运行的效率也就不同,这就要求我们在编写程序时,在程序的性得到保障的前提下,根据具体情况找出的、能充分利用系统资源和提高程序运行效率的一种方法。当然,在不同的系统和不同配置的计算机上程序的运行效率是不尽相同的,程序的效率问题是在编写较大或较复杂程序时应该充分考虑的。

3.2 数据类型的使用

数据类型是C语言中的一个既简单又基本的问题,如果我们对它没有充分的理解,往往会导致一些莫名其妙的错误。C语言追求简捷、自然,编起程序来简单、方便、可读性好。另一方面,C编译程序的语法检查很不严格,所以程序即使通过了编译连接仍然可能得不到正确结果。特别是对于一些运行时错误,如运算溢出、数组越界,编译程序根本不做什么检查。这就要求程序员认真研究、掌握规律、避免错误。对于某些微妙的问题,如果能从书本上找到现成的答案固然好,但可能性不大。好的办法还是用机器实验,实践是检验真理的标准。如果程序员懂得汇编语言,那是大有好处的。不仅能提高联想力,而且可以阅读TCC产生的C源程序的汇编语言版本,那么我们几乎可以搞懂C语言的一切细节。

3.3 指针的使用

指针是C语言中的一个重要概念,也是C语言的一个重要特色。正确而灵活地运用它,可以有效的表示复杂的数据结构;能动态分配内存;能方便地使用字符串等。掌握指针的应用,可以使程序简洁、紧凑、高效。指针较难掌握,在使用时稍有不慎,将给C程序带来隐患甚至是致命的错误。

在指针的使用中经常容易产生以下错误:1) 定义和应用的错误;2) 类型匹配的错误;3) 共享内存和双向传递的错误;4) 指针在数组中的错误使用。

3.4 函数浮点形参的使用

在使用Turbo C语言开发程序时,并非需要将函数的形参float类型数据进行转换为double,也并非Turbo C在处理此类问题时存在缺陷和错误。本文通过实例分析,阐明了在Turbo C开发环境下,在进行函数说明和定义时,有两种方式可以使用,及时种是使用传统型函数说明和传统型函数定义,第二种是使用函数原型定义和说明,不能任意组合。

3.5 ++运算符的使用

在C语言中原本规定++运算是定义在整型上的,但是由于C语言中提供了自动类型转换,所以对于float类型使用++运算的时候编译器投有检查出错误。然而其运算过程不同于int类型,主要是由干要进行类型转换的原因。因此一般情况一下不必利用float类型进行++运算。

4 结论

本文在结合学生管理信息系统课程设计的经验的基础上,探讨了在C语言课程设计中的设计方法和应注意的一些重要问题,这对C语言的学习和课程设计有一定的指导作用。

c语言课程设计论文:C语言课程设计改革初探

摘 要: 通过一份问卷调查,发现C语言课程设计这门课程存在诸多问题。借鉴学生提供的建议,分别从课程设计的时间安排、课堂教学及课程设计的命题方面进行了改革,相信这些改革措施一定会取得很好的教学效果。此外还对学生反映比较多的问题,比如“编译错误不好发现、也不好修改”提供了一个很好的解决方案。所有这些教学改革措施的最终落脚点都是要为国家培养出更多、更的建设人才。

关键词: C语言 课程设计 问卷调查

1.引言

C 语言作为一门程序设计语言的入门课程,很好体现了程序设计的灵魂,是进一步学习其他语言或者计算机技术的理论基础。“课程设计”在中国绝大多数高校已经开设很多年,那么什么是“课程设计”呢?简单地说,“课程设计”是一门这样的课程:学生利用所学的书本知识来解决现实生活中的各种实际问题。本文从一份简单的关于C语言课程设计的问卷调查说起,系统地总结了C语言课程设计存在的优点和不足,并针对这些不足提出了一些可行的改进措施。希望这些措施能够落到实处,能够对相关的课程起到借鉴作用,以便为中国高校培养更多更的人才发挥一点作用。

在计算机发展的历史上,还没有哪一种程序设计语言能像C语言这样应用广泛。C语言不是一种“很高级”的语言,也不“庞大”,并且不专用于某一个特定的应用领域[1]。由前面的叙述可知,学习C语言对大学理科生,尤其对计算机学院的学生而言非常重要。笔者在一次C语言课程设计课上进行了一次问卷调查,问卷调查的内容参见图1。尽管这个问卷调查非常简单,可是通过它能发现C语言课程设计存在的问题。笔者对该问卷调查的结果进行了汇总,首先看学生是怎样评价C语言课程设计优点的,如图2所示。其实学生们提到的这些优点教师早已知道,本文重点关注的是学生们提到的不足和建议。

那么C语言课程设计在我校开设的过程中存在哪些缺点和不足呢?有关的详细信息如图3所示。笔者将学生们提出的缺点与不足分为五个类别,这五个类别分别是:(1)关于时间安排和课时量的问题;(2)关于课堂教学的问题;(3)编译与调试方面的问题;(4)关于教师辅导方面的问题;(5)关于题目方面的问题。笔者将在第3部分对这些存在的问题给出可行的解决方案。看看学生们给出的建议都是什么?详细信息参见图4,笔者提出的课程设计改革方案也参考了学生们提出的建议。

2.相关工作

曾辉等人[2]指出了当前C语言程序设计课程教学中存在的问题,分析了问题产生的原因,论述了教学改革的必要性,探讨了教学中如何提高学生积极性、教学方法和手段等几个方面的教学改革问题。张敏霞[3]根据当前大学生的具体情况,针对如何有效地进行程序设计语言课程的教学,提高学生的程序设计能力和计算机素质提出了几点具体的措施。殷秀云[4]指出传统的C语言程序设计课程的授课方式和考核方式存在一定的局限性,进一步加大了学生掌握C语言编程方法的难度。因此,如何改变这种现状,以适应不断发展的社会的需要,已经是一个亟待解决的问题。马杰等人[5]针对C语言教学中存在的若干问题,提出了从任务驱动、培养学生兴趣、改革教学内容和方法、加强实验教学环节及改革考核机制五个方面进行教学改革,以提高学生的编程能力,变被动学习为主动学习,培养自学的能力。谢竞博[6]从教学目的、教材选择、教学方法、实践教学及考核方式等方面,阐述了它们与教学效果的关系,详细分析了目前教学中存在的一些普遍问题的成因,并从几个方面分别提出了一些可行的改革建议。陈婷[7]论述了在应用型本科C语言程序设计教学实践中,根据应用型本科教育培养要求,对课程合理定位,采用“阶梯式”、“案例式”课堂教学方法,以“项目驱动式”实践教学为核心,同时搭建多种自主学习平台,采用更科学和完善的考核方式,较好地兼顾了学生的不同需求,激发了学生的学习积极性。

刘三满[8]结合学生的学习心理和认知规律,分析了C语言教学问题的主客观原因,提出了“先过程,后对象”的教学理念,从教材建设、教学内容安排上阐述了教学内容的具体组织实施过程,从教学思路、教学观念、教学手段几方面探讨了教学方法的改革。谢中科[9]阐述了C语言程序设计课程的教学改革与实践,提出了通过激发大学生的学习兴趣、创新热情、教学互动等手段来建立大学生的编程思想,培养大学生的程序设计能力和创新意识。通过课程设计,培养大学生运用C语言解决实际问题的能力和创新能力。刘晓锋等人[10]从教师、学生和教学内容等方面介绍了在《C语言程序设计》课程建设中,以程序设计和实验为主,更新教学内容,改革传统的授课方式的探索,阐述了注重能力培养,提高学生的学习兴趣,充分调动学生的主动性、创造性的重要意义。

3.改革措施

前面部分,学生们针对C语言课程设计指出了一些缺点,同时提出了一些好的建议,在本部分将有针对性地提出一些改进的措施:(1)关于课程设计时间安排的改进:将C语言课程设计的开课时间定在学生学完C语言之后的下一个学期初。(2)关于课堂教学方面的改进:任课教师申请一个QQ或者微信群,在学校正式放假前,任课教师通过该群把课程设计的题目发送到每个学生的手中。下学期开学后的前几周进行课程设计的集体辅导,然后进行答辩验收。任课教师可以将没讲完的课程内容及对课程设计题目的大体梳理都录制成视频,然后将该视频文件上传到群文件里供学生们分享。群是实现师生互动的一个最重要的媒介,借助它可以突破时间和空间的限制。任课教师在放假前将题目发送到每个学生手里的一个较大好处是:学生们可以利用假期里的大量时间,充分地思考和准备这些课程设计题目。(3)关于题目方面的改进:允许学生自由命题,但是需要任课教师最终把关,以决定该命题是否适合作为课程设计的题目。此外,任课教师也可以考虑让企业帮助出题。

前面学生们提出“编译错误不好发现、也不好修改”的问题,笔者认为可以通过下面的方法进行解决:及时,首先告诉学生这是C语言的特点之一:语法限制不太严格,程序设计自由度大。一般的高级语言语法检查比较严,能检查出几乎所有的语法错误,而C语言允许程序编写者有较大的自由度,因此放宽了语法检查。“限制”与“灵活”是一对矛盾,限制严格,就失去灵活性;而强调灵活,就必然放松限制。第二,教会学生进行单步(Step Through)调试、设置断点(Breakpoint)等调试程序的技巧,必要时还可以通过额外添加一些输出语句辅助进行程序调试。第三,任课教师将常见的编译出错信息进行汇总,然后上传到群文件里供学生分享。其实对编译出错信息进行总结,不如直接告诉学生记住C语言的一些专业术语,表1中列出了其中的一些,相信这对学生调试程序将会起到很大的帮助作用。另外,还要告诉学生从一开始就要形成良好的编程风格,比如适当地添加注释(Comment),程序要有缩进(Indent),给变量、函数、数据结构等起名字时要做到见名知意等。

4.结语

从一份C语言课程设计的问卷调查入手,笔者根据学生指出的缺点和提出的建议对该课程进行了尝试性的改革,分别从课程设计的时间安排方面、课堂教学方面及课程设计的命题方面进行了改革,笔者相信这些改革措施一定会取得很好的教学效果。另外,笔者还对学生反映比较多的问题“编译错误不好发现、也不好修改”提供了很好的解决方案。将按照文中提出的一些观点编写《C语言课程设计》一书,该书将严格贯彻执行讲练结合的原则,对课程设计过程中可能涉及各个知识点通过举例子的方式进行讲解,例子的选择标准是不仅能说明问题而且要求最简单。

c语言课程设计论文:C语言课程设计心得体会

回想学习C语言的过程中,既有快乐又有烦恼。

从领到书的那一刻,我就很郁闷,《C语言程序设计》到底事学什么的,有什么用。刚开始上课时,还在迷茫这门课程是用来做什么的。不过,这些感受都是在对这门课程不了解的情况下产生的。后来慢慢的接触多了,听老师讲的多了,了解多了,渐渐的产生了兴趣。尤其是学到语句和函数时,上机操作程序,经过编译,调试和运行后,出现界面,当时觉得很好奇,想真正的学好这门课程。通过半个学期的学习,我掌握了基本知识。

下学期开始时,被通知要进行三周的课程设计。当时有点懵,感觉学的东西很少,很零散,不知该怎么练到一起,就要课程设计,是不是太难为我们了。

及时天基本上都是在看书,把基本知识再熟悉一边。到了下午的时候,老师发过来三道练习题,从这几道练习题上我得到了不少启发,然后我们组把整个程序的思路理清了,开始着手写程序。

及时周结束的时候,我感觉自己收获挺大的,从一开始的迷茫,不知道从何下手到把程序中的几个模块编写出来,心里挺开心的。但是,到了第二周,我们由不得不再次陷入困境。在整个程序的编写过程中。最难的就是修改和删除这两个模块,这也是我们第二周要解决的重点问题。

开始编写修改和删除时,很头疼,去向其他人寻求帮助,在别人的帮助和提示下,我编完了修改程序,但编译时老出错,修改后的内容将文本内的信息全部覆盖了。困难之时,我们组的其他人,帮助了我,完成了修改和删除。这样的话,整个程序基本上全部完成了,就剩下完善工作了。我们组写了两个程序,,两个程序相互组合,互补,大功告成

虽然设计时完成了,但是我觉得其中还是由一些不足之处:

1.警告句。程序中缺少一些警告句,例如:“是否真的删除(y/n)?”。

2.重名的情况。由于考虑的不周全,没有设计遇到重名的情况该怎么处理。

3.选择单一。我们设计的程序中,只设计了按名字选择,进行操作,忽略了重名的情况。

整个程序完成了,还有很多不完善的地方,希望自己以后办事的时候要认真,仔细,考虑周全。

短短的三周课程设计结束了,但是这段时间里,我又学到了更多C知识,如:对象数组,string类,文件流等,同时我也被提醒以后办事的时候要认真,仔细,考虑周全。,也看到了团队精神和互帮互助的重要性。这一点会让我终生受益。通过三周的课程设计,我觉得自己肚子里的墨水多了,收获也挺大的,这三周过的挺充实!

c语言课程设计论文:C语言课程设计教学

1合理组织教学内容

我校C语言教研组在指定教学计划、教学大纲时,明确了教学目标是“通过讲授C语言的特点以及各种语句和基本函数的使用,使学生学会基本的C语言程序的编写、调试等操作,领会结构化程序设计的内涵,训练程序设计的基本思想和方法,为今后开发软件打下基础,为学习后续课程(如数据结构)作好准备”。不仅要求学生学习理论,还必须能较熟练地上机操作,有较强的动手能力。作为工科专业接触的及时门工具语言,最能反映理论与实践的相结合。本课程所选用的教材在内容组织上,虽然依逻辑思维方式进行了归类,但难点还是较为集中,跨度大;概念讲得多,分析少;语言深硬,不够形象,较难理解。针对该问题,C语言教研组对教学内容重新进行了规划。及时,适当压缩部分难度较大,但实用性不强的内容,如:文件指针。第二,扩充部分难度较大且十分重要的内容,如:传值与传地址的对比。第三,充分利用互联网资源,总结归类相关知识点,如:可以将运算符优先级总结为朗朗上口的七字口诀:单算关逻条赋逗。第四、将全国计算机二级C语言等级考试真题融入理论和实践教学中。采用上述手段之后,明显发现学生对学好C语言的信心增加许多,学习积极性也就随之得到了提高。

2灵活使用教学方法

由于C语言程序设计是学生接触到的及时门语言工具类课程,难度大、学生不易接受,为此我校C语言全体任课教师进行集体备课,积极与学生保持互动沟通,随时根据大多数学生实际接受情况适当调整教学计划,灵活使用教学方法,如下所示:在理论课上,采取的是激发学生学习动机的教学方法。在课堂上,要充分认识到学生是主题,教师主要是起引导作用,引导学生自发学习、自主思考。因此,需要改变以往“填鸭式”教学方法,充分调动学生学习的积极性。为此,在每次上课之前,都需要做好充分的准备,精心的设计好教学案例,这些案例好能够“看得见,摸得着,和生活密切相关”。例如,讲到子函数时,在做课堂引入的时候,可以先给学生们演示一个五子棋的程序,让学生直观的了解到每个C语言程序都是由一个main函数和若干个子函数构成。在上机课上,采取的是分组讨论式的教学方法,将所有同学分成若干个小组,没个小组设置一个组长,所安排的每个组长都必须具备两个条件:掌握VC6.“0断点”调试方法,理论知识扎实。我认为上机课主要是锻炼代码的编写、调试能力,所以应该采取讨论为主、讲授为辅的方式。

3充分利用教学手段

在教学过程中,运用多媒体技术辅助教学,有利于激发学生的学习兴趣,能发展学生的主体能力;同时由于多媒体信息量大,也能够优化教学过程。及时、依托利用Claroline开源平台建立了C语言网络课程,详见南京理工大学泰州科技学院网络教学平台,设置有课程简介、课程资料、课程计划、学习讨论等模块,为学生提供了“第二课堂”,可以很好的弥补课堂教学的不足。第二,利用QQ、微信等即时通讯软件进行多渠道答疑,增强师生之前的沟通与交流。第三,开设网络教学博客,对日常学生反馈较多的问题予以解答。

4结束语

作为一名C语言课程的教师,对教学模式的探索与研究是永无止境的,在今后的教学过程中,一定要继续关注“C语言课程设计”的基本概念和程序设计方法,让学生掌握分析问题、解决问题的能力,还需要通过加强上机环节来增强学生的动手能力。只有不断的探索行之有效的教学方法,吸取前人的教学经验与教训,才能在今后的教学工作中不断突破自我,迈入新的台阶。

作者:谭立兴 单位:南京理工大学泰州科技学院计算机科学与技术系

c语言课程设计论文:表现性评价在C语言课程设计中的构建方法

摘 要 表现性评价又被称为“基于表现的评价”、“真实性评价”。表现性评价是根据学生实际完成一项特定任务或工作的表现而做出评价,即是从学生实际的行为表现来评价。目的是评价学生整体性的学习成果,通过解决问题的实际历程,经发现问题、观察、提出假设、推理、控制变量、测量、归纳、诠释资料、研究判断做出决定,这整个过程都是属于表现性测验的评价范围。本文以C语言课程设计为例讨论如何针对实践性较强的课程构建表现性评价。

关键词 表现性评价 量规 课程设计

1构建表现性评价基本思路

构建表现性评价就是制定评价目标、选择评价内容、开发和设计评价方法的,还包括评价者的参与、选择评价时间和场所、记录、收集和整理评价信息的,以及制定评价标准和表现标准等。依据这样的开发步骤,对C语言课程设计表现性评价的设计和实施做出了整体规划,该设想的总体思路如下图所示:

2表现性评价目标的制定

学习目标是课程学习活动的出发点和归宿,它指导教与学,向其他人传达教学意图,并提供评价学生学业的指导意见,是评价学生的重要依据。表现性评价的评价目标和课程的培养目标是一致的。在评价之前只有清晰的知道C语言课程要培养什么样的学生,才能把握好教学与评价的方向,最终达成目标。

C语言程序设计是一门典型的具有操作性和实践性特点的计算机科学课程。该课程的学习目标体系包括下列内容:

(1)知识类目标:理解并掌握课程要求的基本知识,加深对已学知识的理解,进一步提高原有技能;在熟练掌握陈述性知识的同时,更加注重对知识的应用。

(2)能力类目标:培养学生的创新意识、刨造思维能力和动手实践能力;培养学生信息意识和主动获取信息,处理信息的能力;培养学生的群体意识和学会沟通与合作交往的能力;培养问题意识和独立发现问题、提出问题、解决问题的能力;培养和提高管理能力等。

(3)情感类目标:现代学习观、科学精神和态度、社会责任感和使命感和交往能力等。课程设计的学习目标在课程学习目标的基础之上,更强调实践能力的提高,培养计算机程序设计的能力和素质,以及思维方法。经上述分析,与课程学习目标相对应,课程设计的表现性评价目标也应包含三个维度:对知识习得的评价、对能力的评价和对情感态度价值观的评价。对上述三方面的评价目的具体描述如下表所示。

3选择表现性评价任务

评价任务指的是一种与教学目标紧密相连的,而且能够为学生创造展示自己进步与能力的机会的一种具体的行为,能反映现实生活中的活动、表现和挑战的任务,建立在学习与评价的联系基础之上,考虑学生的兴趣和能力。C语言课程设计任务,更加突出应用性和实用性,拓展知识面。通过课程设计,进一步熟悉掌握数据类型、分支控制、循环控制、函数的定义及调用、结构体及数组、指针、文件操作、编译预处理等知识;达到系统理解、综合运用课程知识的学习目标;学会用C语言程序解决实际问题的方法;掌握程序的局部测试、调试方法,建立程序系统测试、调试的基本概念和思想,学会较大程序的系统测试、调试方法。

一般的C语言课程设计项目包括小型系统设计、图形图像设计和游戏程序设计基本过程包括以下6个步骤:

3.1程序的功能设计

功能设计是课程设计的及时个环节,其任务是根据课程设计题目的描述和要求,确定程序要实现的功能,并把功能划分为不同的层次,确定各层功能的上下级关系,然后绘制出分级描述的程序功能框图。

3.2程序的数据设计

程序的数据设计主要包括对以下各类数据进行设计:对程序中用到的主要数据确定数据类型;对程序中用到的结构体数据定义其结构类型;定义程序中使用到的全局变量、外部变量等;定义程序中通用的符号常量;确定文件的数据类型,如二进制文件、文本文件等。

3.3程序的函数设计

一个综合性的程序,需要设计若干个函数。各个函数功能各异,使用的层次也不尽相同。为了使总体设计协调有序的进行,需要在程序编码之前,对主要的函数做出预先设计,即所谓的函数设计。程序的函数设计包括函数的功能设计和函数调用设计两个方面。

3.4函数编程及调试

函数编程及调试是实现程序功能的核心阶段,函数编程及调试是实现程序功能的核心阶段,需要注意以下问题:课程设计具有一定的综合性,其程序通常由多个函数构成,每个函数都有独立的功能,实现特定的操作;有些函数之间有调用和被调用的关系,在进行函数设计时需要注意顺序问题,有点函数先设计,有点函数后设计,而没有调用关系的函数可以并列设计;程序设计是一个循序渐进的过程。有点函数在程序设计前的函数设计阶段就被考虑到了,而有的函数是在程序设计过程中因需要才产生的。但无论哪个函数,都会经历由简单到功能完善定型的过程。

3.5整体调试

整体调试是程序设计的必要阶段,是在前期程序设计调试基础上进行的基本过程。需要设计准备一个较大规模的数据集,按照课程设计题目的功能要求,对组装完成的程序逐项进行功能测试和调试,直至确认程序达到了设计目标为止。

3.6设计总结

设计总结是课程设计的最终阶段,通过对课程设计的各个过程进行系统地总结,按照指导教师的具体要求,形成课程设计报告。

4建立量规

量规(Rubric)是一种结构化的定量评价标准。往往是从与评价目标相关的多个方面详细规定评级指标,具有操作性好、准备性高的特点。量规是评价的工具,学生的作品、成长记录、学习成果或者学习过程中的其他表现(行为、认知、态度)都是量规的评价对象。同时量规也是一个教学工具和学习工具,可以指导教师的教学和学生的学习过程,模糊了教学、学习和评价之间的界限,评价工具也从而成为了教学工具和学习工具。量规设计的出发点和着落点是指标和等级地选择与确立。设计评价量规就是,以课程、教学、评价三者统一,突出学生主体性和促进学生发展的评价目的为设计原则,在明确学习目的和目标的基础上,列出评价指标和制定评价等级。对C语言课程设计内容加以分析,制定出课程设计过程中的几个量规。

4.1 C语言课程设计任务设计量规(教师)

该量规主要是对学生在对课程设计任务进行分析、提出解决方案、制定完成任务的相应计划的表现进行评价时所使用的量规。该量规中的评价项目主要包括问题分析、任务划分、程序架构等。根据评价项目完成情况好坏不同给出不同分值的具体表现,在评价过程中对照量规评价学生的表现。

4.2小组合作量规(教师)

该量规是由教师为各个小组整体表现进行评价的量规工具,小组的表现应包括帮助、倾听、参与、劝说、问题及尊重等几个方面,教师根据对各小组的观察情况,对各项评分,并计算总分,以此作为小组合作表现的成绩。

4.3小组成员相互关系表现量规(学生自评,互评)

小组成员之间的关系是否融洽,合作是否愉快,常常对整体工作效果有着至关重要的作用,因此,该量规也就比不可少了。该量规是从小组成员之间相互观察到角度来制定的,其主要评价项目包括合作、参与、态度、独立性、交流和应答等,每个小组成员都要为其他小组成员打分,计算评价分。这样每个同学都可以看到自己在本小组中和其他成员间的关系如何,在以后的人际交往当中即可吸取经验,更好地与他人融洽相处。

5总结

评价与教学是一个硬币的两面,虽然两者有不同的“图案”,但总是不可分割的共同体。目前,在教育领域中,我们面临的许多真实困难都来与教学和评价的分离。如果我们准备可信的方式评价学生,真正服务于促进学生深入学习的最终目标,教学与评价必将再次结合。

c语言课程设计论文:电子类专业C语言课程设计教学方法的探讨

【摘 要】本文就三本院校工科电子类专业的程序设计语言的教学进行了探讨,针对三本学生基础偏弱,自我能动性稍显不足的特点,将程序设计的教学分成了两个相关联的部分,理论知识的讲解和动手环节的实践,并对实践环节中的两个部分――分散知识点和综合应用分别给出了设计思路。

【关键词】C语言;理论教学;实践教学;课程设计

目前各个高等学校尤其是三本工科院校中,所选用的编程教学语言,由以前的面向过程化的语言Pascal语言向C语言过渡,这个也正是C语言广泛使用的一个例证,C语言作为一个对底层有较强控制能力的语言,对于初学者来说,还是不容易掌握。为了编程语言的教学,各个学校都在探索适合自己学生的教学方式。本文针对电子类的嵌入式方向专业的特殊性,采用了将理论和实践分开进行的方式,这样做,可以让学生对程序设计语言由浅入深地接受,在这个过程中,很自然地有纯粹的理论过度到实践编程的环节。

一、程序设计语言的教学思路

嵌入式方向C语言的教学,偏向于嵌入式底层的应用,在课程的安排上,结合三本院校学生的特点,将理论和实践分别安排的两个学期完成,及时个学期,主要是针对理论学习,第二个学期,开设课程设计的实践环节。在理论教学环节中,侧重点是理论的讲解,可以不必太在乎细微的语法细节,而将主要精力放在程序设计语言的思想上。作为教师在讲授C语言理论知识时,只要将过程化C语言的重点思想交代清楚了就可以了,在教学内容的安排上,一定要将结构体,指针和文件的相关知识进行讲解,这也决定了在理论学时的环节中,无法对个别函数的细节进行展开的原因,而这些理论环节的教学,学时可以控制在45~48之间。

二、C语言课程设计教学内容的设计

在教学内容上,由于实践课程的特殊性结合程序设计的特点,实践环节可以用两种方式完成,以便和前面的理论学时的知识进行衔接,这两个环节分别是单个知识点的联系和综合的课程设计的独立完成。

1. 单个知识点的实践

就单个知识点而言,都以专题练习的方式进行,在讲授的过程中,结合工程中的使用,每个专题,可以设计出独立的实践报告内容,程序设计语言的教学,除了掌握基本的语法规则之外,最重要的是同时要会调试程序,也就是要掌握调试程序的技巧。所以,课堂实践环节的内容的设计,不但包括了能够写出程序代码,而且还要会应用调试工具对程序进行调试,下面就是本人在进行数组,指针和结构体的综合专题中进行的课堂任务的设计:

任务描述:从键盘录入N个学生的信息(包括姓名,学号,成绩),统计出平均分,并将成绩低分,较高分的学生的信息输出。

该课堂实践内容设计的思路,主要是要学生掌握结构体的定义方法,理解数组的元素可以是结构体变量,同时要牢固掌握指针的本质就是内存地址,通过指针可以方便地操作用户空间的任何数据。

通过上面的实践内容,结合笔者的实际操作,学生在记录了指针地址的变化过程之后,不但掌握了查看内存的调试方法,而且对指针的本质有了感性的认识。

2. 综合课程设计

可以选取有一定规模的小系统让学生完成,在笔者的教学中,几年来了均采用了学生信息教学管理系统进行授课,随着经验的增加,这个小系统对于学生而言,有很好的锻炼价值。

这个环节的实践,可以不占用教学计划学时,而留给学生课后组队或者独立调试完成,这是因为,学生通过前面分散的专项知识点的练习,已经学会了怎样调试程序,而且,各个知识点通过练习之后,已经掌握得差不多了,这个综合任务,就是为了他们能够融汇以前所学的各个知识点。所以布置给学生之后,就可以在适当的时候进行答辩考核了。

三、C语言课程教学课堂组织形式的比较

作为实践课程,其教学有特殊性,笔者通过三个学期的探索,分别采用了两种课时组织方式,现在对两种方式的优缺点分别进行比对:

分散课时方式:就是按照理论课的安排,周学时2-4个学时进行安排。

周末集中方式:每个周末安排16个学时,进行集中训练。

对于分散授课的方式,学生的出勤率低于集中的方式,对于实践性质的课程,这种集中的方式进行授课,学生的出勤率会高于普通的方式。就学生课堂任务的完成情况而言,两者基本上都能按照要求完成要求的85%以上的内容。就课程衔进行考量,根据实际操作来看,集中方式明显优于分散的方式,这个记忆的遗忘兴致相符合。从考核结果来看,分散方式所参与的三届学生中,要优于集中方式,这个结果的出现,有部分原因是由于考核时间和上课时间之间的空隙拉的太长了。下次的安排,将会安排在课程结束之后的一周时间进行,这留出来的一周时间,就是让学生来独立完成自己的任务。

本文对三本学校中开展C课程设计的思路进行探讨和实践,提出了将C语言的教学分为理论部分和实践部分的思路,并把实践部分的练习分为专题知识练习和综合独立完成的任务两个部分,在课堂的实践中有较好的效果。论文还对课程设计的学时组织方式进行不同方式的实践尝试,为找到适合三本学生C语言教学的方法提供了一定的参考对象。

c语言课程设计论文:项目教学法在C语言课程设计中的研究与应用探讨

摘 要 项目教学是要通过一个较为完整的项目进行教学活动,其主要目的是为了能把学生融入到有意义的任务中,并充分发挥学生的创造潜能,提高解决实际问题的能力。通过对“C语言课程设计”课堂的教学,用项目教学法进行教学,取得了较为满意的教学成果。对于如何利用选择项目、实施项目、评估项目,进行了初步探究,并介绍了项目教学中需要注意的事项,为推广项目式教学法运用,提供了一些借鉴。

关键词 项目教学 C语言 教学实施 教学成果

1 开设的目的和意义

较之于高等教育而言,高等职业教育无论在目标性还是教学的侧重点上,均存在着较大的差异性,后者通过对学生进行培养,毕业后可直接参加具体的工作,因其已经熟练的掌握了操作技能和技巧,所以能够独立完成工作任务。根据高职院校学生就业指导意见,当前高等职业教育教学应面向生产、管理以及建设和服务等一线行业,为这些部门和工作岗位输送人才,以下得去、用得上和留得住为基本原则,培养实践能力较强具有较好的职业道德的高技能人才。因此,要加强实践性课程教学,对保障人才培养质量显得尤为重要。

我院为了贯彻这种精神,立足区域经济发展现实情况,对专业课程进行了灵活的调整,其中以就业为主要导向,不断加快应用课程设计与创新。就当前我院工作实际情况来看,以由浅入深和逐渐深化为主要教学规律,并在此基础上构建了教学三层次、四环节之实践课程系统。实践教学的三个层次是:基本技能,专业拓展,综合创新;四个环节是:实验培训,实验实训,设计和课外实践。

比如,C语言课程,作为信息类专业的基础课程,程序设计都是在课程教学完成后进行,共有四十个学时,历时两周。为学生提供一个动手、动脑、独立实践的机会。

2 项目教学法简介

项目教学法是基于构建主义教学理论的一种教与学的模式。瑞士著名的心理学家皮亚杰认为:知识不是通过教师传授得到的,而是学生在一定的情境下,借助他人的帮助,利用必要的学习资料,通过意义构建的方式获得的。美国项目管理专家约翰·宾认为:项目是要在一定时间里,在预算规定的范围之内需要达到预定质量水平的一项一次性任务。

项目教学法是通过实施一个完整的项目进行教学活动,将学生融入到任务的过程中,让学生进行主动地学习,自主性地进行知识构建,在课堂教学中把理论与实践教学有机的结合起来,能充分地发挥学生的创造潜能,提高学生解决实际问题的能力。因此,在实际教学过程中,教师要将需要解决的问题或需要完成的任务以项目的形式交给学生,让学生在老师的指导下,用工作小组的方式,由学生自己按照实际的工作程序,共同制定计划,共同或者分工完成整个项目。在项目教学过程中,学习过程称为人人都参与的实践过程,注重的不是结果,而是整个项目完成的过程。

对于高等职业院校的技术教育教学而言,项目主要是指生产或者制造有应用价值的具体产品之任务。从技术领域来看,多数小产品、复杂产品等模型制作均可作为具体的项目,比如信息类专业开展网站建设、计算机组装以及建设局域网项目,电子类专业可开展报警器制作、加点组装等项目。

3 其基本特征

项目教学法与传统教学法相比具有较大的差别。主要表现在改变了传统教学中的三个中心:以教师为中心转变为以学生为中心;以课本为中心转变为以项目为中心;以课堂为中心转变为以实际经验为中心。项目教学法具有以下的特点:

实践性:项目源于企业,项目的主题与真实世界是紧密联系的,由浅入深,选择的项目具有典型性和使用性;自主性:提供学生根据个人兴趣进行选择的内容和展示的机会,让学生进行自主的学习,从而有效地促进了其创造力的发展;发展性:长期的项目结合,构成了实现教学目标的认知过程;评价的特殊性:项目性教学更注重的是学生在项目活动中能力的发展过程,评测的内容包括学生参加各项活动的表现,避免了传统的成绩定好坏的弊端。评测可以采用自评、小组评、教师综合评等方法、教师只有明确并抓住其教学的特点,才能更好地完成教学目标。

4 其在C语言课程设计中的实施

为更好进行课程设计教育教学,在多次实践基础上,总结出具体项目实施中主要注意的两个方面:

其一,教学内容主要事项。前导课因教学课时的影响,所以教师为赶教学进度,对结构体、基本操作以及共用体等知识的介绍不充分,也不够完善,更谈不上辅助实例进行讲解。对此,要根据学生对这些知识点的掌握程度,利用5个学时,实施区别式、辅导式的教学。

其二,由于学生对于项目管理的知识较少,针对此种情况,可以采用两个阶段实施补课行动。及时个阶段,安排曾经做得比较好的学生进行讲解相关经验;第二阶段,为项目实施阶段,教师应该针对学生发生的问题,及时给与指导,直到学生弄懂为止。

总之,通过此种教学方法,教师在观察学生、帮助学生的过程中,既开阔了视野,也提高了专业水平。项目教学法是师生共同完成项目、共同取得进步的好方法。

c语言课程设计论文:独立学院C语言课程设计教学实践与探索

摘要: C语言课程设计是一门实践性非常强的课程。本文主要讨论了独立学院C语言课程设计的教学。在教学过程中,针对独立学院学生的特点,设计了一套行之有效的教学流程。学生在教师指导下全程参与完整的项目开发,教学效果良好。结合课程实际情况,分析了教学过程中存在的问题,并提出了相应的解决办法。

0 引言

独立学院是我国高等教育办学体制改革创新的重要成果。为了造就适应企业需求的高素质应用型人才,结合独立学院学生基础水平,在独立学院的教学工作中应加强对学生实践动手能力的培养。为此,在《C程序设计》理论教学及实验教学的基础上,我院针对非计算机专业学生开展了一项实践教学环节:C语言课程设计。此课程自开设以来,受到学生的广泛欢迎。在做课程设计的过程中,同学们既融会贯通了C语言基本语法,同时又通过项目实战切实提高了动手编程、调试程序的能力。对于学生来说,独立完成一个完整的项目,带来的成就感和自信心,有利于后续学习的开展。

1 C语言课程设计教学现状与教学亮点

C语言课程设计开课时间为大一下学期,共计32学时,授课对象为电子科技大学成都学院微电子技术系本、专科生。针对教学对象的差异,分别制定了专科、本科教学大纲,同时在多媒体课件的制作上,讲求简洁、美观并突出教学重点。

尽管已经学习过C语言,但多数同学在经过一个学期之后,忘记大半,掌握的知识点零碎、构不成系统,所以在进行项目开发之前,必须进行C语言基础知识的串讲。在串讲过程中,通过回顾已学内容、演示典型例题,达到温故知新的效果。这就要求教师精心准备串讲上机练习题。题目要有的放矢,同时又与后续项目开发有一定相关。数组、函数、指针、结构体、文件操作,各布置一道综合练习题目。这样一步一个脚印地把项目开发之前的技术知识准备工作做好。

1.1 教学过程设计合理 C课程设计整个教学过程如图1所示,分为准备、开发、汇报三个阶段。为了杜绝部分同学对实验课抱着蒙混过关的侥幸心理,要做好该课程的课前动员工作。课前动员工作主要体现两个要点:一是敦促C语言基础知识不扎实的同学重视概念和基础,因为没有良好的基础,急于编程只会导致错误百出。二是使同学明确本门课程考核评分标准,端正其学习态度,激发其学习热情,为后续教学的开展做好准备。自由分组以二至三人一组为宜,每组推选一名基础好的同学,担任开发组长。组长带领组员进行自主选题、开发设计、书写设计报告、参加答辩等工作。

1.2 题目选择多样化 选择一个难度适中、具有一定的趣味性并与同学生活息息相关的题目是开展课程设计的首要任务。题目太难会严重打击同学的自信心和积极性;题目简单会导致同学对C语言不够重视,学不到东西。进过严格筛选,仔细比较,同时结合《C程序设计》课堂教学经验,归纳出适合学生现有水平的题目主要有两大类:一是各种管理系统,比如学生成绩管理系统、运动会成绩管理系统、图书管理系统等;二是各类小游戏,比如贪吃蛇游戏、搬箱子游戏、扫雷游戏等。允许学生根据自己的兴趣爱好自拟题目,但需经过教师审查通过。

教师同时提供多个题目并简单讲解每个题目的设计需求、难度、涉及到的知识点以及完成后的代码量等,供学生自由选择。题目多样性、难度阶梯性带来的效果有两方面:一方面学生能选到自己感兴趣,适合自己水平的题目;另一方面可以较大程度地避免互相抄袭等情况的发生。

考虑到独立学院的学生总的来说编程基础不够扎实,为了让同学尽快入门,明确到底要做什么,在需求分析阶段,教师需要当堂分别操作一个管理系统的程序以及一个小游戏程序,演示其功能。这样一来学生可以对项目开发建立起直观印象,同时对用C语言开发界面做到心里有数。

1.3 引导为主 课程设计过程中,学生的角色定位为初级开发人员。教师做为指导者对其具体开发过程进行监督指导。很多同学一遇到问题,就特别依赖老师,希望老师帮忙调试或者直接给出解决方法。针对同学提问,教师应采取引导的方式,启发同学独立思考,而不直接给出问题的答案。同时鼓励学生网上查阅相关文档或者帖子,通过网络解决问题。一段时间后,如果该同学还是不能自行解决,教师再给出解决方法。这样做不但可以提高同学独立分析问题、自主解决问题的能力,还可以锻炼其与项目组其他同学合作交流并获取新知识的能力。

对于同学提出的奇思妙想,教师应予热情的鼓励。同学在开发过程中,能够有自己的想法是一件好事,教师可以和同学探讨其想法,并尽可能地帮助其付诸实践。对于部分好学的同学,教师可以通过介绍参考教材、推荐开发网站等,让这一部分同学依照自己的兴趣自学。

1.4 关注教学细节 学生水平参差不齐这一特点在独立学院三本学生中体现的特别明显,所以在教学过程中,不能搞“一刀切”。根据笔者的教学经验,同学中两级分化情形严重,呈“哑铃型”结构。针对这一特点,结合非计算机专业对C语言能力的要求,在教学目标的制定上,需要提高辨识度,按照“高、中、低”区分学生水平,对学生做阶梯型的要求。

作为一门实验上机课程,尤其需要保障教学时间的连贯性。时间太短,学生刚有思路就下课了,导致半途而废;时间太长,学生长期呆在实验室上一门课程导致疲劳,降低学习效率。经过探索,以四节课为一大节课最为适宜。

1.5 考核 合理的评分机制有利于提高学生的学习积极性。作为注重动手能力的实践实验课,C语言课程设计的考核方法自然不能沿用理论课的考核方式。

独立学院的培养方向是应用型人才,要求学生将来进入企业能够快速融入项目团队,这就需要考核同学的动手能力、工程概念以及人品素质。C课程设计的考核兼顾了团队与个人表现,关注动手能力与基础知识的考察。本门课程总分100分,各项具体分值分配如图2所示。

课堂表现包括考勤、开发过程中的认真程度、团队合作精神等方面。实验报告写作内容主要包括:需求分析、系统设计框图、关键算法实现等。通过书写实验报告,提高学生书面表达技巧,锻炼其书写开发文档的能力。

在课程设计的,我们安排了项目答辩。答辩环节考核学生语言表达能力、临场应变能力以及对相关知识的理解,为同学提供了一个展示自我的舞台。答辩过程分为三个环节:演示讲解环节、学生提问环节、教师提问环节,每个环节各占10分。在演示讲解环节中,首先由项目组长操作演示可执行程序,并介绍各个组员的分工、开发过程中遇到的问题以及解决办法、程序的创新点等。在学生提问环节和教师提问环节中,大家可以对自己感兴趣的问题进行提问,教师在此过程中需要作适当引导。综合各个环节得分,当场给出每组答辩分数。在答辩结束后,教师应对表现良好的团队予以表扬和肯定。,要求同学上交实验报告册。

2 课程后期建设目标及思考

为了在实践中提高学生的综合素质,达到C课程设计“动手、动脑、动嘴、动笔”的教学目标,在教学内容的安排上尤其要突出以下几点:

2.1 在教学过程中有意识地向学生灌输软件工程的思想、项目管理的相关知识。

2.2 在教学中应注意培养学生养成良好的编程习惯。按照国内知名公司的编程规范来做要求。

2.3 注重培养学生自学能力和独立思考能力以及团队合作精神。

2.4 教学时间安排在实践专周,这样学生有整天的时间投入到项目开发过程中去,从而保障了教学效果的连续性。

3 总结

C课程设计从完成一个小项目出发,增强了学生的动手能力,使学生在从事C程序开发时,能系统地考虑问题,合理安排项目进度,熟悉开发过程,能有效地与他人合作和交往,同时培养了其工作责任心,为以后走上工作岗位打下了初步的基础。

在C语言课程设计教学过程中,充分认识到要让作为初学者的学生,在短时间内掌握并熟练使用C语言独立完成项目,较难做到。作为教师,一定要认真备课,合理安排教学内容,提供精简的练习案例。同时在教学过程中以引导为主,激发学生的潜能,让学生自主学习。实践证明,课程设计结课后,绝大多数同学都对C语言编程产生了浓厚的兴趣。

c语言课程设计论文:基于成果为本的《C语言综合课程设计》教学改革探索与实践

摘要: 本文提出了成果为本的教学改革实践,通过研究课程的教学目标,转换为学生的学习目标,根据学生的学习目标列出可量化可考核的学习成果形式,根据学习成果设计教学内容和教学活动,制定与学习成果相关的考核评价体系,根据考核结果改进后续教学,形成教学中的良性循环。

0 引言

《C语言综合课程设计》是计算机相关专业的一门专业基础课,实践性较强,是学生在学习完《C语言程序设计基础》课程后的一次综合项目训练。这门课程的教学目标是让学生掌握基于结构化的小型项目开发流程,其中包括功能分析、模块划分、算法设计、编码实现;掌握课程设计报告的撰写,用软件工程的思想来描述项目的开发过程。为了加深学生对C语言知识的综合运用,切实提高学生的程序编写能力,对《C语言综合课程设计》课程教学方法进行了改革。

1 教学中存在的问题

该课程教学效果的好坏直接影响后续专业课程的学习,提高教学效果,增强学生的学习兴趣,是我们这次教学改革的目标。在本校该课程的以往教学中,存在以下问题:①课程人数较多,涉及计算机科学与技术、信息管理与信息系统、软件工程、网络工程四个专业的500多名学生,学生程序设计基础差别较大,有针对性的教学比较困难;② 有些学生对课程重视程度不够,不明确课程学习目标;③周课时为2,课程内容较多,深入讲解困难;④采用案例驱动法教学,课内主要进行案例分析和问题讨论,大量的编码任务要求学生在课外完成,这对学生课外学习的主动性要求较高,同时老师的课外辅导压力也很大;⑤考核方式采用大作业方式,不能很好地反映学生理论和实践两方面的学习效果。

2 基于成果为本的教学改革探讨

成果为本的教育是“以人人都能学会为前提,以学生为中心、成果为导向而设计的”教育模式,强调能力培养和能力训练。该教学理念是20世纪90年代开始兴起的一种教育模式,该教育理念最早在美国、英国、澳大利亚、新西兰等地实施并取得了较好的反馈。近年来香港教育资助委员会在香港的高等院校中逐步开展成果为本的教学改革,其中香港理工大学早在2004年初已开始将成果为本的教学理念纳入该校的课程教学中,在教学及评估方面取得了显著的成绩。在这种教育理念下,教师不仅要能运用现有的教育水平和科研要求实施教学,而且要培养学生应对未来、适应未来的能力。

本次根据实际教学中存在的问题,将成果为本的教育理念应用到《C语言综合课程设计》的教学中,提高教学效果。教学改革的思路为:根据该课程的教学大纲,明确课程教学目标,并转换为学生的学习目标,根据学生的学习目标列出可量化可考核的学习成果形式,根据学习成果设计教学内容和教学活动,制定与学习成果相关的考核评价体系,经考核明确课程教学与课程目标之间的差距,为后续教学提供参考,使课程目标与教学实施过程形成了良性的闭环控制系统。

3 课程教学实施

在教学目标上,以适应应用型本科教材改革的需要为目标,充分体现专业特色,有所创新和突破。走访IT公司和企业了解他们对人才的需求规格,明确教学目标中的知识目标、素质目标和能力目标。修订教学大纲,并转换为学生的学习目标,建立ASK模型(Attitude素质;Skill能力;Knowledge知识)。

课程学习目标是指学生通过该课程的学习后,能够做什么,具有什么样的能力和技能,教师在制定学习成果目标时应当考虑该课程需要传授哪些知识给学生,学生应达到什么样的理解程度以及如何体现学生是否理解这些知识。George Brown学院提出的观点认为课程学习目标的制定需要保障成果是可衡量评估的,便于在教学过程中检查成果的完成情况,成果应当与学生的实际能力有关,并具有一定的社会意义,成果目标的数量以4~5个为宜,成果过多会导致学生的专注度降低,影响学习效果。制定与学习目标相匹配的成果形式和教学方法,形成《C语言综合课程设计》课程“基于成果为本的教学设计”方案。(表1)

教学实施中,根据课程学习目标,设计三个教学项目,分别为“手机通讯录管理系统”,考查结构体、指针、文件的操作,“家庭财务管理系统”,考查链表、指针、文件的操作,“时钟的设计”,考查图像界面设计。由3位学生组成开发小组针对不同项目,轮值项目负责人,明确分工、模拟项目开发流程,依据开发环节进行任务分解,并在各个开发环节撰写开发文档,最终形成课程设计报告。课堂以学生研讨为主,教师讲解为辅;课下以学生独立编码为主,教师引导为辅。项目完成后,学生演示项目进行答辩,展示项目

成果。

4 总结

基于成果为本的教学模式可以帮助学生清晰明确地定义课程的学习目标和学完课程后需要掌握的知识和能力。在《C语言综合课程设计》教学改革中,明确了学生学习目标和学习成果形式,将学习目标、学习成果和考核形成进行统一。教学中采用项目教学法等多种教学方法,完成配套教案、讲稿、课程多媒体教学文件(PPT)、网络课程等教学资源建设,提高学生学习兴趣和增强学生的就业能力。

c语言课程设计论文:项目驱动的分组教学法在C语言课程设计中的实践

摘 要: 针对C语言实践教学中存在的问题,提出在C语言课程设计的教学中采用项目驱动的分组教学模式。融合软件工程思想,从项目设计、分组划分、模块化思想应用、编程思想训练、测试、考核方式等多个方面改革实践教学环节,因材施教,使得学生在解决实际问题的过程中,通过分工协作,提高自主学习能力,培养起团队合作精神,从而提高教学效果和教育质量。

关键词: C语言课程设计; 项目驱动; 分组教学; 模块化思想; 协作

0 引言

当今社会,随着信息技术的高速发展,各种程序设计语言蓬勃发展,如C、C++、JAVA、C#等。在这些语言中,C语言是各高等院校的计算机及相关专业的一门核心基础课程,它的学习效果会极大程度影响学生后续相关课程,如数据结构、操作系统、算法分析以及其他高级语言的学习。

作为一种实践性很强的程序设计语言,C语言课程的教学一般采用理论教学结合上机实践的模式,理论教学以讲授语法和基本算法为主,上机实践则主要练习简单程序的编写,通常以验证性实验为主,以掌握、巩固基础的语法为目的。从教学效果来看,学生虽然掌握了不少语法知识,但在面对实际问题时,往往不能灵活应用。为了进一步拓展学生的实践编程能力,我们学院继两个学期的C语言教学后开设了“C语言课程设计”课程,该课程以设计性和综合性实验为主,重点培养和锻炼学生独立分析问题,解决实际问题能力。根据这一教学目标,我们结合日常教学,针对实践教学中存在的不足,开展项目驱动的分组教学方法,使学生形成自主和协作型的学习模式。

1 教学现状

C语言是一种面向过程的结构化程序设计语言,具有数据类型较多、表达式丰富、语法结构复杂、语法规则繁多等特点,其授课对象往往又是及时次接触程序设计语言的低年级学生,这些都给学生学习和教师教学带来了难度。通过对学生进行教学效果调查,发现在“理论+实验”的教学模式中,由于课时限制等各种因素,实际教学常存在着如下问题。

⑴ 实验训练以知识点训练为主,与实际应用存在脱节。

在理论课后的上机练习,通常是针对特定语法设计,形式上采用练习书上的例子、验证某个语法或者实现一些简单的相关算法,验证性实验占了多数。这种训练模式虽然能够加深学生对各种语法细节的认识,但同时导致的问题是,学生容易孤立地去看待各章节的语法,割裂了各知识之间的联系,在编程时以模仿改写书上的程序为主,欠缺工程型知识,处于被动灌输的学习状态,常常会觉得语法知识点繁琐、内容枯燥,很难调动积极性,当面对实际工程问题时,程序规模一大,就束手无策,无法有机地综合应用所学知识去解决问题。

⑵ 没有形成系统化的分析过程。

由于教学和教材均侧重于对语法进行讲授和剖析,未强调分析及测试的重要性,也没有将软件工程的思想融合在实践教学中,因此,长久以来,学生养成一接触题目就马上开始编写代码的习惯,并且,运行时往往仅按照预先设定的正确的输入数据,去验证自己的所编的程序是否正确。

⑶ 忽略算法逻辑思维能力的培养。

从学习效果来看,学生常存在着两种误区,一种是将参与和获得计算机等级考试证书作为学习目的,这就导致他们习惯于程序填空题形式的编程方式,独立编程能力欠缺;一种是对C语言中的指针、递归问题存在畏难情绪,又认为就业时可以选择其他语言工具如Java来避免这些难点,没有认识到指针和递归的真正价值在于学习它们过程中得到的思维深度[1],忽略了推理能力、抽象思考能力方面的培养。

⑷ 实践操作能力不强。

学生的实验操作能力不强主要表现在对程序运行中一些常见编译问题无法很快做出反应,不会依据提示信息去判断发生错误的原因,对一些运行问题更是束手无策,通常一有问题产生,就转向寻找配套的实验指导书中所提供的正确答案,或者依赖教师指出问题所在,帮忙改正错误。

2 项目驱动的分组教学方法的具体实施

建构主义学习理论认为,个体的认知发展与学习过程密切相关,知识获取是以学习者为中心,利用“情境”、“协作”、“会话”等学习要素,通过意义建构的方式而获得。针对C语言课程设计这一门实践性非常强的课程,我们采用项目驱动的分组教学方法,在建构主义学习理论基础上进行教学设计,以学生为中心,融合软件工程思想,以培养学生的程序设计能力、创新能力、逻辑思维能力和协作精神为主线,通过项目任务引导他们主动学习,去深入理解软件设计思想,并加深对重要知识点的理解。为了将课内实践和课外自学有机结合起来,我们将15个学时的上机实践分为5次,集中安排在5天内,每次上机后留充足时间,要求学生去查阅资料,提升获取信息、解读信息的能力。整个教学过程中,需要在多个教学环节注意改革和创新。

2.1 项目设计

项目的提出是能否调动学生学习积极性的关键。目前随着信息化建设的深入,软件在各个行业都获得了广泛应用,其实际应用领域非常广泛。课程设计应该提供一个良好的学习“情境”,要结合教学目标,来模拟演练实际软件开发过程。项目的设计需要遵循以下几点:①选择学生比较熟悉的领域,贴近学生生活和学习方面的应用,避免选择需要较强专业背景、业务逻辑复杂的应用,例如可以选择学生选课、书籍管理、宿舍管理等,而尽量不要去选择企业人事管理之类的应用。这样可以方便学生理解或完整需求,激发他们用程序去解决现实生活问题的兴趣。②功能上要有层次性,可划分为一般性要求和可拓展性要求,一般性要求指出必须实现的功能,可拓展性要求则指出可以扩展的功能,引导学生去探索和想象,可以方便开展梯队型教学。③从项目的编码实现考虑,要能涵盖C语言中的结构体或联合体等复杂数据类型,体现函数和指针这条主线,以促进学生去综合运用和深入理解这些重要的知识点。

2.2 分组划分

一个软件的开发仅依靠个人力量往往是无法实现的。软件生命周期的各个阶段需要软件小组开发人员协作完成[2],因此,在课程设计教学中,我们采用分组教学模式来培养学生的团队合作意识和团队精神,来充分体现合作与竞争、分层教学与因材施教[3],并且还可以通过帮带方式和组内讨论消化掉一部分问题。分组是否合理、有效,直接影响协作模式能否取得良好的教学效果。在C语言课程设计实践中,我们按照任务量安排人数,学生分为以3-5人一组,按照组内搭配合理,组件平衡原则分配,在分组时充分考虑到学生的个体能力差异,使学生能在交流合作过程中取长补短。分组观点认为组内成员之间的合作关系可以有“头脑风暴”式、模拟课题式、同伴互助式、角色扮演式和组合式[4]。这里,我们可以结合软件开发的分工特点,将角色扮演应用到课程设计的分组中,由小组组长担当开发经理角色,其他人员针对其特长分别担当需求分析师、架构设计师、开发人员、测试人员等角色,根据开发阶段的不同,各成员可以扮演不同类型的角色。

2.3 培养学生用模块化思想对实际问题进行分析和设计

结构化方法强调以模块为中心,采用模块化、自顶向下、逐步求精设计过程。项目驱动的教学要培养学生用模块化思想思考复杂问题,即将程序划分成独立命名且可独立访问的模块,装配集成模块完成指定的功能。指导过程中,不仅需要纠正学生一接触题目马上编码的习惯,而且需要纠正学生在main方法中编写所有代码的习惯,这种方式会使得整个函数变得庞杂,代码冗余大,不利于分工协作,也给阅读和维护带来很大的困难。当学生在程序分解主函数和若干个其他函数时,发现常存在着随意分解、随心所欲定义函数的现象,针对这一情况,教师可以先以一个项目为例,如成绩管理系统,演示模块的分解过程,说明内聚性和耦合性要求[5]。在实际项目应用时,要求学生按功能分解,模块内的函数做到功能尽量单一,留出接口供其他模块调用,一个模块对应一个文件,便于分工协作。各小组在完成按模块划分的软件体系结构图后,才被允许进入下一个详细设计编码阶段。

2.4 强化编程思想的训练,加深对重要知识点的理解

算法是程序设计的灵魂,教学中需要成功训练好学生的头脑,使他们变得足够熟练、敏捷和灵活,需要训练学生在多个抽象层次上同时思考问题[1]。因此,实践过程中,要求学生熟练应用程序流程图或伪代码等工具设计算法,在组内展开讨论,比较不同算法实现方案的优劣,以及如何在完成程序的功能基础上,改善程序结构,优化算法,进一步提高运行效率和空间利用率。

对C语言而言,训练学生的编程思想,离不开指针、函数参数传递这些重要概念,是否真正理解这些概念也与能否成为一个程序员直接相关。在学生编码时,可帮助他们建立内存模型,通过跟踪每条语句的执行情况,感受不同数据类型在内存中所占用的空间,直观地观察内存布局变化、变量的生命周期、变量状态的变化等,去深入理解这些概念尤其是指针的本质。

程序设计的另一目的是要培养学生的操作能力,其中很重要的一点就是提高调试能力。调试的方便与否与程序书写风格密切相关,学生通常不注意代码的规范化,出现没有层次缩进,标记符随意命名、词不达意,也没有必要的注释等现象,这些给查错和阅读带来了很大的不便,不利于分组模式下的协作开发和维护,因此,实践教学时应该培养学生注意良好程序风格。此外,教学时还需纠正部分学生写代码一写到底的习惯,让学生认识到程序的编写是一个调试-修改-调试的反复迭代过程,要在多次错误或失败中获取调试经验。在学生出现错误时,要引导学生根据错误和警告信息,分析辨别是语法错误还是逻辑错误,并鼓励学生使用调试工具,应用断点跟踪和对分查找等调试方法,去主动地发现和解决问题。

测试在软件开发中占重要地位,软件测试的工作量往往占软件开发总工作量的40%以上。从学生实践情况调查来看,测试往往是初学C语言的学生特别容易忽略的,普遍出现一些诸如不重视人机交互界面设计,没有输入提示或出错提示信息,仅使用在预定范围内、满足预定格式要求的正确数据进行测试等问题。项目驱动的教学尤其应该注重培养学生的测试意识,指导学生学会设计简单的有效测试用例和无效测试用例,并开展组内测试和组间测试,以提高测试效率和质量。

2.5 考核方式改革

对不容易理解的常量、变量和语句有注释\&5%\&函数、变量取名较规范易懂\&5%\&函数功能是否满足功能内聚\&15%\&调试手段\&会单步运行到任何一个语句,查看变量值\&5%\&会断点调试\&5%\&总结报告\&用流程图或伪代码描述一个函数的算法\&10%\&有小组分工情况说明和各自的经验总结\&5%\&语言简练,条理清楚,图表规范,附程序清单\&10%\&]

分组形式的课程设计需采用弹性考核机制,个人考核、组内考核和教师考核有机结合方式。课程设计考核成绩=个人自我评价(15%)+组内评价(35%)+教师评价(50%)。自我评价是促进学生反思的一种有效手段,组内评价可以观察学生组内交流协调时有没有突出表现,而为避免少数学生抄袭实验报告,教师评价采用答辩形式,考核学生的实际操作能力、对数据结构设计和算法的理解程度,以及功能和算法上的应用亮点。考核的具体内容和评分标准可以多元化,比如对一个用链表实现图书信息管理系统的项目,可以按表1来指定具体考核标准。

3 结束语

本学院的C语言课程设计教学实践表明,通过项目驱动的分组教学法的实施,能充分调动学生的学习积极性,学生的编程逻辑性和实践能力都得到了明显提高。在模仿实际开发环境过程中,学生对项目开展的整个流程和各环节的具体要求程有了切实了解,积累了一定的项目开发经验,培养起了团队协作能力。为了能更好地提高学生实践能力,为他们将来从事软件开发工作奠定扎实基础,我们还需要在今后的实践教学中继续开拓和探索,以期达到更好的实践效果。

c语言课程设计论文:从C语言课程设计看如何培养学生的软件开发能力

[摘要]本文通过对C语言课程设计中的教学方法、考核手段的介绍,探讨了在实践中逐步提高学生软件开发能力的方法。

[关键词]课程设计 教学方法 考核手段 能力培养

一、引言

近年来,各高校越来越重视对学生实践能力的培养,各类课程设计在教学中所占的比重明显增加。对于计算机系的学生,尤其是以培养应用型人才为目标的学生,开设各类课程设计课就显得尤为重要。

本文以C语言课程设计为例,介绍了在实际教学中所采用的教学计划、教学方法以及考核手段,通过对各个教学环节的分析和总结,探讨了如何在实践中培养学生的软件开发能力的方法。

二、C语言课程设计教学计划

C语言技术是计算机最重要的应用领域之一,也是发展较快的领域之一。其应用早已渗透到各个行业,C语言系统的开发、管理与维护是计算机专业人员必须要掌握的基本技能。因此在完成了理论教学之后,后续的C语言课程设计的安排是很关键的。

我们根据学生的实际情况,制定了相应的教学计划。要求选修C语言课程设计的同学必须先修C语言原理,具有程序设计的基础。课程的主要内容包括C语言设计概述、需求分析、概念结构设计、逻辑结构设计、C语言的物理设计、C语言的实施和C语言系统的管理维护。本课程以实践为主,教学目标是使学生能独立设计C语言应用系统,掌握C语言设计的过程和方法。根据本课程的特点,充分重视上机实践的环节,课程在机房上,有利于学生学习。

本课程安排在一个学期内,教学周数为18周,每周6学时。每周具体内容安排如表1。

三、各阶段教学方法

由于各阶段的任务不同,要求也不相同,因此分阶段采用不同的教学方法,以一个学生熟悉的、容易理解的C语言项目开发过程为主线,贯穿整个教学过程,将相对枯燥的理论知识与实践联系起来。

题目选取阶段是C语言课程设计的初始阶段,也是决定能否达到教学目标的关键性阶段。如果题目选取得太大、太难,或者是学生不熟悉、很难接触到的领域,做起来太困难,会影响学生的积极性,势必会影响到后期的学习效果。而题目太简单,又达不到教学标准。因此在本阶段,采取教师提供参考题目,学生自主选择的方法。教师根据开题报告整理出小组题目以及成员,并简要分析选题的难易程度。在第二周的开题讨论上让每小组派代表进行发言,大家分析讨论题目的可行性,对于选题不合理的,重新修改。这阶段可以充分调动学生的积极性,活跃大家的思维,实际教学效果良好,很多学生的选题都具有现实应用意义。

题目确定完之后,就要进行需求分析。很多学生认识不到这部分的重要性,选定题目后就想开始代码的编写工作,往往做了一半就进行不下去。因此教师在课堂上要通过实例充分讲解需求的分析重要性,讲解具体的需求分析方法,使学生理解需求分析是整个设计过程的基础,同时掌握基本的需求分析技能。在需求分析阶段,要尽可能收集课题的完备需求,可以利用不同小组互相模拟实际用户的形式,增加学生的交流能力和开发兴趣。在需求分析阶段,要完成系统的数据流图和数据字典。高质量的完成需求分析工作可以巩固学生在理论课上学到的数据流图、数据字典等基础理论知识,并提高学生的归纳总结能力。

确定用户需求后,进入系统设计阶段。系统设计阶段要完成应用系统的设计和C语言设计。应用系统的设计要完成课题应用软件的架构设计和具体功能模块的划分。C语言设计要结合应用系统的设计,逐步完成C语言的概念结构设计、逻辑结构设计和物理设计。概念结构设计阶段是整个C语言设计的关键,该阶段通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型;逻辑结构设计阶段要将概念结构转换为某个DBMS所支持的数据模型,并对其进行优化;物理设计阶段要为逻辑数据模型选取一个最适合应用环境的物理结构。C语言设计不但可以加深学生对ER图等理论知识的理解,还有助于提高学生的软件系统设计能力。

系统实现阶段,教师对采用的教学案例代码进行演示,针对不同的程序设计语言对C语言的连接部分进行讲解,并给出相应的示例代码。此阶段主要是学生动手编写代码,完成系统功能。要指导学生编写高质量的代码,包括变量的命名方法、代码的书写规则、代码的注释规则等。这阶段教师可采用启发式教学,对于学生在设计中遇到的问题,要引导他们学会查找资料,自己思考解决。

系统测试阶段,包括单元测试和集成测试。要指导学生进行测试用例的编写,掌握正确的测试方法。对于C语言系统,还要进行C语言的性能测试和容量测试。通过系统测试,使学生掌握正确的测试方法,有效提高软件的质量。

四、考核方式

教师在每个阶段都会进行检查,对完成情况进行记录。开题阶段,要求学生以小组为单位,完成开题报告,并确定选题是否合理。在需求分析阶段,要求每组上交需求分析。在接下来的系统设计、实现及测试阶段,要求学生详细记录设计思想、设计方法、实现过程及测试结果,整理出完整的课程设计报告书。由教师综合考虑以下几方面的因素,给出总评成绩,包括文档的完成情况、开发环境的选取、系统功能实现情况、用户界面的设计以及现场演示答辩的效果。通过以上方式,较综合、客观地评价了学生的文字及语言的表达能力以及系统设计、程序开发的能力。

五、结束语

教学实践表明,这种形式的C语言课程设计,可以使学生有效地巩固对基础理论知识的掌握,可以使学生系统地了解软件开发流程,提高学生的软件工程化开发能力,增强学生的就业竞争力,并且可以建立学生的团队意识,提高学生的交流和协作能力。