前言:想要写出一篇令人眼前一亮的文章吗?我们特意为您整理了5篇教育叙事案例范文,相信会为您的写作带来帮助,发现更多的写作思路和灵感。
案例一:孩子打架之后。
强强和明明是两个较调皮的小朋友,平时也常常在一起玩耍。有一次,因为争抢玩具,强强用手抓了明明的脸,明明的脸立刻出现一道道抓痕,让人看着非常心疼,老师马上带明明去医务室对伤口处理。放学后,老师向明明妈妈说了这件事,也找了强强妈妈谈了这件事。告诉她们这两个小朋友还是好朋友,强强也不是故意的,家长不要责备孩子。但毕竟明明受伤了,从教育的角度强强应去看望明明,让强强学习对自己的行为负责,关心同伴。强强的妈妈放学后即刻带着强强去看望明明。第二天,明明奶奶接明明回家时候,情绪很激动地指着强强大声说:“强强,你妈妈给你留指甲是让你抓人的吗?”老师马上上前劝阻,强强被吓坏了,哇哇大哭。强强妈妈来接儿子看着儿子哭得泣不成声也很心疼。这件事发生以后,尽管老师在中间做了大量调节工作,但两家长见面却像仇人一样,装作看不见。倒是强强和明明,早就忘记这件事,好像没有什么发生一样,还是继续一起玩,一起闹。
通过这件事,作为一名教师有必要总结经验,引领家长反思做到几点:首先,遇到这种事要理性处理,不必为孩子事伤身心。看到自己的孩子被小朋友咬伤、抓伤、打伤,作为家长肯定会非常心疼,这是人之常情,可以理解,但是此时,家长一定要保持理性。三四岁的孩子处于行动思维阶段,不会用语言来解决矛盾和与人沟通,当两个人之间发生矛盾或者过度兴奋的时候,他们最直接的反应是用行动解决或表达,而非语言。而且孩子做这些动作时只是一种本能的反应,没有处心积虑,没有要报复谁或者欺负谁的想法。他们可能前一分钟还在争斗,下一分钟又玩在一起。其次,家长要了解孩子的年龄特点,特别是受伤孩子一方的家长,不要把对方孩子的这些行为看成是有意的行为。如果是这样的事情发生在幼儿园,家长更是应该依靠老师来解决,尽量避免直接与对方家长理论,更不能向对方孩子施加压力,用训斥、恐吓等方式对待孩子。这样做不仅不利于解决问题,相反,还会把双方家长牵扯进来,使原本孩子之间的无意行为,演变成两个家庭之间的矛盾。最后,作为伤害方孩子的家长,遇到这样的情况也要积极主动向对方家长表达歉意,带着自己的孩子去看望慰问受伤的小朋友,这样做不仅有利于事情尽快解决,而且可以引导孩子懂得要为自己的行为负责。孩子之间发生矛盾不可怕,关键是家长如何处理,如果处理得当,坏好事,将成为孩子接受教育的良好契机。
案例二:当孩子身边有位 “特殊”的同伴。
说到这个“特殊”,其实我们每个人都是特殊的,尤其是孩子。每个孩子有着不同的遗传基因,不同的长相特点,不同的身体条件,不同的个性特征,不同的家庭环境和成长背景,不同的学习能力和行为习惯……应该说每一个人都有其特殊性。这里的特殊是指智力发育迟缓、患有自闭症等某些生理或心理疾病的孩子。如果班里有这样一个孩子,家长会怎么想呢?如果这个特殊的孩子对同伴影响不大,家长或许不会太在意,如果有某些方面的影响,家长可能就会担忧:怕自家的孩子被伤害,怕自家的孩子会模仿他或者学习不好的行为。班里曾遇到这样一个事例:有个智力发育迟缓的小男孩,各方面能力明显弱于同伴,行为较为古怪、脾气暴躁又喜欢打人。一学期下来,部分家长了解知道了这个小男孩,会提议调座位,不让自家孩子和该小男孩坐同桌。面对这种特殊的孩子要平等对待,这给教师很大的压力。但作为一名教师有必要认真对待这种事情的发生。如何与家长沟通这方面事呢?
首先,告知家长现代全纳教育理念,即随着社会的发展和进步,全纳教育理念已经越来越得到世界各国认可,包括有特殊需要的儿童在内,所有儿童都应该有平等接受教育的机会。让有特殊需要的儿童在正常化的环境中成长才是最有利的,这样的理念已经得到了实践证实。其次,让家长明白“特殊”这个词只是存在于我们大人的意识中,孩子的脑中却没有什么“特殊”的概念,孩子在接纳有特殊需要的同伴时那么的自然。就如案例里的这个小男孩,如果小朋友懂得多帮助他谦让他,他是不会伤害同伴的,家长怕被欺负是多于的担心。基于这点可以让家长在家提醒孩子在园多多帮助这有特殊需要的同伴。最后,指导家长同步教育好孩子,激发做个有爱心的好孩子。以讲故事形式让孩子多了解特殊群体,培养孩子懂得尊重每一个生命。而且班里有个特殊需要的同伴,是一笔非常宝贵的教育资源,对所有小朋友的发展都十分有益。再说,“特殊”同伴的存在也会冲击着我们大人的思想意识,考验着我们的理念和爱心,考验着我们的宽容与接纳精神。
案例三:我家的孩子太老实,容易吃亏。
教学生涯中,经常有家长反馈:“我家孩子很老实,别人说一他不敢说二,会不会容易被骗、被欺负,老师,帮我们多看管下孩子。”“老师,我家的孩子太老实了,在幼儿园被欺负,他不敢向老师说,回家也不敢说,容易吃亏。”……..这种情况担忧的家长不在少数。其实即使孩子性格活泼开朗,家长也同样会有这样的担心。毕竟家里通常就一个孩子,全家人都让着他,没人和他争抢,现在到了幼儿园,都是家里的宠儿,几十个“小太阳”放一块儿,谁会让着谁呢?甚至,有的家长会教孩子在园被欺负了要以牙还牙。作为家长,对孩子有所担心可以理解,但教孩子欺负别人的做法却极不可取。
(山东理工大学计算机基础教研室,山东淄博255000)
【摘要】在《C#程序设计》的教学实践中,传统的教学模式不利用培养学生软件系统分析能力和工程设计能力的培养,为了解决这一问题,本文提出传统教学方法与案例设计教学相结合的教学方法和实践,在对C#程序设计基本概念讲解基础上,通过具体案例的设计方法和过程,由浅入深的提出案例教学理念。目的在于加深学生面向对象程序设计的理念,提高学生的学习积极性以及加强学生工程实践能力的培养。
关键词 C#程序设计;案例教学;案例讨论
0引言
计算机语言的发展历程经历了由低级到高级,由结构化程序设计到面向对象程序设计理念的转换。为了提高大学生利用计算机解决工程和科学问题的能力,目前国内和国际上的大部分高校都开设了相应的程序设计课程。程序设计类课程是一门实践性和应用性极强的课程,大量的知识需要通过编程实践才能熟练的掌握。当前,C#程序设计语言是世界上应用最为广泛的面向对象程序设计语言之一,目前国内很多高校都将该语言作为工科类大学生需要具备的一种程序设计语言能力。在传统的《C#程序设计》的授课模式中,教师往往只注重基础理论,如语法结构及原理的讲解而忽略了实践能力的培养,结果使得学生对语言类课程失去了学习的兴趣,或者虽熟练掌握了语言的语法而缺乏解决实际问题的能力。早在20世纪初,哈佛大学的mba课程中就采用了案列教学的理念并且取得了巨大的成功。由于案例教学灵活多样,可以充分调用学生的学习积极性和自主性。因此,引起了国内众多高校教师的研究和重视。针对这一情况,为了达到加强培养大学生程序设计能力和解决科学工程问题能力的目的,结合本人多年教学经验,在教学中结合传统的教学手段,并有效的运用案例教学的方法,可以有效的提高课程的教学质量,提升学生的程序设计能力。
1案例教学与实践
针对学生的专业和层次差异,我校对部分专业的大一新生开设了《C#程序设计》课程教学,由于C#语言是一种面向程序设计语言,它将结构化程序设计方法中的三种基本结构作为局部代码设计的基础。因此需要学生先理解了结构化再深入理解面向对象编程的理念,在教学中存在一定的难度。然而,如果教师在教学过程中,认真研究授课内容,在详细讲解基本概念和语法的基础上,如果设计恰当的实际案例,将传统的教学模式和案例教学手段有效的结合,则可以起到事半功倍的效果。
在教学实践过程中,我们认为,案例教学要与简单的例子教学区分开来。在程序设计语言教学过程中,为了加强学生对语法能力的运用,教材往往会配以适当的例题,解决一些实际问题,如打印九九乘法表,牛顿迭代法方程求解等,这些例子往往只针对某一具体的语法现象进行讲解。可以加强学生对语法的理解,改善教学效果。但这些例子缺乏知识点的前后贯穿,并不能有效的提高学生的程序设计能力。我们认为,案例教学除了具有一定的新颖性和兴趣性外,还应该具有贯穿教学实践过程的特点。同时,我们也要注意到,案例和例子虽然有一定的区别,但并不能完全的割裂开来,两者之间存在紧密的联系,案例教学应该包括例子教学,是众多例子的有机结合过程。
在程序设计语言的教学实践中,案例设计的好坏关系到教学效果的高低和教学实践的成败。一个好的案例,可以充分调动学生学习的积极性和主动性,启动学生的求知欲和探索问题的动力。因此,在C#程序设计通过有浅入深的几个相关教学案例,会大大提高学生的学习效率。这些案例可以是解决一项实际的工程问题,也可以是一个有趣的小游戏,五子棋,黑白棋等。
下文介绍了作者在《C#程序设计》教学实践中,设计的一些教学案例,这些案例在教学实践过程中,取得了较好的教学效果,对提高学学生的学习兴趣和编程能力,起到了积极的作用。
1.1猜心游戏
猜心游戏是一个有趣的小游戏,游戏者首先默想一个整数(要求在设计区间内,本例为),然后在不同的数字卡片中进行有无判断,最后,可以根据游戏者的有无判断,准确的计算出游戏者默想的整数,具有一定的可玩性和趣味性,能成分调动学生的探索性和学习的兴趣。游戏界面如图1所示。
设计原理:
计算机内数值都以二进制存储,字节内由低到高每个二进制位置代表的数值大小是不同的。如:二进制10001001代表的十进制数的137。
设计步骤:
第1步:数字卡片设计,如第1张数字卡片,要求卡片中十进制整数的相应二进制数值的第0位为1,如图1中卡片所示。第2张数字卡片则列出十进制整数中相应二进制数值的第1位为1的整数,依次类推。
第2步:顺序切换卡片,并记录游戏者对卡片的“有”“无”判决的状态。即判断游戏者心中默念数字是否在该卡片中,并记录判决结果。
第3步:在显示完最后一张卡片后,根据游戏者对所有卡片“有”“无”状态判决,计算所采数值。如:1001001计算所默想猜数。
知识贯穿:
程序界面的设计与布局,循环程序设计,数字筛选,二进制原理,位运算等。
1.2评委打分及案例延伸
设计原理:
评委打分是我们在现实生活中经常遇到的一种排名竞争的方法,要求记录每个评委的打分,然后去掉一个最高分和一个最低分,求和取平均值得到打分。
设计步骤:
第1步:记录每个评委的打分。
第2步:通过打擂法,找出最大打分、最小打分。
第3步:掉最一个最高分和一个最低分,计算剩余打分总分并求平均。
第4步:输出最后打分值
知识贯穿:
数组定义和赋值;打擂法求最大数和最小数;数字的输出。
案例延伸:本案列设计较为简单,在实际设计中,可以通过该案例中对数值的输入,延伸至数值的排序,例如,学生成绩的录入和排序,在排序过程中,怎样保持在分数排序后,分数与学号或姓名间的对应关系。同时,可以进一步对数值的平均值,方差等进行分析以及绘图等。这样通过简单的案例延伸,启发学生的思维,增加了案例的设计效果。
1.3集合升级器设计
设计原理:
某些指定的对象集在一起就成为一个集合,其中每一个对象称为集合的元素。C#下集合有数组,ArrayList(动态数组),HashTable(哈希表)。为了便于理解这几种集合的优缺点,设计集合升级器程序。
设计步骤:
第1步:定义数组存储当前课堂对象信息Person[],人数在上课下课过程中要有增加或减少,而数组的缺点是不能动态扩展和伸缩。
第2步:继续提出改进方案,定义动态数组ArrayList存储课堂对象,可以动态伸缩。缺点,伸缩会引起索引值的重新更新,寻找固定对象不好表达。
第3步:继续提出改进方案,定义哈希表HashTable结构存储课堂对象,哈希表的数据通过键值(key)和值(value)来组织的。可以通过key定位固定对象。
设计思考:
课堂对象有老师和学生两类对象构成,在读出集合信息时遇到类型转换问题。能不能限制类型安全机制,如只能有教师对象或学生对象。需要使用泛型集合机制限定集合类内元素是同一类对象。如果既要包含教师类又要包含学生类怎么解决呢?通过定义教师类和学生类的父类Person来限定类型,如泛型集合List<Person>。但是缺点是动态伸缩同样会引起索引值更新,不好查找固定元素。可以通过泛型集合Dictionary<ID,Person>,通过key和value两部分遍历访问内部元素。该实例大大加深了C#下几种集合类型的理解,为后续编程打好基础。
2结束语
在《C#程序设计》教学过程中,通过恰当的教学案例,可以使乏味枯燥的基本理论变得趣味生动。结合传统的教学方法和案例教学的手段,可以有效的提高教学效果。本文通过3个案例,介绍了在C#程序教学中,案例的设计方法和步骤,丰富了课堂的教学内容,脱离了为教语法而写代码的旧有模式,促进了教师对教学方法的改革与创新,提高了学生的自主学习兴趣。通过几年来,对我校学生的调查研究表明,这样的教学方法,可以大幅度提高学生的C#程序设计能力,有效的调动学生学习的主动性,积极性和探索性。为了充分发挥案例在教学中的作用,要求教师在实际的教学实践中,案例的设计要不断的进行探索和改进,做到与时俱进,以充分提高教学效果。另外,文中的常见案例的设计和分析,也给师生提供了更广阔的设计空间。在教学实践中,可以根据学生专业,设计不同的教学案例。这样既充分发挥了教师的指导作用,又充分调动学生的学习积极性和主观能动性,可以获得最佳的教学效果。
参考文献
[1]刘秋香,王云.VisualC#.NET程序设计[M].北京:清华大学出版社,2012.
[2]马云吉.C++程序设计教学改革[J].计算机教育,2014(2):46-47.
[3]WingJM.Computationalthinking[J].CommunicationsoftheACM,2006,49(3):33-35.
[4]杨炼,邹超伟,毛韶阳.应用型本科院校C++课程教学改革探索[J].计算机教育,2014(21):95-97.
关键词关键词:软件需求工程;案例教学法;教学模式
中图分类号:G434文献标识码:A 文章编号:16727800(2014)002018302
0引言
《软件需求工程》是软件工程专业的一门专业核心课程,该课程主要讲述软件需求工程的过程、任务、常用的分析模型与建模技术知识。通过本课程的学习,使学生能够全面深入了解和掌握需求领域的各项方法与技术,具备作为软件需求工程师所需的专业能力[1]。由于《软件需求工程》是一门理论性很强的课程,课程重点在于阐述一般原理和方法,对于如何基于这些原理指导实践阐述的不够。因此,采用传统的偏重于课堂讲授的教学模式进行授课,很多学生感到内容抽象枯燥,常常是似懂非懂,甚至觉得本课程没什么实用价值,失去了学习的兴趣,直接影响了课程的教育质量和教学效果,因此需要对软件需求工程课程教学模式进行改革。
案例教学法是以案例分析为主线,通过案例设置教学问题,并提出各种解决问题的方案,以解决问题来激发学生的求知欲,调动学生积极性,使学生主动地学习,形成科学的教育观念的一种教学方法[2]。该方法的主要目的是为了培养和提高学生学习知识的能力,其主要以个人或小组合作的方式进行,学生通过亲身实践获得实践经验,是实现理论联系实际的主要途径。
为了改善教学效果,让学生理解并感受到软件需求工程理论从实践中来又到实践中去的思想,更好地掌握软件需求理论,本文尝试采用案例教学法进行《软件需求工程》教学模式研究。
1基于案例的《软件需求工程》课程教学模式
基于案例的教学模式是对软件需求各方面的技术,用案例分层次地进行教学,根据不同水平、不同层次学生的特点,结合理论进行需求获取、需求分析、规格说明、需求验证、需求管理等需求开发过程学习,体现需求工程的原理和实践。通过采用基于案例的教学模式培养学生的创新能力和实践能力,使学生具有扎实的基础、合理的知识结构、较强的需求开发和需求管理能力。教学方法的实施分理论教学和实践教学两个方面。
1.1理论教学
采用分步递进的案例分析方法,该方法主要分为以下3步:
(1)教师先系统讲授需求工程每一步需要的理论知识(方法和技术),在讲理论知识时针对比较抽象的问题结合实践经验穿插一些案例,但案例一般不宜过长,不适合论证复杂的综合性问题。例如:在讲到需求获取技术时,会讲到需求获取是需求工程中最重要的过程,获取用户需求时会遇到各种各样的困难,只有解决了困难才能获取完整的用户需求。对怎样解决困难,学生会很迷惑,这时就应该通过案例说明,可以举这样一个案例:假如要给一个企业开发一个财务管理系统,该企业的会计年龄较大,缺乏计算机知识,不想使用财务软件管理账务,因此对需求信息的收集工作采取消极态度,不愿与需求分析人员交谈,这就是进行需求获取时可能会遇到的困难。解决方法:①先给老会计讲解使用财务软件管理账务的优点;②演示操作计算机的简单过程;③演示已有的财务软件,主要演示处理数据的速度。通过教师讲解案例,进一步阐述相关理论的现实应用及意义,加深学生对该理论的理解和认识。
(2)理论知识讲授结束后,教师拿出学生比较熟悉的案例,如:学籍管理系统、图书管理系统等。根据讲授的理论知识,系统地应用解决实际问题。例如,需求获取章节讲授结束后,通过一个完整的案例来分析需求获取的整个过程:确定需求开发计划、确定项目的目标和范围、确定调查对象、获取需求信息时应采用的方法[1]。在获取需求信息时,可以让学生扮演不同的获取对象给需求分析人员提供软件需求。通过教师分析案例让学生学习如何应用理论知识解决实际问题,进一步加深对理论知识的理解。
(3)在学生充分掌握了相关理论知识之后进行此步骤。例如,教师在讲完“软件需求获取、需求分析、规格说明、需求验证”知识点后,学生选择一个案例,分组练习以加深对理论知识的应用。每组由4~6名学生组成,每组学生担当不同的角色。这种案例一般是一个完整的软件项目,需要用较长的时间分析。分析过程中要求学生亲自获取相关信息,以培养他们获取信息、发现问题、解决问题的能力,加强学生实际动手操作的能力。案例的具体内容安排由学生自己决定,教师只给出指导性意见。案例实施时,首先将学生分成若干个小组,组长在教师的指导下,确立案例分析方案。要求运用软件需求工程的理论和方法,按照需求过程规范分阶段实施,各小组应独立完成项目,每个阶段都要有成果;接下来,小组成员向全体学生讲解案例,讲解结束后其它小组就此案例进行讨论,共同研究需求分析过程;最后教师评分总结,并要求该小组写出案例分析的相关文档。
1.2实践教学
实践教学要注重学生的主动参与,培养学生的实际动手能力和团队协作能力[3]。实践题目主要选择学生比较熟悉的软件系统,内容要尽可能结合工程技术实际。在实践过程中,学生进行分组,每组5~6名学生,每组选择不同的实验题目,严格按照需求工程过程完成,并编写过程材料。实践教学中采用分阶段的案例教学法,分为需求获取、需求分析、规格说明和需求验证4个阶段,每一阶段教师要制定具体实施要求[4]:①需求获取阶段:要求先制定需求获取计划,组长给成员分配任务,并到相应的单位进行调研,获取需求信息。学生在教师的指导下,整理获取的信息,并对信息进行分类,撰写需求文档;②分析阶段:要求小组成员对获得的用户需求信息进行分析和综合,对于错误和不确定的需求,小组相关成员要再次进行调研,找相应用户获取完整、正确的需求。采用一种建模技术建立系统的逻辑模型,建模时对组内成员要进行分工协作,例如:学生的实践题目是信息管理系统,应该采用结构化的需求分析技术,用到的建模技术主要是分层的数据流图,可要求1名学生画顶层的数据流图,2名学生画中间层数据流图,2~3名学生画底层的数据流图;③规格说明阶段:要求学生以文档的形式给出在需求获取阶段和需求分析阶段所获得的所有用户需求和需求模型,即规范的需求规格说明书,说明书采用IEEE标准830-1998模板,描述语言采用自然语言,最后需求规格说明书要打印提交;④验证阶段:要求学生采用正式评审的方式进行,本组部分成员和其它小组的部分成员组成评审会,并扮演不同的角色,组长扮演评审会的主持人,组内成员扮演作者和记录员,其它组的组长扮演评审专家。实践结束后,教师要对每组学生的实践成果进行点评,并给出相应的成绩,以激发学生的学习积极性。
2结语
《软件需求工程》课程是软件工程专业的重要核心课程,对该课程进行教学模式改革符合课程建设的要求[5]。案例教学法作为一种启发式教学方法,是对传统教学法的改革。经过近两年的基于案例的软件需求工程课程教学模式的实施,证明该方法能寓理论于实际,有利于学生能力的提高,有利于学生素质的提高,同时对促进教学改革和加强素质教育有着积极的意义,但在实施过程中仍存在一些问题,如理论知识点教授与案例分析的有机结合等。在今后的教学模式实施中,针对存在的问题需要进一步更新、完善教学内容,以保证取得较好的教学效果。
参考文献:
[1]毋国庆.软件需求工程[M].北京:机械工业出版社,2008.
[2]彭佳红,彭佳文,曹晓兰.基于案例的软件工程课程教学研究[J].高等农业教育,2009, 11(11):6062.
[3]何成万.注重教学和科研相结合的软件工程教学实践[J].软件导刊,2008,7(7):176177.
关键词:案例教学法;数据库程序设计;教学模式;Visual FoxPro程序设计
中图分类号:G642文献标识码:B
1案例教学法与数据库教学
案例教学法,也称之为范例教学法,从词源上看,“范例”来源于拉丁语“exemplum”,意思是“好的例子”、“典型的例子”。案例教学的特点是,在学生掌握基本知识的前提下,通过教师的策划指导,运用相关典型案例,以学生独立思考、团队合作的方式,培养其识别、分析和解决具体问题的能力,同时塑造有利于将来实际工作中所需要的沟通、协作、管理等能力。在教学中运用案例与任务相结合的教学方法,通过把一些典型的案例展现在学生面前,要求他们深入地思考,学生在分析案例的同时,一方面不断形成新的理论视野,增长案例分析的技巧;另一方面在探索思考理论如何运用于实际的同时,结合任务的完成,从而及时而有效地促进了理论向实践的转化,真正达到理论与实践的结合,有利于加强学生的实践动手能力和技能的掌握。
案例与任务,前者侧重于教,指教师在教的过程中以案例为基础,后者则侧重于学,指学生在学的过程中以案例为导向,以任务为驱动,以解决问题为目标,在解决问题的过程中学习。案例与任务相结合的教学法着眼点在于学生创造能力以及解决实际问题能力的提高,而不仅仅是获得那些固定的原理或规则,通过案例更有效地获得知识。这种教学法适合于培养学生的创新能力和独立分析问题、解决问题的能力,其实质是培养学生实践学习的能力。它很适合计算机类课程,如“Visual FoxPro 数据库程序设计”课程的教学,因为该类课程实践性很强,要求学生既要学好理论知识,又要掌握实际操作技能。同时由于该课程知识内容更新很快,要求学生必须具有一定的自主学习能力与独立分析问题、解决问题能力,才能适应信息时代与学科知识发展的特点。
2案例教学法在数据库程序设计教学中的实现
“数据库程序设计”课程,对于文科的“经济信息管理”专业和“电子商务”专业,它是计算机信息技术的技术基础课;对于理科的“计算机应用”专业,它还是专业技能的提高课程,我院该课程主要讲授的是“Visual FoxPro 6.0”,这也是毕业设计的主选程序设计语言。
课前,教师先将一个真实的系统开发实例,在多媒体教室演示,让学生进行自由操作并发表意见。待实例演示结束,教师明确指出演示的系统就是Visual FoxPro将要完成的学习任务,它要完成的并不是单纯的程序设计,而是一个完整的信息管理系统。这样就有了一个让学生学有所用的教学情境,激活学生的情绪和思绪,激发学生参与Visual FoxPro学习的强烈愿望,在对Visual FoxPro课程还感到陌生的时候,抓住最佳教学时机,帮助学生明确学习任务和目标。由于这个案例是贯穿在每个章节中的,最终完成该系统的开发。在后续的讲课中通过对各个具体案例的精心解析,学生不仅能够全面了解Visual FoxPro的基本风貌,学会基本操作技能,同时还能从其具有示范性的制作过程中获得有益的启示,积累自己的开发经验。力求使学生在学习过程中抓住本质,学到设计管理信息系统的思路和方法。如何在可视环境下进行面向对象程序设计的方法、步骤;通过一个个具有针对性的实例和具体的操作过程,让学生很快能熟悉Visual FoxPro的应用环境;从而实现由易到难,边学、边练、边提高的学习过程。这样学生就清楚地了解了:
为什么要学习数据库;
为什么要学习Visual FoxPro;
学习了这门课程能做什么;
这种程序设计语言与同类语言相比具有什么样的特色;
经过一个学期的学习,通过设计、编写一个信息管理系统的实践练习,从而达到怎样的水平。
这样,学生从开始就了解了开设这门课程的意义,以及在随后的学习过程中的将要面临的总体任务,从而激发了学生对学习的渴望。
3案例教学法的实施
独特的案例教学法加之以互动的授课形式,使学生在深入浅出的课程中,通过掌握程序设计的基本知识并在此基础上实现举一反三,触类旁通。“数据库程序设计”课程每周的课时安排课堂讲授和上机实践各占一半,案例教学法按课堂教学和上机实践两个环节加以实施。
3.1课堂教学
教师组织案例教学要为实现课堂的教学目的服务,有计划地进行,才能达到预期的教学效果。首先,教师要让学生明确所采用的案例的目的。可以先让学生在课前预习案例,自己先对案例进行分析,也可以在课堂上让学生对案例进行讨论,各抒己见。总之,教师在组织案例教学时,要想方设法地充分调动学生的思维,积极思考并结合自己学过的知识阐述自己的观点和看法。这样既能活跃课堂气氛,又能收到良好的教学效果。其次,教师本身在组织案例过程中也要做好以下几个环节:(1)选准实例,课前认真备课,尽量做到巧妙地把课本的理论知识融合到案例中。(2)课堂上要充分引导学生进行思考,调动他们的讨论气氛,力求营造出一个“百家争鸣”的学术气氛,使得学生的创造性和个性得到充分发挥。(3)认真总结学生对案例的讨论,引导学生辨清是非曲直,从而掌握所学内容。
对于教学中的理论知识,我会随即要求学生画书,重要的还要留作业抄写、甚至告知学生这是期末考试的内容。当然,在试卷中不会原样出现,而是通过实践问题灵活地考查学生对理论的理解。因为在学习程序设计语言时,学生往往专注于代码的编写而忽略理论知识,对灵活处理实际问题和下一步的学习形成障碍。完成作业和通过考试都是“任务”,作为大专院校,我们的学生既要学会“实战”还要知道“实战”的理论基础。所以,强调理论知识的重要性是必不可少的。
对于教学中的实践操作知识,在讲解命令功能和结构的同时,还要结合案例进行教学。要求学生熟练掌握命令的几种常用形式,并留作业、布置相关的上机练习任务。并从三个方面进行实践演示。(1)在命令窗口输入命令的实例,展示效果。(2)提出一个实际的任务,动态编写一个简单的应用实例。(3)对于较繁杂的应用,演示一个事先制作好的实例,将其中的要点一一指出,并动态演示采用不同的设计方式会产生不同的运行效果。
例如,在表单设计初期,先展示一些有趣的小例子,如编写一个电子时钟(如图1)、求任意随机数(如图2)、几何变形(如图3)、动画演示(图4)等题目。引出对象的属性和事件,然后再逐渐加大难度,学生理解了对象的属性,自己就会找到相关属性。接下来让学生设计一个判断是否是闰年的表单。再往下就让学生考虑简易计算器的设计、调色板的设计,由浅入深,看到自己完成的作品,学生的学习兴趣就大大的提高。在兴趣的激发和目标的指引下,逐渐引入抽象术语和名词,从顺序结构又引入了分支结构及循环结构。为了目标,为了兴趣,学生欣然地接受。
图1电子时钟
图2求任意随机数
图3几何变形
图4动画演示
3.2上机实践
在上机实践课中,首先提示本次上机练习的主要任务、提示课堂教学中的关键点、教学实例在教师机的存放位置。在此之后,首先要求学生完成实验指导书上的或补充的例题,掌握知识点的基本功能。其次要求学生阅读理解教学实例,然后模仿制作,完成实际应用任务。在学生操作练习一段时间后,还要讲解练习中学生普遍存在的问题,协助学生正确理解知识点。最后,展示部分学生的设计成果以及采用与教学实例不同的思路和方式制作的成果,鼓励创新。这样就完成了以 “布置任务介绍方法实践操作完成任务归纳结论”为顺序的教学过程。
4布置“综合任务”,提高教学深度
通过案例教学法在教学过程中的实施,以完成一个个具体的任务为线索,把教学内容巧妙地隐含在每个任务之中,让学生主动思考,自己解决问题。在完成任务的同时,培养了学生的创新意识、创新能力以及自主学习的习惯。
学生的学习不仅仅是能够做习题,或完成一个个小任务,还要有一定的深度。怎样使学生能够将学到的理论知识和实践知识相结合完成综合任务呢?我们会进一步要求学生在前期学习的基础上,编写一个学生成绩管理或图书借阅管理方面的模拟管理软件,完整地强调程序设计的思路、实现的方法,而软件的外观风格、实现手法要求尽量多种多样。
在教学过程中,结合教学内容,将软件的内容拆解为一个个小的“案例”,逐步地展示、布置给学生。要求学生,在上机实践中,逐步地理解、模仿、改造。在学期末,综合每人自己的各个“任务”成果,制作出一个完整的管理软件。这样在案例的驱动下明明白白地学习,一步一步地学有所成。为学生今后的实际应用和进一步提高打下基础。
5结束语
案例教学法不仅仅要“授之以鱼”,更强调“授之以渔”,强调创新能力的培养与全面素质的提高。采用案例教学法,能使数据库程序设计教学变得生动活泼,富有趣味性,有效激发学生求知欲,课堂气氛活跃。是对传统教学的发展,比较适合计算机类课程的教学。在教学过程中,教师一方面要通过引导,把握整个教学过程的内容、进度和方向,给学生以思考的机会和时间,让学生有尽可能多的时间进行自主学习;另一方面,教师要采取多种方式,激活思维状态,传授思维方法,提高思维能力,鼓励互相合作,进一步促成学生的意义建构,形成新的认知结构,并把案例教学和传统教学有机的结合起来,不但激发学生的自主学习,更让他们了解一个语言的精髓。而无论采取何种教学模式、利用何种教学手段、采用何种网络资源,重要的是把握课程和学生的特点,确定培养目标,借助先进的教育教学理论,制定蕴含先进教学理念的正确的教学目标,从而达到更好的教学效果。
参考文献:
[1] 商利民. 试论新课程改革中的教学案例及其研究价值[J]. 教师教育研究,2004(6):56-60.
[2] 徐安凤,黄河涛. 浅析案例教学在高校计算机语言课中的应用[J]. 教育与职业,2005(14):38-40.
[3] 朱金生,刘耀辉. 案例教学法在教学中的应用探讨[J]. 理工高教研究,2005,24(6):66-68.
关键词:生物医学工程;VC++面向;对象程序设计;教学方法
Driving Teaching Method of VC++ and Object Oriented Programming in Biomedical Engineering
WU Bo,ZHANG Nan,WU Wen-yi,DU Jing,CHEN Hui,LIU Zhi-cheng
(Department of Medical Informatics,School of Biomedical Engineering,Capital Medical University,Beijing 100069,China)
Abstract:By improving the teaching philosophy and teaching methods, we explore the effective VC ++ object-oriented programming and teaching methods according to the characteristics of students specializing in biomedical engineering. In the teaching process, we design the case-driven and case representation methods to help students have a deep understand of the VC ++ object-oriented programming principles and gain the skill of VC ++ graphical user interface programming by using the common controls, and acquire the skill of database access programming technology. The case is designed to have the high requirements to the actual operating ability which considers students' professional interests at the same time. Students can accomplish the case using their own professional knowledge and skills. In this process, students can deepen their knowledge about the VC ++ object-oriented programming principles. In the process of making representation and the questions answering, students can learn from each other. Therefore the final goal can be achieved that they can fundamentally understand and master the knowledge and proficiently use it.
Key words:Biomedical Engineering;VC++ object-oriented programming;Teaching methodology
1引言
生物医学工程是一门交叉学科,它运用理学、工程学的理论和方法,解决生物科学、医学、行为学或卫生学中问题,以及进行相关的科学研究[1-2]。近年来,计算机科学与技术在医学领域也获得了广泛应用,并促进了医学的进步,例如医学成像技术,计算机辅助诊断,医院信息管理等。因此,计算机科学与技术成为生物医学工程专业教育教学的重要分支,很多医学院校设置了计算机科学与技术专业[3-8],甚至很多理工类院校的计算机与信息技术学院开设了生物医学工程专业[9]。
程序设计是计算机科学中的重要技能,是在医学信息学的科研或应用领域实现新算法或功能的重要手段。C++是经典的面向对象编程方法,是目前使用最广泛的编程语言。C++面向对象语言的特性使之具有简洁高效的特性的同时,兼具灵活性的特点,使它即适用于大型程序设计,又能够较好地兼容C语言。因此,面向生物医学工程学生的C++面向对象编程的教学问题研究成为近年来的研究热点[10]。VC++是微软开发的C++可视化集成编程环境Microsoft Visual C++的简称,不但支持C与C++的开发,也支持可视化编程,而且它具有数据库访问技术,是强大的编程工具。在我们课程中,采用了Microsoft Visual Studio 2008 C++版本的软件,目前这个版本是较新,而且比较稳定的版本。
2案例
2.1设计 VC++面向对象程序这门课程主要分为两个层次,首先是要讲解面向对象的程序设计原理;其次讲解基于NET Framework的窗体应用程序编程,包括数据库访问技术,以及窗体与数据库的配合编程。第一层次的知识比较抽象,面向对象程序设计的思想和原理是从面向过程的程序设计演变进化而来,其规则适用于大规模程序设计,对于编程经验较少的学生来说,深刻理解较难。第二层次知识更注重实际操作,程序设计的运行结果更加直观,且容易实现一定功能。所以,很多学生更加喜欢学习这部分知识。但是,第一层次的知识为第二层次知识的基础,基础知识掌握不牢固,将会导致窗体程序设计时遇到大的问题。因此,需要设计综合性的课题,使学生在实际操作中既巩固了基础知识,又能激发他们的学习探索兴趣。
针对这些特点,我们在课程最后设计了与医学相关的案例,具体内容是实现具有简单功能的,类似医院信息系统子系统的软件。使用C++控件完成具有Windows风格的界面。软件要求使用按钮控件,按钮必须有Click事件,并且Click事件必须完成一定功能,例如 "查询"按钮,实现数据库查询;要求使用文本框控件,文本框要有功能,例如使用Validated事件,实现数据有效性检验;要求使用列表框,组合框,dataGridView控件任选其二使用,并且这两者间要有数据的联系,列表框中数据可以添加到组合框中,或组合框中数据可以添加到数据库等等;要求必须使用数据库技术(SQL Server或Access),要求能查询、修改、更新或删除表。外观要求美观,可以为窗体添加背景图片,编译与运行过程中不能有错误。完成案例后,需要学生参加大作业答辩环节,答辩时要求通过ppt幻灯片讲解,结合软件功能演示,代码讲解来向学生和老师展示自己的成果。学生答辩结束时有老师和学生的提问时间。
本案例既能结合学生知识背景,激发学生动手动脑兴趣,又能将课程知识点大部分涵盖在案例里,使学生通过做案例加深对课程知识点的理解,又锻炼了实际操作能力,同时,本案例有留给学生自主发挥的空间,能够激发学生学习的自主能动性,学有余力的同学能够通过自学,实现更加复杂的功能。最后,通过大作业答辩,锻炼了同学们演讲能力和沟通能力,并且进一步加深了知识点的掌握。
2.2实现 学生根据案例要求,完成了一款体检信息查询软件。图1为体检信息查询软件的界面。本体检信息查询器的设计思路是,①可以通过录入,将体检人的体检信息添加进数据库,信息包括姓名、性别、年龄、血压、心率、身高和体重;②能够通过姓名字段,查询数据库中的某条记录,并且根据查询到的体检信息,可以生成此人的体检报告。下面我们从软件的控件和数据库两方面介绍软件的实现。
图1 体检信息检查软件的界面
2.2.1窗体设计 控件布局如图1所示,具体实现为:向姓名文本框中输入查询关键字姓名,单击查询按钮,触发Click事件,可以实现在数据库中以按照姓名字段进行查询,查询结果添加到数据集dataSet11控件之中;查询结果显示在DataGridView控件中;单击"生成体检报告按钮",ListBox控件中生成体检报告;血压情况,心动情况和体重情况用ComboBox控件实现,每项给出了选项,用于辅助生成体检报告的结果。
2.2.2 数据库编程 在我们的案例之中,使用了Microsoft SQL Server 2005数据库。为了在教学过程中强调VC++的数据库访问技术,我们的数据库设计的比较简单,仅包含了一个单表,表中包括了"性别"、"年龄"、"血压"、"心率"、"身高"和"体重"等字段。首先,我们需要在在Visual Studio中连接数据库。因为Visual Studio环境只有连接到当前的数据库服务器后,服务器上的数据库对VC++工程才可用。具体过程是:a)新建VC++ 窗体应用程序,或打开一个已有的数据库窗体工程。b)如果当前没有数据连接,则选择"工具"中的"连接到数据库"选项,弹出"添加连接"对话框,如图2所示,设置想要访问的数据库,各项设置完成并测试连接通过之后,不报错,即已经成功连接数据库。可以打开Server Explorer窗口查看新建工程中已连接数据库情况。
图2 Visual Studio 2008中添加数据库连接窗口
在VC++窗体应用程序中访问数据库,必须要具备3个控件,分别是连接对象(sqlConnection),适配器对象(sqlDataAdapter)和绑定数据源对象(bindingSource)。绑定数据源控件可以为控件绑定数据库,例如我们将要用到的数据视图控件(dataGridView1)的数据源绑定。SqlDataAdapter是SQL Server与DataSet之间连接的桥梁,SqlDataAdapter带有Fill和Update方法,Fill方法以数据源中的数据填充DataSet,而Update则能用DataSet中的数据更新数据源。SqlConnection则用于打开和关闭数据库连接,在VC++窗体应用程序中打开数据库连接后,可以用SQL查询语言对数据库进行查找等操作。因此,要设计数据库查询的窗体应用程序,需要首先添加这三个控件。
接下来生成DataSet,方法是单击sqlDataAdapter1控件右上角的按钮,在弹出菜单中选择"生成DataSet",单击确定即可生成DataSet1实例,在Form1下方出现dataSet11控件实例。接下来可以在DataSet1实例的基础上,实现可查询文本框,以及数据视图控件(DataGridView)。"姓名"文本框为绑定了数据源中"姓名"字段的可查询文本框,可查询文本框由DataSet1实例下,"姓名"字段的文本框控件添加。向可查询文本框中输入查询关键字,配合按钮的单击事件,可实行数据库的查询。具体实现为,向按钮控件的Click事件添加数据库查询,实现代码如下所示:
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
this->sqlSelectCommand1->CommandText = L"select * from result where 姓名like'"+姓名TextBox->Text+"%'";
sqlConnection1->Open();
reader=this->sqlSelectCommand1->ExecuteReader();
while(reader->Read())
{
dr=dataSet11->result->NewRow();
dr[0]=reader->GetString(0);
dr[1]=reader->GetString(1);
dr[2]=reader->GetInt32(2);
dr[3]=reader->GetString(3);
dr[4]=reader->GetInt32(4);
dr[5]=reader->GetInt32(5);
dr[6]=reader->GetInt32(6);
dataSet11->result->Rows->Add(dr);
}
this->sqlConnection1->Close();
}
其中数据库查询语句如下:
this->sqlSelectCommand1->CommandText = L"select * from result where 姓名 like'"+姓名TextBox->Text + "%'"。
其中"*"可通配任意长度字符,"%"可通配任意单个字符,以实现对姓名的模糊查询。及执行数据库查询命令。命令保存在sqlSelectCommand1对象的CommandText成员里。sqlConnection1->Open()成员函数打开当前数据库连接,ExecuteReader()方法则执行查询命令。查询结果存入reader实例里,通过while循环,保存入数据集实例dataSet11之中。
接下来,将dataSet11中保存的查询结果显示在数据视图控件(DataGridView)之中。首先,需添加数据视图控件,方法是在Visual Studio环境中"Data Sources"浏览器中选中表,并拖动到Form1窗体控件实例中,即可添加DataGridView实例dataGridView1。同时,BindingSource和BindingNavigator组件都会自动出现,见图3,并已经将数据视图所连接的数据库的属性设置好了。同样添加"添加新条目"按钮控件,并为按钮添加Click事件,在事件中加入如下代码:
private: System::Void button4_Click(System::Object^ sender, System::EventArgs^ e) {
this->sqlDataAdapter1-> Fill (this->dataSet11);
}
适配器对象的Fill方法用this->dataSet11填充数据视图控件DataGridView。
单击"生成体检报告按钮",会在列表框控件(ListBox)中生成体检报告。报告中可综合显示姓名文本框,组合框ComboBox实例中的血压情况、心动情况和体重情况等内容,实现代码情况如下:
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {
this->listBox1->Items->Add(姓名TextBox->Text);
this->listBox1->Items->Add(comboBox2->Text);
this->listBox1->Items->Add(comboBox3->Text);
this->listBox1->Items->Add(comboBox4->Text);
}
2.3分析 案例设计时,我们综合考虑到VC++教学中两个层次知识间的关系,以及在教学过程中遇到的典型问题。怎样通过大作业设计、实现过程、以及最后的答辩环节突出知识点,使学生加深理解和认识,是我们要重点考虑的问题。①总结学生需要掌握的知识点,包括类的概念,对象的声明,成员函数的实现,构造函数和析构函数,数据库访问技术,以及数据库与控件之间的交互;②设计答辩过程问题,帮助学生整理思路,了解他们所做工程与VC++基本的面向对象程序设计的思想和原理之间的联系,掌握窗体程序与数据库连接编程相关重点知识。
根据上面的案例,结合知识点,我们答辩过程中设计了如下一些问题:①本窗体程序中,有哪个类?②类中包括哪些控件对象?它们有哪些成员函数(事件)?③哪部分代码为对象成员函数(事件)的声明?哪部分代码为对象成员函数(事件)的定义?④控件的属性修改了哪些?怎样进行修改?⑤数据库端做了哪些设置?Visual Studio工程中怎样设置数据库连接的?⑥工程中连接数据库字符串是什么?⑦工程中用了哪些与数据库连接相关的控件?怎样设置的?作用是什么?
通过上述问题的互动问答,能帮助学生温习和理解第一层中类和对象的概念,成员函数的声明和定义;掌握控件属性设置,以及如何设置;掌握数据库与窗体程序联合编程中数据库端SQL Server Management Studio的设置,以及如何在Visual Studio中设置以连接数据库,加深 ConnectionString连接语句中数据库查询语句的使用。学习初步的VC++.NET和数据库连接编程。
3结论
生物医学工程专业学生的培养目的是培养出能够跨越理工科与医学两个专业领域的人才,使他们在今后的工作中成为两个领域顺畅交流,良好互动的桥梁,从而使学科之间激励促进,互相融合。我们根据医学工程专业学生的特点,设计了学生们感兴趣的案例,激发学生编程的热情,同时训练了学生程序设计和实现的实际动手能力。接下来,我们结合作业答辩方式,设计了将理论与实际操作相结合的问答,让学生结合他们实现的程序,深刻理解和掌握面向对象的编程思想和方法。
综上所述,我们在生物医学工程本科生的VC++与面向对象程序设计课程教学过程中进行了有意义的探索。
参考文献:
[1]卢文婷.《生物医学工程概论》课程设置与教学初探[J].科技教育创新,2011,(8):268-269.
[2]常宇,卓政,高斌,等.生物医学工程跨学科复合型人才培养--从电子信息工程到生物医学工程.中国教育技术装备,2013,(35):73-74.
[3]蒋尔鹏,第二军医大学基础部[J],基础医学教育,2014,(09).
[4]谭强,刘广,孙艳秋,等.关于新办医学信息工程专业学科设置的研究[J].科技信息,2013,(19):179-252.
[5]蔡晓鸿,赵臻,解丹,等.医学信息工程专业的知识体系构建探讨[J].基础医学教育,2013,15(2):138-140.
[6]陈娜,王赫楠,燕燕,等.医学信息工程专业课程设置探讨[J].科教文汇(上旬刊),2014,(10):79-134.
[7]张楠,武博,段娟,等.计算机教学中医学生理工素质的培养[J].中国医学装备,2012,(9):49-51.
[8]刘志成.悟为师之道,施育人之本--医学生理工素质教育的思考与实践[J].首都医科大学学报,2014,(35):267-269.