首页 > 文章中心 > c语言课程

c语言课程

前言:想要写出一篇令人眼前一亮的文章吗?我们特意为您整理了5篇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项目实施进程项目教学法是一种生动、灵活、多样化的教学方法。在项目实施过程中,既不能生搬硬套地利用一个时间标准,又不能影响项目实施的整体进程,因此对时间的灵活处理是非常关键的,也是值得商榷的。

c语言课程范文第2篇

[关键词]C程序语言 分层教学 任务驱动

[中图分类号] G423.07 [文献标识码] A [文章编号] 2095-3437(2013)22-0081-02

一、课程教学现状分析

C语言程序设计是高校计算机专业的核心基础课程,很多学校都开了C语言公选课,将其作为学生学习程序设计的一个入门。学习C语言需要掌握的抽象概念和语法规则较多,同时又需要通过实践培养编程实用技巧。由于计算机专业必修课程(例如C++,数据结构等)都需要具备一定的C语言基础,所以对C语言的掌握程度直接影响着后续课程的教学效果。[1,2]长期以来C语言程序设计课程的教学改革一直都在许多高校中探索和实践,提出了项目教学法、[3]案例教学法、[4]自主学习模式[5]的教学理念。但在实际的C语言课程教学中,诸多因素导致教学效果不理想,具体有以下几方面:

首先,学生程序设计基础参差不齐。一部分学生以前没有接触过程序,有些学生对学习程序不感兴趣,有些学生沿用看书加背诵学习方法,他们感到枯燥厌烦,跟不上教学进度;还有一部分学生上课时积极主动,对编程产生较大兴趣,不但能够完全掌握老师讲的课程内容,而且能够积极查阅课外程序资料,教师讲授的课堂内容不能够满足这部分学生。传统的教学方式造成教师在教学无法兼顾这两类学生。学期结束后,第一类学生普遍感到程序设计课程晦涩难懂,不会应用,无从下手,因此失去了学习热情。

其次,传统教学模式影响教学效果。在传统的教学中,教师往往以课程的理论知识点为主线组织教学,依照从讲解概念起,接着讲解语法语句,最后举例加以细化。部分教师缺乏对该门课程的整体性把握,在教学上过多注重语法结构的知识,没有把学生放在主体的位置上,师生间的互动很少。甚至有些教材内容的结构安排缺乏合理性,语法部分编写过于繁琐,学生接受的是枯燥无味的理论规则,导致学习没有积极性,难以调动学生学习的主动性。教学观念、教学手段和方法以及考核形式等都比较陈旧,不能适应新形势下的教学需求,学生学习效率非常低,无法将所学知识运用到实际中。

最后,实践环节薄弱。上机实践是学习编程语言的重要组成部分。实际授课中,重视课堂教学而轻视上机实践,理论课上既要讲基本的语法知识又要讲编程方法,占用了过多的课堂时间。实验课上进行基本的验证性实验,学生机械式的运行程序,无法真正学会如何编写和调试程序,使得理论教学和实践教学脱节。通常情况下,C语言程序设计目前的考核方式主要以笔试为主,主要考查语法和基本的逻辑推导能力,无法进行学生动手实践能力的考查,从而造成了大部分学生即使理论知识掌握较好,却不会上机编程。

二、C课程教学方法改革探索

(一)采用分层教学模式

首先,对象分层。新生入学后,系部首先通过问卷的形式对新生的计算机基础技能、学习计算机的兴趣以及课内外学习方式等情况进行了调查,并进行了计算机水平摸底测试。根据学生的实际测试水平,打破以班为集体的传统教学模式,将他们分为不同的层次分别授课。将程序设计兴趣较强、数学逻辑基础较好、有一定编程基础并且测试成绩较好的学生编入A层;将测试成绩较差并且没有编程基础的学生编入C层;其余多数学生编入B层。教师依据各层学生进行因材施教,即针对学习者不同的学习能力、态度等个体差异施行不同的教学模式,实际上是使三层学生各有侧重、共同提高的一种教学方法。

其次,教学分层。分层授课是分层教学成功实施的关键,学生是教学活动中学习的主体,教师需要对所教层次学生的编程水平有准确的认识,才能真正激发其学习激情,培养其学习能力,促进课堂教学质量的提高。A层学生一般理解力较强,学习具有主动性,教师可以引导他们除了掌握教材知识点外,推荐课外参考书,尽快参与软件开发项目或兴趣小组。B层的学生通常情况下能够掌握基本的语法规则及编程方法,但是对编程缺乏总体思路,就需要教师及时将学生学过的知识加以复结,在掌握教学大纲要求的知识点外可通过综合实训练习进行编程水平提升。对C层就要通过精心设计教学内容、耐心的作业辅导、适时的课后交流激发他们的学习兴趣和信心。分层教学从各层学生的实际出发,“因人制宜”,关注各层次学生在学习方法上的差异,给予学生不同级别的指导,刺激学生向高层次目标努力,从而大面积地提高教学质量。此外,在实施过程中也要注意保护学生的自尊心,以淡化各层间的人为界线,避免分层带来的负效应。

最后,分层评价。分层评价是针对各类学生的学习水平,建立一套完善科学的评价体系激发学生学习兴趣、优化学习方法、树立学生的自信心,促使各成其才。对A、B、C 三层的学生不同的目标要求体现在评价体系中。对平时成绩的考核对应不同层次,A层同学分组考核,分工协作完成预设项目,根据小组中的表现进行组员互评和老师评价相结合的方式。B层和C层的同学则通过上机实操进行编程水平的测试。期终试卷可在同一份试卷上进行分层,分别对应于不同层次。试卷分成基础和提高两部分。基础部分主要考核学生是否达到基本教学大纲要求,这部分是三个层次学生共同的必答卷,对于三个层次的学生同分但不同值,成绩作为课程的考核分。例如编程题标注10分,则如果A层学生做对考核分加10,B层和C层学生做对加15。第二部分为提高卷,也是A层学生的必答卷,B、C层学生的选答卷,成绩作为课程的考核分。分层考核的目的是使各层次的学生经过努力都能获得较高的分数,获得成功的体验,激发学生的求知欲。

(二)基于实践导向的任务驱动教学

以实践为导向在教学活动中要求,以专业能力要求为依据,将“教、学、练”一体化的教学模式融入教学课程设计中。根据行业需要的知识、技能确定课程内容的选取与安排,课程设计是采用真实项目贯穿教学全程,项目按照内容分成若干模块,实现将化整为零进行学习。

任务驱动下分组学习讨论是一种非常有效的方式。让学生发挥主动性自由分组,依据编程能力水平给每组指派一名组长,上课时以组为单位,分析、讨论项目任务,具体包括需要收集资料、项目进度以及具体的工作任务。小组长主要负责小组内任务分配、协调组内成员等工作,老师轮流在每个小组旁听学生的讨论并接受学生的咨询。

教师所指定的任务主要包括两类内容:一类是课本课后习题,并对完成任务所必需的知识点进行必要的说明;另一类是具有实用性的项目任务实例,让学生更直观地理解所学知识应该如何与实践相联系。第二类任务需要教师进行设计,尽可能具有综合性、可分割性,适合小组讨论解决及协作完成。

制定合理的考核标准来综合衡量学生的学习状况是激发学生进行协作学习的动力。当学生完成任务后,先在小组成员之间进行任务完成情况评论。最后由老师对每组学生的任务完成情况进行总结讲评,对其中的不足进行点评,对比较好的做法给予鼓励,并据此对每个学生计算平时成绩,将小组整体得分与组内个人得分进行综合。课程采用综合测试考评方式,突破单一的闭卷考试方式,将平时作业、课堂讨论成绩、与期末考试相结合。

三、结束语

C语言是一门实践性很强、热门的高级编程语言。根据目前的教学现状,分析和总结教与学的不足,通过分层模式教学改革和以实践为导向的任务驱动教学探索,不断地提高课程的教学效率,使课程更具科学性,把学生的主动性充分地调动起来,让学生在学习中尝到乐趣。

[ 参 考 文 献 ]

[1] 杨理云.“C 语言程序设计”教学方法探索[J].中国成人教育,2007,(5).

[2] 丁群,文明瑶.项目教学法在C语言教学中的应用[J].电脑知识与技术: 学术交流,2012,8(3).

[3] 陈洪超.项目教学法在“C语言程序设计”课程中的应用[J].重庆电力高等专科学校学报,2012,17(3).

c语言课程范文第3篇

在这个星期里,我们专业的学生在专业老师的带领下进行了c语言程序实践学习。在这之前,我们已经对c语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,的在运用起来的时候还是感到很棘手,毕竟,万事开头难嘛。

由于时间的关系,我们的这次实践课程老师并没有给我们详细的介绍,只是给我们简单的介绍了几个比较重要的实际操作。包括了程序模块处理.简单界面程序.高级界面程序.程序的添加修改.用程序做一元线性回归处理以及用c语言程序来画粒度分布图等这几样比较重要的时间操作。

上机实验是学习程序设计语言必不可少的实践环节,特别是c语言灵活、简洁,更需要通过编程的实践来真正掌握它。对于程序设计语言的学习目的,可以概括为学习语法规定、掌握程序设计方法、提高程序开发能力,这些都必须通过充分的实际上机操作才能完成。

学习c程序设计语言除了课堂讲授以外,必须保证有不少于课堂讲授学时的上机时间。因为学时所限,课程不能安排过多的统一上机实验,所以希望学生有效地利用课程上机实验的机会,尽快掌握用c语言开发程序的能力,为今后的继续学习打下一个良好的基础。为此,我们结合课堂讲授的内容和进度,安排了12次上机实验。课程上机实验的目的,不仅仅是验证教材和讲课的内容、检查自己所编的程序是否正确,课程安排的上机实验的目的可以概括为如下几个方面:

1.加深对课堂讲授内容的理解

课堂上要讲授许多关于c语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。然而要使用c语言这个工具解决实际问题,又必须掌握它。通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握c语言的语法规定。对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,这是由于大部分学生是初次接触程序设计,缺乏程序设计的实践所致。

学习c语言不能停留在学习它的语法规则,而是利用学到的知识编写c语言程序,解决实际问题。即把c语言作为工具,描述解决实际问题的步骤,由计算机帮助我们解题。只有通过上机才能检验自己是否掌握c语言、自己编写的程序是否能够正确地解题。

通过上机实验来验证自己编制的程序是否正确,恐怕是大多数同学在完成老师作业时的心态。但是在程序设计领域里这是一定要克服的传统的、错误的想法。因为在这种思想支配下,可能你会想办法去"掩盖"程序中的错误,而不是尽可能多地发现程序中存在的问题。自己编好程序上机调试运行时,可能有很多你想不到的情况发生,通过解决这些问题,可以逐步提高自己对c语言的理解和程序开发能力。

2.熟悉程序开发环境、学习计算机系统的操作方法

一个c语言程序从编辑、编译、连接到运行,都要在一定的外部操作环境下才能进行。所谓"环境"就是所用的计算机系统硬件、软件条件,只有学会使用这些环境,才能进行程序开发工作。通过上机实验,熟练地掌握c语言开发环境,为以后真正编写计算机程序解决实际问题打下基础。同时,在今后遇到其它开发环境时就会触类旁通,很快掌握新系统的使用。

3.学习上机调试程序

c语言课程范文第4篇

【关键词】授课设计;讲课比赛;C语言

0 引言

随着我国高等教育的发展,高校中的青年教师逐渐成为了讲台的中坚力量,站稳讲台是他们的首要任务。讲课比赛是学校对青年教师进行激励和教师自我激励[1]的常规而有效的方法,对促进本科教学设计、知识组织和课堂管理的交流起到了积极的作用[2-3]。西安科技大学两年一度的青年教师讲课比赛也成为全校非常重要的教学交流活动。C语言作为集汇编语言和高级语言的优点于一身的程序设计语言,既可用来开发底层的嵌入式、系统开发,也可用来开发上层的应用程序开发,是高等院校讲授程序设计课程的首选语言。作为理工科专业的公共基础课,其讲授效果会持续影响学生后续课程的学习和编程应用。C语言是一门结构化的程序设计语言,由顺序、选择分支、循环三种基本结构组成,任意复杂的程序都可分解为三种基本结构。其中,循环结构是最复杂的一种结构,所以该部分内容的授课设计至关重要。因此,这里选择C语言课程中的循环结构作为讲课比赛的内容,精心设计了紧凑而饱满的授课内容。

1 授课方法分析

目前,对C语言课程教学的研究越来越多,文献[4]针对学生的计算机基础知识不同和传统教学模式的不足,进行了分层教学模式的探讨,首先对学生水平进行摸底分层,然后有针对性的进行分层教学;文献[5,6]认为应加强课程设置、教材体系和实践教学建设,建立突出实践能力、创新能力、信息能力的考核机制。对于C语言循环结构部分的教学设计,也出现了很多有意义的研究,文献[7]针对计算机专业第一门程序语言的教学要求,采用循序渐进的方法,逐步启发学生,通过分解程序执行过程,逐步展示运行结果,使学生更清晰的认识循环结构;文献[8]针对C语言公共课授课对象,通过分析学生学习该部分内容的心理规律,探讨了一种适合公共课的“双主体教学模式”,较好地解决了程序设计本身抽象、枯燥、难懂等问题。

通过以上分析,本门课程的授课对象是非计算机专业的学生,作为他们学习的第一门计算机语言,要采用公共课的授课方法。循环结构部分的内容语法讲解太过抽象与枯燥,容易使学生产生抵触与畏惧的心里。因此,在授课过程中会采用理论与时间相结合的引导、启发式教学方法,以原理为主线、案例为引导,重点突出、难点分散。结合传统板书和多媒体教学的双重优势,语法讲解板书图文并茂,并结合程序案例进行多媒体演示,以加深学生对语法的理解和应用,提高他们的学习兴趣。针对讲课比赛时间有限的特点,讲解内容力求难度适中且信息量饱满。

2 循环结构授课设计

2.1 板书设计

板书不求面面俱到,要重点突出。具体板书设计如图1所示,板书文字只有授课的框架标题和关键字,中间四分之三的版面是三种循环结构的介绍,语法格式结合流程图和案例程序,这样可以对教学重点进行对比展示,达到直观的教学效果。

2.2 授课进程

授课进程主要分为四个递进步骤:

(1)首先,复习C语言三种基本程序结构中的顺序和选择分支结构的特点,由连续自然数求和、迭代求根等问题,引出反复执行同一段程序特点的循环结构;

(2)然后,结合程序流程图,对while/do-while两种当型循环结构语法和执行流程进行板书讲解,并结合同样一个程序案例对比二者应用语法的不同,然后进行上机VC程序演示;

(3)通过分析两种当型结构中循环控制变量i的作用,结合程序流程图,对for型循环结构语法和执行流程进行板书讲解,并结合同样一个程序案例对比应用,然后进行上机VC程序演示;

(4)最后,对三种循环结构进行总结比较,分析各自适用的情形,布置课后上机练习作业。

4 结语

本文以讲课比赛为目的,结合非计算机专业学生(下转第56页)(上接第41页)的特点,对C语言课程中循环结构内容的教学进行具体设计,包括授课方法分析、板书和授课进程设计,对该课程教学具有一定的指导意义。通过使用该授课设计参加西安科技大学青年教师讲课比赛,得到了评委教师的认可,取得了优异的成绩。

【参考文献】

[1]严芳,余仰涛.高校青年教师讲课比赛中的主要问题及对策研究[J].学校党建与思想教育,2013,444:76-79.

[2]熊志勇.讲课比赛对提升青年教师教学能力的作用[J].重庆科技学院学报:社会科学版,2011,3:170-172.

[3]范建玲.讲课比赛评价指标体系的研制与实施[J].广西教育,2014,1:21-28.

[4]景泉.C语言程序设计课程改革分析与探索[J].价值工程,2014,15:282-283.

[5]杨健,徐东,刘海见,祁薇.C语言课程教学改革[J].科教文汇,2014,6(上):79-83.

[6]刘淑英,张顺利.C语言课程的教学改革与实践[J].吉林教育,2014,11:3-3.

[7]孙华,于炯,田生伟,钱育蓉.《C语言程序设计》中循环结构的教学方法探讨[J]. 科技教育创新,2012,8:238-238.

[8]徐东,祁薇,刘海见.《C语言循环结构》课程教学设计研究[J].软件导刊,2014, 13(6):154-156.

c语言课程范文第5篇

随着信息技术日新月异的发展,社会需求越来越多的CS专业毕业的学生。Internet已经渗透到人们日常的工作、学习和生活当中,一年级CS专业的学生与上世纪90年代相比也发生了很大的变化。在我们学校,2001年到2003年计算机科学与技术专业的学生入学平均成绩在全校几十个专业位居第一;然而,10年之后的2011年,已经降至第28名。PC机和Internet的普及和十年前相比不可同日而语。这些新的变化迫使任课老师必须采用新的方法以应对入门程序语言课程教学的新需求变化。

本文其它部分组织如下:在第二节分析了教学过程中存在的问题之后,将在第三节提出一些方法来解决这些新出现的问题,最后第四节进行小结。

一问题分析

在过去几年的教学中,我们发现,把这门课程安排在一个学期内完成学习,很多学生感觉吃力,在后续课程学习过程中会表现出遇到实际问题编程能力较弱。甚至有少数一些学生不知该如何下手写一个新的程序。本节我们从教和学两个方面挖掘分析其中存在的问题。

1对计算机科学缺乏兴趣

C语言安排在一年级,很多学生在入学前对这个专业认识很肤浅。可以说入学前,几乎所有学生对今后的计算机职业生涯规划都一无所知。换言之,只有相当少数的学生对CS专业有他们自己的爱好兴趣,曾经学习过编程,他们对专业或程序的兴趣可使得以后的学习是自我驱动式的。然而,总有一些学生在C语言课程的初始阶段是毫无兴趣可言。据我们经验来看,很大程度上,课程结束时考试成绩差进一步导致他们对后续专业课程学习缺乏信心。兴趣才是最好的老师。任课老师应该从课程一开始就激发学生的兴趣,才能在后续教学过程中使学生的潜能得以发挥。

2缺乏编程的调试能力

编程新手经常苦于如何像挤牙膏似的写程序开始的代码段,而且,在好不容易写出程序后,不知道如何找出隐藏在其中的错误和漏洞,不知道如何分析程序找出错误。特别是对于成绩较差的学生,即使写很简单的程序,他们也看不出程序到底是错在哪里或者为什么得出不正确的结果,不知从哪里开始排查和定位错误。这样的情况在我们每一届每个班的教学中都会遇到。实际上,即使是熟练的程序员,调试程序的能力都是必不可少的,特别是在开发复杂软件程序的时候。

3优秀生和差生之间的差距问题

在我们计算机学院,招生人数从2001年的359人翻一番到2011年的790人。学生来源于从大城市到农村等不同地区。在第一次课时,我们都会做过简单调查,发现只有少数一些学生在高中学习过程序设计,一般学习BASIC或PASCAL语言,有的学生曾经参加过国家奥林匹克信息学竞赛(NOI)等相关课外活动;大多数学生并没有学习过程序设计。在一年级第二学期,将会有优秀的学生能在ACM广东省赛区比赛中获得奖励。再看成绩较差的学生,在第一次上机课时,他们连键盘的布局都不知道,不知如何开机关机和基本的操作,因为以前从未使用过PC机。这样,优秀生和较差生的差距比十年前扩大了。如果我们教学过程较多顾及后者,前者将不能充分利用好课堂时间发挥他们的潜力。这就会任课老师带来新的挑战。

二改革教学方法

1在课堂教学中提高学生对计算机科学的兴趣

通过和本课程相关的故事,让学生了解计算机科学技术发展史的同时,激发他们对计算机技术的热爱和对科学执着追求及探索精神,逐渐培养兴趣。例如,在第一课时,在讲C语言历史时将介绍C语言之父丹尼斯・里奇(Dennis Ritchie)的故事,他虽然不是像比尔・盖茨那样为大众所知,但他和肯・汤普逊(Ken Thompson)对C语言和UNIX操作系统做出了杰出贡献。在C语言和这两位著名计算机科学家互相交织的历史故事当中,学生将体会到什么是科学精神,什么是对计算机科学的贡献和创新。当然,在课程的后续教学过程中仍然会花几分钟加入一些相关故事活跃课堂气氛。学生乐于在课堂中听到这些一般不为人知的故事,潜移默化地增加了兴趣。

另外一个途径是介绍和C语言关联密切的应用实例。虽然C语言被用于开发操作系统和嵌入式系统,但是,这些应用不易于新手所理解。所以,在讲到相关知识时,我们选择一些简短的应用程序演示其运行甚至浏览一下源代码,有些有趣的应用就作为实验课的任务,让学生完成编程。曾做过2个班级对同一个实验内容的比较,一个班级要求编程完成的是与实际应用需求相关的任务,另外一个班级要求完成的是等价的数学问题,实践表明:前者能激发学生解决问题的求知欲望,提高学习兴趣,并且更多的学生进行热烈的讨论和进一步思考,效果较好。

2运用可视化工具促进学生对程序的理解

可视化工具是促进学生直观理解程序运行过程一个重要的有效的方法。我们采用了吴伟民教授开发的名为Anyview的一套软件[2],从2009级的部分班级开始试用,2010级所有学生使用。从2010年开始正式建设题库,到目前为止已经达300题(共9章教学内容的习题)。它由web服务器端和客户端两部分组成。服务器端存储了实验任务的题目数据库和学生写的源程序文件,包括正确完成的程序以及未完成或有错误的源程序。客户端安装能够通过校园网或Internet连接服务器的 PC机上,学生用来编写程序。

使用Anyview与原来教学相比有较好效果。Anyview打破了课堂实验教学的时间限制,学生在宿舍或者其它地方能连接通过Internet的PC机上用它编程。Anyview有助于初学者理解、调试程序。可以为不同的教学层次的学生设立不同作业表,使学生编写程序的题目不同。例如,曾经根据重修班级学生的学习情况,专门设置1个题库,让学生重点练习薄弱环节。布置的上机题目分必做和选做,因材施教,使不同层次学生都能得到提高。

课堂教学用Anyview演示程序的运行。程序能在其中编辑、运行和调试。可以使程序一步一步的运行过程或设置断点,学生就能观察运行过程中所有变量值的变化情况。对一年级的新手来说,它操作很简单,结果直观可见,有助于学生理解for语句、while语句等控制流程语句的执行过程。在实验课上,我们鼓励学生使用多种IDE开发工具(Integrated Development Environment)配合Anyview一起学习。

从老师的角度来说,我们能够通过教师端程序详细地实时地了解每个学生编写程序的进度。有助于老师督促较差学生,可以通过教师端软件看到哪些学生完成情况差,实时掌握学生学习情况;反馈到课堂教学有的放矢。并且可以知道优秀学生学习水平如何,有哪些学生的自学能力较强,有的学生可以在开课2个月内完成整个课程的题目,在2009级之前通过作业或提问往往不能发现所有优秀生。随着题库建设完善,我们将进一步用Anyview进行实验课限时测验,让不同班级的任课老师自主设置每个班级的题库作业表。

3从一开始就强调学习调试

调试是用于发现或减少程序中错误缺陷的分析过程。在课程教学中使用了3种工具。下表对它们的优缺点做了比较小结。

新手容易掌握Anyview的使用,而且他们可能对操作Windows上的软件工具不熟悉,所以在课程开始的前几周,我们教学生使用Anyview。新手往往很难学会TC的环境配置,我们在教学实践中发现较差的学生在课程接近结束时都对配置感到迷惑。VC还是受到编程相对熟练的学生的欢迎,他们可以用VC写一些自己感兴趣的稍大的程序,甚至完成包括窗口图形界面程序的编写。

在第1次实验课上,我们就告诉学生如何用工具查看变量的值。在后面的教学中,要求学生掌握如下调试技术,告诉他们什么时候选择其中之一来进行调试[3]。经验表明,学生越早学习使用调试技术,将能更好地提高调试程序的能力。

(1)单步执行。每步执行一条语句,选择一些变量加入观察窗口。(2)跳越函数执行。这将在讲函数这一章时讲。学生可观察一些变量的值在执行完函数后的变化。(3)在指定语句处设置断点。(4)在程序中的某些语句后加入打印语句,以便在程序运行后观察某些变量在运行过程的中间结果。方法3和方法4将在讲完循环控制语句后学习。

4改为2个学期学习该课,改革课程考核方式

为了切实提高大多数学生的基本编程能力,充分发挥优秀生的潜力[4,5],我们进行了两项改革。在2009级之前,本课程在一年级的第1或第2学期开课,在一个学期内完成教学,理论课堂教学与实验课教学分别占56和16课时;学生普遍感觉时间很紧,没有足够的时间在机器上编写代码实践。而在2010级开始,我们改革教学安排,分成2个学期完成该课教学,第1学期理论与实验分别占32和24课时,第2学期分别占24和16课时。这样的调整安排使学生有更多的实验课时间花在编写代码实践上面,以用促学。

另外,从2011级开始我们在第2个学期根据学生在第1个学期的学习综合评价进一步把学生分成2个教学班组,大概25%较优秀的学生安排在A组班级,其余安排在B组班级。在第2学期A组学生要求完成1个较大的程序设计任务,或称为课程设计任务,包括编写代码和编写相应的文档。对B组学生重点强调基本编程方法的教学。当然在Anyview系统中我们布置给他们的编程任务也有所区别。实践表明,由于这种因材施教,A组学生的能力提高更快能够挑战难度更大的任务,而又使相对较差的B组学生获得了更多基本的编程训练并为以后学习建立了更强的自信心。

老师能用Anyview查询查看到每个学生写的每个程序并评分。当然给程序评分并不是一件容易完成的工作[6],需要有更好的算法。下图是2012年秋季的一个班级共46人的Anyview综合评定成绩排名与期末考试笔试成绩排名的差值,其中x轴表示学生序号1~46,y轴表示这2个排名的差值。数据为(Anyview排名,期末考试排名):(46,46),(13,6),(6,4),(23,22),(19,23),(10,27),(13,2),(11,28),(31,32),(29,40),(41,20),(4,7),(36,37),(33,39), (32,18), (1,9), (2,11), (45,31), (8,26), (23,33), (35,38), (9,1),(13,24), (5,12), (18,35), (42,25), (20,15), (28,43), (22,16), (43,36),(20,30),(23,10),(17,3),(12,34),(27,41),(34,19),(44,42),(7,14),(29,13),(3,5),(16,8),(38,17),(26,44),(39,45),(37,21),(40,29)。这说明,很多学生平时实际编程能力与笔试表现有出入,所以最后课程的成绩评定中期末考试占一定的比例,还必须考虑平时实际编程能力表现。

总之,C语言是一门在本科一年级开设的基础课程。我们进行的教学改革实践表明培养学生对本专业课程的兴趣是很重要的,本文分析了如何解决学生调试能力差的问题,介绍了用一个可视化工具作为调试器和新生有效学习助手的经验。如何对不同学生进行个性化教学是一个挑战性任务,我们改革了教学学时安排和进行了分组教学,使得优秀生和较差生都能得到尽可能大的进步。

参考文献

[1]吴伟民.试论软件基础课程程序设计环境的可视化[J].广东工业大学学报:社会科学版, 2007(B06): 156-157.

[2]Pengfei Yu, Lijun Yang, Programming Skills Training in Programming Language Courses[C].2010 International Conference on Educational and Information Technology, V3: 14-16.

[3]Andreas Zendler, Christian Spannagel, and Dieter Klaudt. Marrying Content and Process in Computer Science Education[J].IEEE Transactions on Education, 2011(8): 387-397.

[4]Raymond Lister and John Leaney, First Year Program ming: Let All the Flowers Bloom[C]. 2003 Proceedings of the fifth Australasian conference on computing education, Volume 20: 221-230.

相关期刊更多

忻州师范学院学报

省级期刊 审核时间1个月内

忻州师范学院

徐州师范大学学报

省级期刊 审核时间1个月内

江苏省教育厅

孔子学院

部级期刊 审核时间1个月内

中华人民共和国教育部