开篇:润墨网以专业的文秘视角,为您筛选了八篇c语言课程设计小结范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
关键词关键词:数据库课程设计;项目驱动;教学方法;考核方法;能力培养
中图分类号:G434 文献标识码:A 文章编号文章编号:16727800(2013)008017402
作者简介作者简介:邱月(1979-),女,硕士,湖北经济学院信息管理学院讲师,研究方向为数据库技术。
0 引言
数据库技术已经成为先进信息技术的重要组成部分,是现代计算机信息系统和计算机应用系统的基础和核心。数据库技术是将数据库与软件开发相结合,数据库设计和基于数据库的应用程序开发。为此,课程要求学生选用主流DBMS,自选某种高级程序设计语言,实现一个完整的以数据库为核心的B/S或C/S架构的应用系统。掌握设计实现一个完整的产品化导向的数据库应用系统的流程和方法,包括需求分析、数据库设计、应用程序设计。本文分析了湖北经济学院开设数据库课程设计以来,实践教学环节中存在的问题,结合项目模拟实训教学方法的基本原理,提出了基于团队项目模拟实训的数据库课程设计教学方法的具体方案及实施效果。
1 数据库课程设计教学现状
(1)题目过少不够开放。湖北经济学院是一所财经类教学型学校,开设的主要专业为经济管理类。但目前的题目多数都是老师提供给学生的,题材类似,不可避免地会出现学生相互抄袭的现象。另外,题目呆板,没有和本校的专业特色相结合,选择余地太少。长此以往,会使学生养成不劳而获的坏习惯,不利于学生毕业之后适应竞争激烈的社会。
(2)学生轻分析设计,重编程实现。 学生把编程工作放在数据库设计中的首要位置,轻数据库及其对象的设计,重开发工具的使用。很多学生只重视系统功能模块的设计与实现,缺乏全局观念。
(3)学生缺乏整体意识,团队协作能力不强。在数据库系统开发的过程中,学生对系统没有整体规划,经常把时间都花在需求分析和系统实现上,造成在学生项目后期没有时间做系统测试,这样开发出来的系统必然出现很多问题。
软件开发是一个系统工程,特别强调团队协作能力。如果一个课程设计题目只让学生一个人完成,缺少与他人相互的交流,不利于交流与沟通能力的培养和项目的正常开展。原有教学模式下,学生做课程设计往往单打独斗,没有形成一个团队。
(4)课程考核方式不够科学。老师通常采用平时成绩和实验报告相加权作为总成绩。在这种考核方式下学生是被动地完成任务,不知道所做项目的评定标准,因而积极性不高,也不能通过项目设计有效地提升自己的能力。
2 数据库课程设计基础准备及教学目标制定
2.1 基础准备
综合性的实验课程往往需要很多课程作支撑。在该课程开设之前,前期学生应该已经学习了C、C++等一些经典的程序设计课程,学习了数据库原理及软件工程课程,对于数据库原理课程中的相关概念例如数据库文件的创建、表的建立以操作、视图与SQL查询、存储过程与触发器等进行了相关实验,对于关系型数据库基本概念和特性有一个比较完整的认识。由于课程设计中需要将数据库原理与工程项目相结合设计出具体的应用程序和界面,所以学生还需掌握至少一门前台开发工具,如 、或PHP等,让不同层次的学生选择不同的培养方案,有针对性地进行学习。
2.2 教学目标
结合教材上关于数据库设计的思想和方法,对一些简单的信息管理问题进行必要的分析和设计。在掌握了数据库系统的基本原理和基本方法的基础上,熟悉数据库管理系统的工具及语言。能查阅资料解决数据库技术方面的问题,具备在微软开发平台下进行数据库设计和管理操作能力,培养数据库应用系统开发的基本能力,项目合作、团队精神及小组交流的能力,培养学生运用数据库管理系统解决实际问题的能力。
3 数据库课程设计教学构思
课程组根据学生的实际情况,制定了相应的教学计划。本课程安排在一个学期内,32学时,每周具体安排如表1所示。
3.1 人员安排及开题
把整个班级按照开发小组的形式进行分组,每组4~5人,选一名组长,每个同学承担不同的角色,共同完成任务。在整个过程中,为了达到锻炼的目的,每个同学的角色可以互换。
在选题方面,应充分考虑到学生的专业特色,体现经管类专业的特点,选择具有专业特色的案例,以激发学生的学习兴趣。比如,针对“旅游管理”专业和“国际金融”专业,可以根据专业要求来分别制定教学案例,使学生在数据库课程设计中加深对本专业课程的理解,从而达到数据库课程设计和专业特色融合的目的。在制定选题的过程中,教师应进行充分的调研,与该专业的教师进行讨论,帮助学生选择他们熟悉的题目,如旅游酒店管理系统、学生成绩管理系统、人力资源管理系统等,或者选择学生生活中经常接触、能很快上手的内容。同时,应注意控制题目的规模和难度,使学生经过努力后能在规定的时间内完成。这个阶段可以充分调动学生的积极性,鼓励学生自己选题组建项目小组。这种方式经检验取得了较好的效果。
3.2 需求分析
在此阶段,要尽可能收集课题的全面需求,利用不同小组互相模拟实际用户的形式,开小组讨论会来确定需求,增强学生的沟通能力和开发兴趣,并引导学生自己画出数据流图。
例如,某家工厂的采购部每天需要一张订货报表,表中列出所有需要再次订货的零件。对于每个需要再次订货的零件列出下述数据:零件编号、零件名称、订货数量,目前价格、主要供应者。零件入库应有入库单,零件出库应有出库单,通过放在仓库中的CRT终端把入库单或出库单报告给订货系统。当某种零件的库存数量少于库存量临界值时就应该再次订货。
当系统比较复杂时,应当采用分层描述的方法。一般第一层描述系统的全貌,第二层分别描述各子系统的结构。如还未表达清楚,可以继续细化。
3.3 系统设计与实施
确定用户需求后,进入系统设计阶段。物理设计阶段应该充分利用表、视图、存储过程、触发器等各个数据库对象的特点,建立一个完整的数据库。要引导学生利用课程设计来熟悉数据库开发的一些常用技术和工具。例如,在数据库课程设计中可以教学生怎样使用Power Designer来做数据库设计。在软件公司实际的数据库系统开发中,有很多工具可以直接完成从数据库概念模型到物理模型的设计和转化。
系统实施阶段,各小组可以选择自己熟悉的程序设计语言动手编写代码,完成系统各个模块的功能。开发语言可选择机房环境,有Java、VB、VC、PB等;数据库可使用提供的SQL Serever2000、DB2、MySQL5等主流DBMS;软件架构两层、三层都可以。教师对各小组学生在设计中遇到的具体问题,有针对性地给与启发式的引导。
3.4 系统测试
系统测试阶段可以选取小组之间交换测试,主要从功能测试、数据库测试两个方面找出系统的缺陷,对软件质量进行评价打分。列出测试计划,往各数据库表中插入正确的测试数据,测试数据插入情况和各种约束作用,并记录结果;往各数据库表中插入错误的测试数据,记录出错结果;在各数据表中修改测试数据,记录测试结果;各数据表中删除测试数据,记录测试结果;创建各权限等级的用户,授予相应的权限,然后按权限等级执行相应操作,查看操作结果是否正确,最后再编写实验报告。
数据库功能测试主要是对界面进行测试,按用户类型进行分部测试,查看每一种类型的用户功能是否有欠缺;用户操作是否符合实际,是否具有意义;尤其是在功能实现上,不同情况,会有怎样不同的处理;查看在出错的情况下,系统如何处理。3.5 完成设计报告
设计报告主要内容要求有系统需求分析(功能模块图)、基本ER图(要求标明主码、外码、联系类型)、用户子模式设计、按模块分析所编写的应用程序等。撰写设计报告前小组中各成员必须对自己的工作进行归纳、分析和总结。小结一般包括工作内容、工作量大小、自己完成情况、遇到的问题以及解决方法、收获与体会、今后努力与改进方向等。教师给出设计报告书写规范,学生根据系统分析设计结果完成该部分内容。报告编写是考查一个学生总结工作、撰写科技论文的能力。该环节考查的重点:报告是否内容完整、充实,条理是否清楚,格式是否符合科技文章规范。
3.6 检查与考核
考核是检验教学成果的有效方式和重要手段,对学生学习和教师教学具有重要导向作用,不同的考核方式能激发学生的学习动机。除了加强平时考勤外,教师还需在每个阶段对各个项目小组进行跟踪检查,对各个阶段的完成情况进行记录。从数据库原理、数据库应用和数据库设计三方面对学生进行综合评测,达到对数据库系统主要内容和框架的评测。具体考核指标权重为:平时表现 (25%) + 任务完成情况 (30%) + 答辩 (20%) + 设计论文 (25%)。同时还要鼓励学生在课程设计后,尽量撰写相应科研论文,积极申报校级学生科研项目。对于能力非常突出的学生,可以建立课外研究小组,让他们参与到教师在研的省部级科研项目中,进一步提升他们的专业技能和综合素质。
4 结语
数据库技术是一门理论和实践并重的学科。课程设计是否成功的标准在于学生是否通过项目开发,将自己所学到的数据库知识运用于实际需求中,是否提高了学生的动手能力。通过两年的教学实践证明,以这种方式开展课程设计更贴近企业实际的项目开发方式,能倡导学生主动参与的探究式学习和研究,改变学生被动接受、大量反复操练的学习和实验方式, 真正培养学生严谨周密的思维和临时处理问题的能力,满足企事业单位信息化建设的用人需求,有效地解决了理论教学与实践教学脱节和经管专业学生数据库工程实践能力薄弱的问题。另外,做好数据库课程设计作业有利于学生毕业设计报告和毕业论文撰写。今后学生面临的毕业设计其实就是一个完整的系统设计,是课程设计的扩大化、完整化,为设计报告的撰写、文献资料的查阅也为今后撰写毕业论文打下坚实的基础。
参考文献参考文献:
[1] 赵慧敏,杨鑫华,牛一捷. 数据库课程设计实践教学改革探索[J].当代教育论坛,2011(8).
[2] 张志锋,王文冰.以就业为导向的学生综合能力培养教改研究[J].计算机教育,2010(11).
[3] 林巧,丁革建.数据库课程设计的项目化实验教学方法[J]. 实验室研究与探索,2009(5).
【关键词】BOPPPS 教学模型 参与学习
一、引言
单片机C语言程序设计是电子信息工程技术专业的一门专业课程,目前该课程的授课地点主要在标准的机房中,主要以理实一体化的教学方法,以项目驱动的教学模式,课程主要以提升学生的单片机C语言程序的编程能力和单片机项目的编程环节的实践能力为目的。该门课程的教学模式相对于其他基础学科的教学模式有了一定的改善,但仍然存在一些比^明显的问题,如学生主动学习的积极性不高,存在部分学生不能够完成课上任务,学生课后学习效率低,无法透彻的理解课程的内容等问题。
如何提高学生的学习主动性和积极性,提升该门课程的教学效果,提升学生的学习效率,这是目前所面临的问题。想达到有效的教学就需要兼顾教学的每一个环节,即教学目标、教学行为、教学评价、教学目标这一循环的过程[1]。
二、BOPPPS模式
BOPPPS该模型的构建主要是将教学的过程划分为引入、目标、预评价、参与学习、后评价及小结6个部分[2]。其中引入则是课程的开始,一堂课程有效而优秀的引入则可以吸引学生的注意力,能够帮助学生对即将要学习的内容产生学习的兴趣;目标为该门课程的教学目标描述阶段,在该部分教师则是要准确清楚地描述该课程的学习目标,确定学习的方向,并专注于该目标。教学目标则是由认知、情意及技能三个部分构成,教学的过程中,教师要清楚准确地传达教学目标。预评价是在完成学习目标介绍之后对学生进行摸底测试,通过学习之前的摸底测试可以了解学生目前的能力,主要用于调整教学内容的深度和进度。参与学习则是教学过程的主要阶段了,教学的过程中通过教师与学生之间、学生与学生之间的互动,要求学生都要参与其中,成为课堂的参与者。在该部分完成之后,则是课程的课后评价,该部分可以帮助教师了解学生的学习效果是否与预期的教学目标相符;小结则是该教学模式的最后一个环节,在该环节教师整合课堂内容,再次强调学习目的,总结学习效果。
三、BOPPPS的单片机C语言教学模式设计与探讨
BOPPS教学模型描述了课堂教学的整个流程,有利于学生明确学习目标,主动参与学习。将单片机C语言程序设计的课程引入该教学模型,对目前该门课程存在的问题进行改善,使该门课程从以教师为中心转变为以学生为中心,并根据单片机C语言程序设计的实际情况,将BOPPPS教学模型延长至课程前后;课程开始前要求学生进行已学知识的复习和新内容的复习,并完成课前的测试,使学生能够巩固已学知识和新课堂的基础知识;在课堂上完成课堂引入、参与学习、课堂小结和课后测试的教学过程,课堂进行作业和测试的反馈。其具体的流程如下图1所示。
(一)课前预习的引导
在学生的课前预习阶段,将课前预习的具体目标、相关的要求及相关资料提供给学生,而学习资料则包含文档、视频、论坛、相关的子项目和将要应用到的相关技术等,让学生通过观看视频、阅读文档或者通过论坛和实际的项目的实践等形式完成预习,并通过提交简单的预习作业或者完成简单的项目中的子程序的编写等形式对课前预习的效果进行检查,完成该环节课前预评价。通过课前的预评价,教师了解到学生的预习情况和存在的问题,对教学内容做出适当的调整。为了促进学生预习的主动性和积极性,可以将学生的预习情况纳入学生平时成绩的考核,促使学生能够主动的完成课程的预习,了解到课程学习的基础知识,为更好的课堂教学做好准备。教师可以通过课前的预测了解学生的自身知识掌握程度并据此调整授课的内容深度和进度。
(二)课程引入的加强
BOPPPS教学模型注重课程的引入,好的引入将可以快速地提升学生的学习兴趣,使学生更快地进入学习的状态,从而高学习效率,提高学生的学习主动性和积极性。教师可以根据课程的特点采取多种引入方式,如问题导入,案例分析、项目介绍、视频图片等方式的导入。单片机C语言课程的引入有案例、知识的前后关系及现实生活所涉及的控制等为引入方式,如案例引入,就是通过实际的或有趣的案例引入课堂知识。
(三)学习目标的明确
课堂学习目标在课堂的教学过程中发挥到方向性的作用,它引导着教学过程,又是后期课程评价的基线。学习目标确定了要求学习者在一定条件下通过课程学习获得的可观察或可量化的新的知识、技能及情感。
而依据Bloom提出的层次理论,可以将每次课设计成具体可检测的学习目标[3],如在对于单片机C语言中断应用介绍部分,可以将其细化如下表1所示。
(四)学习的多样化
该环节中学生是学习的主体,学生在课堂的活动中积极地参与课程活动,而不是被动地听教师讲授。学生主动地参与到讨论中,发表见解,可以提升学生的学习兴趣。参与式的学习加强了教师与学生之间的互动,也加强了学生与学生之间的互动。
在单片机C语言程序设计的该门课程当中,可以根据教学内容的差异采取多种方式让学生参与的学习模式,让学生在课堂上提出自己的问题,由传统的教师提问转变为学生提问的方式,将问题的提问的主动权转给学生,有助于提高学生的学习积极性和思考问题的主动性。可以通过多种方式,引导学生主动参与学习,成为学习的主体,而教师扮演着引导者,激发学生的学习积极性、团队协作能力、提升学生的竞争意识。
(五)课堂的反馈
课堂后测是在教学活动环节的后期开展的,该环节主要为了了解学生的学习成效是否达到了预期的教学目标而进行的;后测根据课堂的教学目标,从而采取不同的形式。单片机C语言程序设计在完成教学后,根据课堂的教学目标,可以进行简单的测试,对需要掌握和记忆的知识点,可采用做题的方式;而对于要求应用的、实践编程,则根据教学目标要求,要求学生完成一个简单的相关程序设计。课堂小结占用的时间不多,在该阶段,除了总结教学内容外,更需要对前后所学的知识进行关联,建立知识的体系结构,可以采用目前比较流行的思维导图来完成该部分的设计。伴随着课程的不断开展,学生可以通过该思维导图,对整个课程的知识体系有更为直观的认识。
(六)课后的反馈
课后的反馈主要就是以课后作业布置的形式开展,根据课程的开展情况,分层次地进行作业的布置,在完成章节部分的知识点学习后,作业围绕某个知识点的练习,而完成了整个章节或课程单元的学习后,则要求学生能够综合使用所学的知识系统的完成作业,并根据实际的情况要求学生单独或分组完成一个项目程序的设计。
由于在课堂开展的前期已经将教学目标进行详细的量化,因此也方便在后期的师生对教学目标进行评价,评价的形式可以多种多样,有课后交流、作业、测试等方式。
四、结语
将BOPPPS教学模式引入,对原有的单片机C语言程序设计的教学模式进行探讨,将课堂的教学延伸至课前课后,引导学生通过课前的预习、课内的参与学习、课后评测的完整学习过程,充分地掌握学习内容。在该环节当中,还有很多部分仍需完善如课前引导的资料方式的完善,参与式学习的方式方法需要进一步的探索,这是后续需要完善的具体目标。
【参考文献】
[1]吴为团, 郑海燕,高晓明,等.计算机课程任职教育教学模式改革研究与实践[J].当代职业教育, 2010(5):29-31.
关键词:计算机专业;课程设计;课程群
中图分类号:G642 文献标识码:A
1引言
计算机专业是一门实践性非常强的专业,不仅要求从业者具有扎实的理论知识,更要求从业者具有较强的应用能力和实践动手能力。基于此,我国各高校在制定计算机专业的教学培养方案时都配置了一定数量的实践环节,希望以此加强学生在程序设计方面的实践能力,但效果并不理想。
教育部高教司2006年一项调查显示,自2002年以来,高校计算机专业大学生初次就业率连年下滑,成为大学生就业市场上一大问题,并受到社会各方面的普遍关注。
在计算机人才供需两旺的情况下,计算机类专业毕业生就业出现困难,其实质不是人才过剩,而是高校教育和企业要求不匹配,由此造成大量计算机专业毕业生难以胜任企业工作需求,进而出现毕业生难以就业,企业适用人才难求的局面!
这种局面的产生,其主要原因在于长期以来,实践教学在高校课程体系中一直处于从属的位置,传统的计算机专业高等教育注重理论型、研究型人才培养,但在应用型人才的培养上存在层次单一,教学内容滞后,理论与实践严重脱节的情况,课程设置陈旧,设施落后,大多数毕业生理论有余,岗位需要的专业应用技术相对不足。
要想改变这种现状,计算机专业教育就应该提倡素质教育,注重能力培养,提高高校实践教学的质量,培养学生的实践能力和创新能力,从而提升学生就业力。
2现状
实践性教学是指为配合理论教学,培养学生分析问题和解决问题能力,加强专业训练和锻炼学生实践能力而设
置的教学环节。目前,高校计算机专业现有的实践教学环节包括课程基础实验、课程设计、实习和毕业设计或毕业论文环节。
基础实验属于基础性实践活动,着眼于学生的基本动手能力训练,帮助学生理解、掌握基本原理,学习和掌握计算机基础实验操作技能、实验方法、计算机常用软硬件的熟练使用、编程与设计等。
课程设计属于提高性实践活动,着眼于学生的综合应用知识能力训练,针对特定问题进行设计、实现,从而实现一个小型综合性系统,帮助学生提高综合应用专业知识、解决实际问题的专业技术能力。
实习一般分为专业认识实习、操作实习、生产实习和毕业实习四个阶段。他主要是针对不同专业特色、不同年级学生专业需要开设的具有针对性的实践活动,有助于学生系统理解本专业知识,提高综合应用能力。
毕业设计与毕业论文是对学生整个本科阶段学习情况的综合检验,是学生综合能力的体现。
计算机专业的专业课程通常都设置基础实验,学生在基础实验中按照教学内容,分章节进行基础技能的训练。但由于各章节相对独立,学生验证的只是一个个独立章节的知识,而不能从总体上掌握课程内容,更无法综合运用所学知识解决应用问题。
课程设计主要是针对专业的核心课程,如“数据结构”、“面向对象程序设计”、“数据库原理”、“软件工程”。这些课程都设置相应的基础实验环节。课程设计的主要目的是在基础实验验证所学的基础上,培养和提高学生的综合运用能力。课程设计的时间通常为一周,设置在学期末进行;设计内容主要针对课程独立进行,常见的方式是由教师命题,学生自由选题,针对特定问题进行设计、实现,从而实现一个小型综合性系统。
计算机专业的课程相关性较强,实现一个系统常常需要几门课程的综合知识。而课程设计往往是随课程学期进行的,相关课程被安排在不同学期,学生在短时间内无法充分领会和掌握相关知识而导致时间浪费,达不到预期要求,效果不甚理想。
近年来,随着各高校教学的改革,实践教学的重要性得到重视。但由于实践教学理念落后,长期以来实践教学仅被看作是一种辅教学,在知识和能力的培养中,侧重于知识;在思维能力与动手能力的培养中,侧重于思维能力。这种目标定位造成了目前实践教学重实践结果,轻实践过程;重知识巩固,轻能力培养的状况。
课程设计是计算机专业重要的实践教学环节,对于培养和提高学生的综合技能至关重要。本文针对计算机专业课程设计的现状,经多年的探索和改进,实行了一种基于课程群的集中实践模式――专题训练。该模式主要从课程群组织规划、课程群实践管理以及实践验收几个方面进行了新的尝试和实践。这种模式兼顾课程间的连续性和应用性,从实际应用考虑制定实践方案,针对性强,组织合理,教学效果明显。
3基于课程群的集中实践模式
基于课程群的集中实践模式将相关课程尽可能安排在同一学期或相邻学期,保证学生在融会贯通课程体系的基础上进行综合应用。实践活动时,由相关课程的多位老师同时指导,实践时间通常是2~4周,保证学生在知识连贯性、指导多元化、时间充分的条件下锻炼和提高自身的实践动手技能。
3.1课程群组织规划
课程群组织规划针对计算机专业的主干课程进行,充分考虑课程的连续性和应用性:
(1) 将“程序设计基础”、“数据结构”、“面向对象程序设计”、“Java程序设计”、“C#程序设计”等语言类课程划分为一个课程群,学生在系统了解面向对象程序设计、数据结构的理论知识基础上,通过C、Java、C#语言的系统学习,在第七学期开展为期两周的语言类专题训练,重点训练学生的程序设计能力。由相关课程的老师集体指导,保证理论和编程提高的有效性。
(2) 将“数据库原理”、“高级数据库编程”等数据库类课程划分为一个课程群。学生在系统了解数据库应用的理论知识基础上,通过具体数据库平台的应用技术学习,在第七学期开展为期两周的数据库类专题训练,重点训练学生的数据库的应用能力。由两门课程的老师集体指导,设计、实现一个基于特定平台的实用的小型管理信息系统。
(3) 将“软件工程”、“软件测试”、“信息系统案例”、“软件项目管理”等工程类课程划分为一个课程群。学生在系统了解软件工程的理论知识基础上,通过软件测试、信息系统案例软件项目管理等实用类课程的应用学习,在第七学期开展为期两周的软件工程类专题训练,重点训练学生的软件分析、设计、实现、测试能力。由相关课程的老师集体指导,严格按照软件系统的用户需求分析、方案设计、系统详细设计、系统实现和系统测试等几个步骤来规划、设计、实现一个软件系统,并书写相关文档,实现理论和实践的高度结合。
(4) 将“微机原理与接口”、“嵌入式系统概论”、“嵌入式操作系统”、“嵌入式程序设计”等硬件应用类课程划分为一个课程群。学生在系统了解计算机硬件接口和嵌入式应用原理的基础上,通过硬件编程的应用技术学习,在第七学期开展为期两周硬件应用类专题训练,重点训练学生对计算机硬件和嵌入式应用的分析、设计和实现能力。本课程群集中实践可以针对嵌入式硬件实现,也可针对微机硬件接口实现。
基于课程群的集中实践专题训练统一安排在第七学期,目的是将大学四年所学的理论知识系统化、分类化、实践化,提高学生的实践技能,提高学生的就业储备值。考虑到此时学生的就业需求和企业需要,也可将四个专题训练进行有机整合,或者和企业定制、企业实训课程进行学分置换,方便校企合作。
3.2课程群实践管理
以下从实践组织,实践管理,实践设计等几个方面进行具体阐述。
(1) 实践组织
专题训练的设计题目由指导教师结合自己的科研项目以及课程内容给出,并公布于校园网。实践之初,学生根据学习兴趣和选题难度自行选题并组成开发团队小组。实践过程中,学生统一在专业实验室集中实践,由相关课程的多名教师带队指导,每天都有教师值班答疑。集中进行专业训练既方便学生讨论、交流、答疑,又方便指导教师充分地把握实践情况,并给予具体指导。
(2) 实践管理
专业实验室全天开放,每天八小时工作制,晚上可以加班加点,专心设计项目。
研发阶段模拟软件企业的研发流程。研发时,每个学生研发小组安排组长一人。组长组织成员进行项目调研、模块划分与任务分工、接口的确定、进度的监督与协调、集成测试等。
实践期间安排不定期抽检和中期检查环节。指导教师按照专题训练最初制定的任务要求及日程安排检查实践进展,针对学生研发过程、研发进度、研发难题及研发组织等给予监督与指导,一旦发现偏差,及时纠正,将错误消灭在萌芽状态。抽检和中期检查结果以文档形式留存,作为成绩考核的一部分计入总成绩。
实践期间及时进行项目总结。每天规定一个时间,将同组学生集中起来,针对当天完成的任务进行总结,交流自己的想法,提出存在的问题,集体讨论,这样就能够做到日日有收获,天天有提高,从而锻炼自己的实战水平和组织经验,小组项目小结以日志的形式记录,开发结束后整理写入实习报告。
(3) 实践设计
实践任务采用项目驱动,实践题目一般是指导教师横向或纵向科研项目,或使用某企业已完成的项目案例。这样,学生在校内既可进行初步的客户调研和需求分析,同时也具有较强的推广价值,为将来的职业奠定基础。具体实施如下:
专题训练主要分为三个阶段:
第一阶段是答疑式讲座。由于专题训练集合了相关的几门课程,有的课程是以前学过的,学生会遗忘。为了使学生更好地理解和掌握任务的基本原理以及后续的应用技术,指导教师在专题训练之初会采用答疑讲座的方式,详细介绍任务的基本原理、企业软件项目开发的基本流程、开发规范和开发过程中要注意的事项。
第二阶段是案例分析。针对专题训练给出的项目题目,提取几个有针对性的案例进行分析讲解,使学生了解软件系统生产的基本过程、方法及开发技术。
第三阶段是实际研发。让学生自己动手综合运用前面指导老师所讲到的知识,完成一个中小型项目的开发任务。
3.3课程群实践验收
专题训练最终成果包括系统软件、系统技术文档以及用户操作手册。
考核是检验实践成果的主要手段,科学、合理的实践考核对于促进教学质量,全面把握学生的学习效果,提高
学生的学习积极性、主动性,改进教师的教学方法都有着重要的意义。考核也是一个较难把握的环节,既要考核学生的独立编程能力,也要考查其团队协作精神,同时还要考虑其组织能力、表达能力、文档编写能力、纪律性等内容。为了客观科学地评价学生的实际效果,我们实行分阶段考核,各阶段成绩综合在一起构成最终集中实践成绩。成绩由平时表现、中期检查(抽检)、实践答辩和实践报告四部分组成。其中,平时表现占总成绩10%,中期检查(抽检)占总成绩10%,实践答辩占总成绩40%,实践报告占总成绩40%,汇总后总成绩以等级表示。
中期检点考察其开发进度,内容包括调研程度、开发平台及环境的选取是否合理、需求分析是否充分,开发进度安排是否合理、是否有延迟等。
答辩重点考察软件功能、实现的难易程度、技术含量,界面友好性等。具有创新性的作品,适当加分。答辩流程为组长汇报软件的设计思想、主要技术、任务分工等情况,并演示软件,指导教师提问各位成员所设计的模块。老师根据项目完成效果确定这个组的等级,按照工作量大小再确定组内各成员的等级。
实践报告以小组为单位上交,重点考察其规范程度,文档是否齐全,书写是否认真等。
4结束语
实践教学是高等学校创新教育的一个重要环节,实践教学体系的改革不容质疑。计算机专业课程设计作为实践教学的一个重要环节,是在基础实验基础上的一个提高实践环节。经过实践证明,将主干课程集合成群,按课程群设计集中实践,并辅以严格的组织和管理,学生的计算机应用、软件开发等综合技能普遍提高,实践效果明显,保证了实践环节的教学质量。
参考文献:
[1] 张建臣. 高等院校计算机学科实践教学的探索与改革[J]. 现代企业教育,2006(21):17-18.
[2] 黄传河,黄建中,吴黎兵. 计算机专业实践教学体系与方法设计[J]. 计算机教育,2007(22):87-89.
[3] 黄贤英,李玉桃. 构建面向岗位的计算机专业教学体系和教学模式[J]. 重庆工学院学报,2007(11):175-177.
[4] 郑光勇,徐雨明,眭仁武. 计算机专业课程体系设置与教学改革[J]. 大众科技,2006(7):146-147,149.
[5] 万臣,谢芳,胡泉. 计算机专业程序设计课程群的建设与研究[J]. 合肥工业大学学报,2009(1):33-36.
The Exploration and Realization on Centralized Practical Mode Based on Course Group
LU Ying, TANG Xiao-jun
(Dalian Polytechnic University, Dalian 116034, China)
关键词:指针;C语言;实验;数据结构
中图分类号:G642 文献标志码:A 文章编号:1674-9324(2014)04-0110-03
一、引言
《数据结构》作为实践性很强的计算机专业的基础课,教学中必然离不开实践。针对《数据结构》的课程设计实践不仅可以帮助学生巩固和加深对课程内容的理解,更重要的是可以进一步锻炼程序设计的技能[1]。C语言是数据结构实验中重要的程序设计语言,指针是C语言中一个非常重要的概念。在C语言中,指针的应用非常灵活,对于程序设计初学者来说比较难掌握,更谈不上灵活合理的应用。《数据结构》中(注:文中的讨论围绕严蔚敏老师的《数据结构》C语言版教材[2]),为了实现数据的存储结构,指针在线性表、树和图的存储中都有重要的应用,可以说,数据结构的实验绕不开指针的应用,如果学生掌握不好指针,是无法进行数据结构实验学习的。
教学中注意到,学生的主要问题是对指针的本质缺乏清晰的理解,知其然不知其所以然,导致在应用时只会依葫芦画瓢,不会灵活应用。针对学生理解和应用中的难点问题,剖析了指针的本质,以此为基础,讨论了指针的使用、指针和数组及指向函数的指针几个问题,希望能够加深学生对指针的理解,并在数据结构的实验中灵活应用。
二、指针
1.变量和数据类型。变量和数据类型是C语言中的基本概念,是否能理解它们的本质,对后续指针概念的理解非常重要。但是,由于它们是最基本的东西,教师和学生都认为很好理解,不是很重视。因此,学生对它们的理解往往流于表面,产生模糊的认识,如:变量是会变化的量;对变量名和变量的关系,变量和数据类型的关系等认识不清。
对变量的理解应该强调变量最本质的意义:内存中的一块存储空间,即所谓变量就是一块存储空间,如图1所示。
围绕对变量本质的理解应该强调几点:①一块空间(变量)具有两个特征,一是这块空间在内存中的起始地址(计算机内部16进制地址表示不便,本文中用3位10进制数示意),表示这块空间的开始,二是从起始地址开始的空间大小,这两个特征一起确定了一个变量;②作为内存的一块存储空间,自然可以存储不同的值,会变化;③变量的声明是提出分配存储空间的要求,没有分配空间,当然不能存值,不能使用;④为了在程序中方便使用变量,变量可以取一个名字,即变量名。
变量都有数据类型,从存储空间分配的角度看,数据类型的本质是对分配空间大小的约定。要给一个变量分配存储空间,涉及两个东西:分在那,分多大。分在那由当前内存情况确定,而分多大则由变量所属的数据类型确定,如int型就分4个字节大小。
2.指针的概念。指针是C语言中的派生数据类型,如int *p,声明了一个由整型派生的指针变量p,如图2所示。学生在为什么要用指针、指针变量和原类型之间是什么关系等问题上往往产生混淆,不能够清晰理解。
对指针概念的理解应该强调几点:①指针变量也是变量,声明了指针变量后同样需要给该变量分配一块存储空间,只是该空间存储的内容有点特殊,是一个地址。②获取数据存储空间的基本方式有两种,一是在程序的数据说明部分进行声明,这样,程序执行时存储空间已经预先分配,并建立了变量名和存储空间之间的映射,可称为静态分配。二是在程序执行的过程中,通过申请(如malloc函数)获得存储空间,可称为动态分配,这样的空间无法给予变量名,存取这样空间的唯一办法只能通过该空间的地址,即指向该地址的指针来存取。如图2中圈1所示,malloc函数申请了一块大小为4个字节的空间,空间起始地址是300,为了在后续程序中使用这块存储空间,该地址赋值给指向整型的指针p,p中存储的内容变为300。③应该强调,作为派生类型,指针变量也是有数据类型的,其数据类型是指针变量所指向的存储空间大小的约定。如图2中定义的p是一个指向整型的指针,强调这一点有助于学生对指针应用的理解。例如,表达式中,出现在指针变量前的*称为指针运算符,如赋值语句*p=21,其意义是给p中地址所指向的存储空间赋值,图2中,p中存有地址300,确定了被赋值空间的起始地址,而p的类型-整型,确定了这块空间的大小,即*p确定了一块从300开始,长度为4的存储空间。变量的本质是一块存储空间,那么反过来说,一块确定的存储空间就是一个变量,*p确定了一块存储空间,它等价于变量,给*p赋值等价于给整型变量赋值。
三、指针的应用
1.指针和数组。C语言中,数组名代表数组的起始地址,是一个常数,可以看做一个指针。《数据结构》中,线性表的顺序映像存储结构是通过动态申请的数组实现的,设线性表为a1,a2,…,an(n=20),数据元素类型为整型,其存储结构的定义如下所示:
#define L_SIZE 20
typedef struct{
int *elem;
int length;?摇?摇?摇 /*已存数据的个数*/
int listsize; ?摇 ?摇 /*数组容量的大小*/
}Sqlist;
上述代码主要定义了结构体数据类型Sqlist,该结构体类型中包含3个域:elem,length和listsize,其中elem是一个整型的指针变量,用来指向申请存储空间的起始地址。类型定义后可以声明该类型的变量,如Sqlist L;线性表的存储空间(数组)需要申请,如图3所示。
malloc函数申请了一块大小为80个字节的存储空间,该空间的起始地址假设为100,函数返回后,地址100被赋值给整型的指针变量L.elem,即指针变量L.elem中存有地址100。
学生对静态数组的使用相对熟练些,但往往不习惯动态申请数组的使用,下面以线性表的遍历为例来说明一下其使用方式。动态申请数组中遍历的实现有两种常用方式:一是把指针当做数组名来使用。数组名是地址,可以看做指针,反之,指针同样能够看做是数组名。遍历的代码可以写为:
for(i=0;i
这里要注意理解中括号[ ]的意义,中括号本质上是运算符,它的意义是执行操作L.elem+i(这里要关注指针的类型,即不同类型的指针加i,计算结果是不同的),找到存储ai+1这个整型数据的4个字节空间的起始地址,随后根据指针的类型(确定大小),存取这4个字节的存储空间。
二是通过指针来进行遍历。遍历的代码可以写为:
for(p=L.elem;p
整型指针p首先被赋值L.elem,图3中是100,这时p指向数组中第0号单元的起始地址,通过指针运算符*p存取从100开始的4个字节空间,即数组中第0号单元。随后,通过p的自加运算,指针p后移4个字节(p是整型指针),依次对数组中所有元素进行遍历。从结果上来看,代码(1)和代码(2)是完全等价的。
2.链表。线性表的非顺序映像存储结构是链表实现的。定义链表结点(结构体),动态申请结点存储空间,线性表每个数据元素存储在一个结点中,通过指针描述数据元数之间的关系,其结点的定义如下所示:
typedef struct LNode{
?摇int data;
?摇struct LNode *next;
} LNode,*LinkList;
上述代码主要定义了结构体数据类型LNode 和指向结构体的指针类型LinkList,该结构体类型中包含2个域:存储数据元素的域data和指针域next,next用来指向本结点数据元数在逻辑结构中的后继,链表如图4所示。
仍以线性表的遍历为例来说明其使用方式,利用指针p来进行遍历,代码可以写为:
p=head->next;
while (p) {
对数据元素p->data进行处理;?摇?摇?摇(3)
p=p->next;}
p被赋值p=head->next,指向首元结点,随后通过循环中p=p->next语句,p依次指向后继结点,直到链表结束。这里要注意对->操作符的理解,当指针p指向一个结构体存储空间时,如果需要存取结构体中的某个域,可以使用“p->域名”的方式,如p->data就是存取该结构体中的data域;另有一种等价的方式“*p.域名”,如*p.data,*p确定一块结构体空间(结构体变量),用“.”操作符存取结构体变量的某个域。
3.指向函数的指针。函数载人内存时,必定占有一块存储空间,可以定义指向函数的指针,通过指针来调用函数,例如:
int (*p)( );?摇?摇?摇/* 定义了一个函数指针,其所指函数的返回值为整型*/
p=fun;?摇?摇?摇?摇?摇?摇?摇/*设int fun(int, int);*/
(*p)(a,b)?圳fun(a,b)
首先定义了一个指向函数的指针p,随后p被赋值函数名,即让p指向函数fun,p指向fun后,可以通过指向函数的指针调用函数,其效果和通过函数名调用是等价的。应该注意到,这样用法毫无价值,能通过函数名调用,何必还要间接用指针调用。因此,指向函数的指针一般用作函数的形式参数,例如:
Status Sub(int e);
Status Add(int e);?摇?摇?摇/*返回值为Status的两个函数*/
void Preorder(BiTree T,status(*visit)(int e)){ ?摇/*遍历二叉树的函数*/
……….
(*visit)(a);?摇?摇/*通过指向函数的指针调用函数*/
………
}
Preorder(T,Sub);
Preorder(T,Add);
假设有数据元素为整型的二叉树T,Preorder是实现二叉树的先序遍历的函数。上述代码中,首先给出了两个函数返回值为Status的函数原型,设Sub是对整数进行减处理的函数,Add是进行加处理的函数。那么,Preorder(T,Sub)调用时,函数名Sub作为实参传递给形参visit(指向函数的指针),则在遍历过程中(*visit)(a)所调用的函数是Sub;同理,Preorder(T,Add)调用时,(*visit)(a)所调用的函数是Add。这里应该强调,为什么要这么做?从上例中看,对二叉树的遍历过程是一样的,通过两次调用中visit所指的函数不同,对二叉树T中数据元素的处理不同,一次是减,一次是加。指向函数的指针带来的好处是,如果对数据元素的处理有新的变化,如增加乘的处理,仅需要编写乘的函数Mul,随后调用Preorder(T,Mul)就可实现对二叉树中数据元素的乘处理,不需要改变Preorder函数。这样的程序结构非常有利于提高程序的可维护性。
四、小结
作为实践性很强的计算机专业核心课程,《数据结构》课程的实验环节非常重要,指针的灵活应用是课程实验中的难点。学生对指针了理解往往流于表面,只会模仿性应用,不能深入理解和灵活应用。文中,我们结合实际的教学经验,总结了指针中的几个学生不容易掌握的问题,并分析讨论了教学中的要点。通过多年的教学实践,对学生《数据结构》课程的学习和提高编程能力是有帮助的。
参考文献:
[1]陈越,何钦铭,冯雁.“数据结构”综合性课程设计教学探索与实践[J].计算机教育,2008,(8):54-55.
[2]严蔚敏.数据结构(C语言版)[M].北京:清华大学出版社,2009.
关键词:BOPPPS;java;参与式学习;教学目标;教学模式
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)01-0165-03
A Research of Teaching Mode of Java Language Base on BOPPPS
YAO Xiao-ling
(Information School, Linyi University, Linyi 276005, China)
Abstract: In View of the practical problem in Java language learning this paper discusses the teaching mode of java language with the BOPPPS mode . That extends the class teaching to extracurricular learning and explores the teaching mode of students' active participation in learning.
Key words: BOPPPS; java; Participatory learning; teaching goal; teaching mode
1 概述
java语言程序设计是信息学院的一门专业基础编程课,目前该课程采用了机房授课,项目驱动,讲练结合的教学模式,课程以提升学生编程能力、实践能力为教学目的。虽然课程的教学模式已经进行了一些改善,仍然存在学生主动学习积极性不高,部分学生无法完成课上任务,学生课下学习效率不高,无法透彻的理解课程内容等问题。
BOPPPS模型是起源于北美的一种教学模式,该模式构建了具体的教学流程,强调激发学生的学习主动性,提高学生的学习参与度,是目前较为先进的教学模式,依据这个教学模式,对Java语言程序的教学模式进行进一步的改善,提升学习效果和学习效率。本文主要介绍BOPPPS教学模型,在此基础上探讨基于BOPPPS模型的java课程的教学模式。
2 BOPPPS教学模式
BOPPPS 教学模式是教师进行课程设计的一种模式,它起源于北美地区,是目前公认的较好的教学过程模型,该模型强调学生全方位主动参与学习而不仅仅是被动学习,并且重视及时获取学生的反馈信息,以此调整后续教学活动,从而帮助学生成为学习的中心,主动参与学习,激发学生的学习兴趣。
该模型根据构建主义理论将教学过程划分为引入(Bridge-in)、目标(Objective)、预评价(Pre-assessment)、参与学习(Participatory learning)、后评价(Post-assessment)和小结(Summary)6个部分[1]。 BOPPPS代表了这六部分的英文首字母,其中B:引入(Bridge-in)为课程的开场 ,优秀的引入可以吸引学生的注意力,帮助学生对即将要学习的内容产生兴趣。目标(Objective)为课程的教学目标描述阶段,在此部分教师要清楚描述课程学习目标,使学生明确学习的方向,并专注于该目标。教学目标由认知 、情意及技能三个元素组成,教师应清楚传达教学目标,如课程的重点知识、学习价值,以及学习技能,让学生明确掌握学习的方向。预评价(Pre-assessment)是在完成学习目标介绍之后对学生进行的先测, 通过先测可以了解学生目前能力,调整教学内容深度和进程。参与学习(Participatory learning)为教学过程主要阶段,通过教师学生之间或者学生之间的互动要求学生都要参与学习,成为课堂的参与者。在学习阶段之后,要进行课程的后评价(Post-assessment),该部分可以帮助教师了解学生的学习效果、是否达到预期的教学目标等。针对不同的课程内容,可以采用小测验、案例讨论等多种不同的评量方式。小结(Summary)为模式最后一个部分,此阶段教师整合课堂内容,再次强调学习目的,总结学习效果。
3 基于BOPPPS的java课程教学模式探讨
BOPPPS教学模型描述了课堂教学的整体流程,有助于学生明确学习目标,主动参与学习。借鉴BOPPPS教学模型,对java语言程序设计课程教学模式进行改善,使课程教学从以教师为中心转变为以学生为中心,并根据Java课程实际情况,将BOPPPS教学模型延长至课前、课后,在课前要求学生预习,并完成前测,使学生了解课堂内容的基础知识,并进行简单测试,在课堂上完成课堂引入、参与学习、课堂小结和课堂后测的教学过程,课堂进行作业和反馈。具体的过程以图1为例。
图1
3.1提供预习资源,强调课前预测
课前预习,也是课程教学的一部分,传统教学也强调课前预习,但只是强调预习的内容,一般不明确预习的目标,对预习的效果的反馈不重视,因此对学生预习情况掌握不清晰,从而影响教学目标和效果。
BOPPPS模型虽然虽然仅规范了课堂教学的规范,在实际教学过程中,课前和课后同样重要,课前预习做好了,才能在课上对课程内容进行深入的讨论和学习,同时由于课堂时间有限,不可能在课堂上对每个学生的进行预评价,因此,为了使学生的参与学习取得更好的效果,把模型的预评价部分放到课前,与课前的课程预习相结合,使课前预习的效果更好。
在课前预习阶段,首先将课前预习的具体目标和相关资料提供给学生,学习资料包括文档,视频以及一些优秀的在线学习资源如慕课网等,让学生在课前通过观看视频、阅读文档或者浏览网页等形式完成预习,并通过提交一些简单的预习作业或者学习评测等形式在课前对预习效果进行检查,完成课前预评价。通过课前预评价,使教师了解到学生的预习情况和存在问题,对教学内容做出适当的调整。为了促进学生预习的积极性,将学生预习情况作为平时成绩的组成部分,促使学生主动完成预习,了解课堂学习的基础知识,为更好地进行课堂学习做好准备。教师可以通过课前预测来了解学生的自身程度并据此调整授课内容和进度。
3.2 强调引入环节,提升学生学习兴趣
BOPPPS教学模型注重课程的引入,课堂引入虽然仅占课堂教学的几分钟,但是好的课程引入可以快速提升学生的学习兴趣,清除其他课堂的延续思维,使他们迅速进入新的学习情境中去,从而提高学习效率,为学生的主动学习打下基础,教师可根据课程特点采取多种引入方式,如问题导入,案例介绍导入,视频或者图片导入等。
Java语言课程的课堂引入有案例、知识前后关系以及现实生活的生活常识等为引入方式,案例引入,通过实际或者有趣的案例引入课堂知识。例如在开始Java面向对象部分时候,以目前比较热门的综艺节目中国好声音的案例引入,要求学生思考如何编写中国好声音程序,逐步引入对象、类、封装的概念。另外一种是根据学习内容的前后关系,承前启后引入教学目标,例如在完成类的封装后,在学习继承知识点的时候,以类之间的关系引入,要求学生思考富人类、富一代类、富二代类之间的关系,引入继承,从而建立学习内容之间的关系体系。
3.3 细化学习目标,强调教学目标的明确性
课堂学习目标在课堂教学中能够发挥重要的作用,它引导着教学过程,同时它又是后期的课程评价的基线。学习目标确定了要求学习者在一定条件下通过课程学习获得的可观察或可量化的新的知识、技能及情感[2]。
2005 年,Bloom 按照人的认知层次将学习目标由低到高逐渐划分为记忆(remembering)、理解(understanding)、应用(applying)、分析(analyzing)、评估(evaluating)、创新(creating)6 个层次[3]。可以根据具体课程内容,按照上述6 个层次的学习目标来给出课堂具体的学习目标,提高目标可操作性。
BOPPPS模型强调学习目标的订制,强调学习目标明确性和可检测性,根据Bloom的层次理论,分别对每堂课设计具体可检测的学习目标,例如在对于Java的类介绍的部分,根据Bloom理论,细化课堂的教学目标,具体见表1。
表1 Java 类设计的教学目标
3.4 以多种形式组织学生参与学习,引导学生主动学习
在参与式学习中,学生是学习的主体,学生在课堂上积极参与与课程活动,而不是被动的听教师讲课。学生主动参与讨论、发表意见,提升学生对学习的兴趣。参与式学习鼓励教师与学生之间的互动,另外也鼓励学生之间的互动。在这个阶段,教师作为课堂的引导者,要提升学生在课堂内的参与积极度,引导学生主动学习。参与式学习经常将学生分成小组来讨论教材中的问题,或者在课堂留出时间让学生进行反思。此外,亦可鼓励学生提出自我思考问题,或者设计模拟情境,将课堂参与者都拉入互动的情境中。
在Java语言程序设计这门课程中,根据教学内容采用多种方式推进学生参与学习模式,例如在java基础语法知识的介绍,要求学生在课堂上提出自己的问题,将传统的教师提问学员回答的模式,转变为由学员提问教师或者学生解答的方法,将提问的主动权交给学生,有利提高学生的学习积极性。在进行项目学习时,课前将学生分组,并且项目要求分给各组,两组、三组学生设计同一个项目,然后在课堂上由各组提出项目的设计方案,让学生对其进行讨论,并给出评价意见,引导学生思考设计方案的优缺点,最后进行自我完善。另外对于相对简单的语法知识的讲解,还可以安排学生进行讲解,教师负责引导。通过以上多种方式,引导学生主动参与学习,成为学习的主体,而教师作为课堂的引导者,激发学生主动学习的积极性,提升学生的协作精神和竞争意识。
3.5课堂进行简单测试,课堂小结紧扣教学目标
课堂后测是在课堂教学后期进行的,在课程学习完成之后,为了解学生的学习成效、是否达成教学目标而进行的,后测根据课堂教学的目标,可以采用不同的形式。Java语言程序设计在完成教学后,根据课堂的教学目标,课堂进行简单测试,对于一个要识记、理解的概念,例如什么是对象和类,可以采用选择题的方式,对于要求应用的、实践的编程,例如编写一个类,则根据教学目标, 要求学生编程完成一个基本类设计,对于项目的讨论,则要求学生简单总结自己项目的优缺点。由于课堂时间有限,课堂后测所占的时间不能太长,只能是对学生学习情况进行基础评价,测评所设计的题目比较基础,符合教学目标即可。
对于课堂小结,占用时间不多,在这个阶段,除了总结教学内容外,更注重和以前学习知识建立关联,建立知识体系结构,采用目前比较流行的思维导图来完成设计。随着课程的继续,学生通过该图,可以对整个课程的知识体系有一个直观的认识。
3.6课后作业分层次,教学评价给反馈
课后作业是学生检验自己学习情况的主要方式,对于课后作业,根据课程进行情况,分有小作业和大作业,在仅完成章节的部分知识点的学习后,作业为围绕某个知识点的练习题,而在完成一个章节或者课程单元的学习,则要求学生综合使用所学知识完成较为复杂的作业,并根据情况要求学生单独或者分组完成,例如在完成Java的类设计的学习,要求学生完成一个词典程序,对于布置作业,考虑学生的实际水平,分出难度层次,例如在文件读写部分,要求学生遍历某个文件夹下的所有文件和子文件夹,学生可以根据情况选择递归和非递归完成作业,这种方式既照顾大部分同学的学习水准,又可以对于优秀学生提出更高的要求,鼓励学生的学习主动性。
教学评价是依据教学目标对教学过程及结果进行价值判断并为教学决策服务的活动,是对教学活动现实的或潜在的价值做出判断的过程[4]。学生可以根据教学目标对自己学习情况进行评价,从而直观了解自己的学习程度,教师通过学生的教学评价,可以了解学生对教学内容的掌握情况,从而可以主动调整课程的进度。
由于前期已经对教学目标进行了详细的量化,因此也便于师生双方根据教学目标进行课程评价,评价的形式可以是多样,课下交流,作业、测试、网上交流等,同时在每章节结束后,学生对照教学目标对自己学习的情况进行反馈,帮助教师掌握学生的学习情况。
4 结论(Conclusion)
利用BOPPPS教学模型,对原有的Java的教学模式进行了探讨,将课堂教学延伸到课前和课后,使学生能够通过课前预习,课内参与学习,课后评测的一个完整的学习流程,充分掌握学习内容。在这个过程中,很多地方仍需完善,例如课前预习的资料仍需完善,参与式学习的学习方式需要进一步的探索,这是后面需要完善的具体目标。
参考文献:
[1] 陈卫卫,鲍爱华,李清,等. 基于BOPPPS模型和问题驱动教学法培养计算思维的教学设计[J]. 工业和信息化教育,2014(6):8-11.
[2] Allan J. Learning outcomes in higher education[J]. Studies in Higher Education, 1996,21(1):93-108.
关键词:C程序设计;教材内容;教学内容;教学方法
中图分类号:G642 文献标识码:A 文章编号:1009-3044(2011)21-5263-03
《C程序设计》是高职高专院校计算机相关专业开设的一门专业基础课,是学习计算机及其他基础课如《数据结构》等课程的先修课。因此,提高这门课程的教学质量对于培养大学生的计算机技能至关重要。但是,对于初学者来说要在短时间内学好这门课程并不容易。在以前的教学实践中,就发现很多学生觉得这门课难懂而厌学,有些甚至失去了学习的信心,有的不知道学为何用而不感兴趣,教学效果一直都不是很理想。所以,如何进行C程序设计教材选择及教学内容改革是我们计算机教师应该研究的课题。
1 程序设计教材和教学中存在的问题
程序设计教材中实例不实,为解释语法而设计;语法堆砌,只见树木不见森林;忽视错误程序的分析与讲解。
2 教材内容的组织
1)教材的特点应该顺应时展,提升实验平台。
2)教材特点要求内容紧密结合实践,实例兼趣味性和实用性。增加游戏类实例如猜数游戏,文曲星猜数游戏,扑克牌游戏等;趣味智力题类实例如国王的许诺,爱因期坦数学题,汉诺塔,骑士游历,八皇后问题等;实际生活问题类实例如:体型判断,身高测试,学生成绩管理,大奖赛现场统分,计算礼炮声响次数,存款预算等。
3)教材特点还强调软件开发过程、算法设计、程序设计方法与编程技巧。注重程序测试与调试技术,错误案例分析和排错,程序的健壮性。每章小结中增加了常见错误的总结。一个程序多种编程方法,注重代码规范。在教材注明常见错误案例分析有变量初始化错误,类型匹配错误,死循环与死语句,越界访存错误,与0比较问题,缓冲区溢出问题,复杂情形的关系判断问题,内存泄漏问题,遗漏边界条件测试,使用野指针的问题,非所有控制分支都有返回值错误,参数非法问题,类型溢出错误,不良代码风格等问题。
3 教学内容的组织
3.1 C程序设计教学中以前存在的问题
集中式的讲述(运算符、数据类型);语句的语法讲的多,注意事项一堆;忽略程序的“设计”过程(思维过程);举例死板、单一、分离;相关知识联系不紧密;过于依赖教材。结果导致学生学了不会编程,不会应用;考完试就忘了;学习兴趣逐渐淡化;学生不明白,却又问不出问题来。
3.2 面向计算机专业的教学方法
在强调基础知识的同时,注意在开发实际应用程序时具有重要作用的知识。如将程序范型、程序测试、代码验证与程序优化等内容引入课程。
关注两部分学生的教学方法:面向大部分学生,对教材上的实例进行详细讲解,使其能够掌握基本的语法、理解教材上的实例,以解决一般类型的问题。另外,从教材习题或参考书中选取有一定难度和代表性的实例进行概要性的讲解,有助于提高学生学会利用基础知识的能力。还有面向一些比较突出的学生,给出一些综合性的实例如学生成绩系统的开发,给他们介绍解题思路,使其能够解决更复杂的问题,带动其他同学,增加编程兴趣。
实际编程演示互动的教授方法:在课堂上实际编程演示,并运行结果。一方面要体现良好的程序设计风格和编程习惯,同时也反映了教师在编程时的思维过程,从注重结果转向注重过程和方法。大量地实践证明,学生对编程演示的过程兴致很高,为了进一步活跃课堂气氛,在编程过程中会有意设置Bug,当程序的运行结果与期望的结果不一致或者出现异常情况的时候,学生的注意力会更集中,此时可让学生分析问题的所在。此外,也可以通过对学生程序样例展示,鼓励学生的学习兴趣。
3.3 非计算机专业的教学方法
教学内容主要讲解数据类型,运算符与表达式,简单的C程序设计,程序的控制结构,函数,数组,指针,结构体和共用体,文件操作。
1)采用案例――任务驱动的教学方法:“程序设计语言”强调的是“设计”,应当从“设计”入手,以程序设计思想与方法为核心,注重程序的编写过程,选择一个恰当的案例非常重要。案例的选择应当由浅入深,要做到精、准、易。精就是突出重点,目的明确;准就是能够反映欲教授内容的本质;易是简单易懂,不能把学生吓着。例如在讲授函数时,给出这样一个案例:“编程设计一个简单的计算器程序,要求根据用户从键盘输入的表达式:操作数1 运算符op操作数2 来计算表达式的值。指定的运算符为加(+)、减(-)、乘(*)、除(/)”。首先用一个简单的程序来实现:
main()
{float a,b;
char c,answer;
do {
printf("input expression:a+(-,*,/)b \n");
scanf("%f%c%f",&a,&c,&b);
switch(c)
{ case '+': printf("%f\n",a+b);break;
case '-': printf("%f\n",a-b);break;
case '*': printf("%f\n",a*b);break;
case '/':if(b!=0)
printf("%f\n",a/b); break;
default: printf("input error\n");
}
printf(“do you want to continue(Y/y , N/n)? \n”);
scanf(“%*c%c”,answer);
}while(answer==‘Y’||answer==‘y’);
}
然后对这个程序进行修改,给出用带参数的函数实现。
#include
float Calculator(float a,float b,char c);//函数声明
main()
{ float x,y,result;
char op,answer;/*继续否 */
do
{printf("input expression:x+(-,*,/)y \n");
scanf("%f%c%f",&x,&op,&y);
if(op != ‘+’ || op != ‘-’|| op != ‘*’ || op != ‘/’ )
{printf("input error\n");
continue;}
else
{result=Calculator(x,y,op);//函数调用
printf("%f\n",result);
}
printf(“Do you want to continue(y/Y,n/N)?");
scanf(“%*c%c”, &answer );
}while(answer == ‘y’ || answer == ‘Y’);
printf(“over!”);}
float Calculator(float a,folat b,char c) //函数定义
{ float z;
switch(c)
{ case '+': z = a + b; break;
case '-‘ : z = a - b; break;
case '*‘: z = a * b; break;
case '/': z = a / b; break;
} return(z);}
再要求学生对其进行修改,用不带参数的函数去实现该题。通过本案例,使学生理解并掌握了函数的几个重要的概念,实现方法及编程技巧,并使学生真正理解为什么说C语言的程序是由函数构成的。经过反复这样的练习,使得学生不但学到了基础知识,而且提高了综合分析和理解能力。
2)设置错误寻求正确答案的教学方法
在课堂教学中,有意给出一些带有算法错误或语法错误的程序段,使学生产生一些疑问,去思考,为什么这样编程不对?为什么这样的程序得不到正确的运行结果?让学生自己去寻找程序答案,修正这种程序中的语法错误及算法错误。
例如:求100~200间的全部素数,要求每行输出10个素数。
#include
main()
{int m,k,i,n;
for(m=101;m
{if(n%10==0)
printf("\n");k=sqrt(m);
for(i= 1;i
if(m%i==0)
continue;
if(i==m%10)
{ printf("%d ",m); n++;
} } }
在这个程序中存在比较隐蔽的错误,该程序不能正确执行,要求学生通过机上进行调试、分析程序,发现错误及时改正,培养学生的动手能力和解决问题的能力。学生也积累了调试程序的经验。
3)填空式的教学方法
是在讲述程序时,不把程序的内容和盘托出,而是有意识地在内容上制造一定的空白,让学生自己去推测可能的结论。要求学生首先要读懂程序,了解程序实现的功能,再添上适当语句,然后运行程序,直到得到正确的运行结果。从而激起学生的探索欲望,提高学生的学习能力,进一步培养学生的创新思维。
例:下面这个程序的功能是将字符串s中所有的字符c删除。
#include
#define N 80
main()
{ char s[N];int i,j;
printf("Please enter string s:");
gets(s) ;
for (i=j=0;s[i]!=’\0’; 或i
{ if(s[i]!=’c’)
s[j++]=s[i];或j++;s[j]=s[i];
s[j]=’\0’;
puts(s); }}
学生通过几种不同的方法完成了此程序,从而使学生更好地理解字符串处理中几个关键部分的处理过程。
4)预测错误的教学方法
根据实践经验总结出一个程序易出现什么错误,在写程序时要避免这种错误的发生。比如语法错;运行出错(num/0);未检测到的错误如scanf函数在对格式参数%d和%c的处理上有所不同前者会忽略输入的空白和回车,后得不会忽略;逻辑错误等等。
总之,我们是以培养学生创新能力为主的教学方法。抽象概念与具体实例相结合的方法在程序设计课程中,以语法和结构为基础,以程序设计方法为主线、以编程和应用为目标。在讲述编程思想、规范、方法的同时紧密和恰当的实例相结合,形象化的讲述,使学生快速理解抽象的概念,灵活的应用这些思想和方法解决问题的能力。传授知识与创新能力培养紧密结合分析授课对象的特点,从思维方法入手,引导学生多思、多想、多问。分解难点内容,基础内容侧重于深度,应用内容侧重于广度。在讲述基本语法、程序设计基本方法的同时,注重编码风格、编码规范、程序调试、常见错误分析。以典型实例驱动教学,课堂教学与精心设计的课后作业相结合,作业的题型丰富,如复习题、 练习题、思考题、一般性作业、综合性作业,使学生在听中学、学中练、练中思、思中创,全面地从多角度灵活地应用所学过的知识,培养了学生的创新思维。课堂讲述与讨论相结合的教学方式把课堂交给学生,定期组织学生讨论,在程序设计中,针对一个程序的多种编写方法展开讨论,评价程序,使学生认识到优、劣代码的特征,怎样思考才能编写高质量的程序。注重实验教学和课程设计在程序设计语言中以实验为主,实验内容的设计是以巩固和综合运用主要知识点为主线,内容具有趣味性和实用性。实验包括基础验证、设计、综合设计十大类题型。通过实验,激发了学生的浓厚学习兴趣和独立的编程能力。
由于计算机领域的知识更新的速度非常快,旧的教材、教学方式方法、教学内容已不能适应新形势的需求,需要随着技术的进步和社会的发展进行更新,我们要吸收最先进的教学思想,不断地进行教学改革。只有这样,我们的教学才能适应学生的需要,我们培养的学生才能更好地满足社会的需要。
参考文献:
[1] 苏小红.《C语言程序设计》课程建设的创新实践[J].哈尔滨工业大学学报:社科版,2008.
[2] 王宇颖.C语言实验课如何培养学生的创新意识与创新思维[J].中国科教创新,2008.
[3] 王冬.高职C语言程序设计教学改革探索[J].计算机教育,2007(18).
1.1教学对象
以九江学院2011级高职护理专业(三年制)1个班42名学生为研究对象,年龄18-20岁,平均年龄19.1岁,其中女40人,男2人。
1.2评价工具
参照相关文献自行设计了教师授课效果问卷调查表,对教学效果进行评价。
1.2.1教师授课质量评价表
该问卷由学生填写,用来对教师的授课效果进行评价。评价指标为讨论主题、创新思维、合作探究、自主学习、小结归纳5个方面。每个项目从高到低分为A、B、C、D4个等级,级别越高,表明授课效果越好。本研究在正式调查之前,进行预调查,在30例学生中问卷信度系数Cronbach’alpha测得为0.73。30名学生隔1个月后进行重测,两次相关系数为0.75[2]。用因子分析法对问卷结构效度进行测量,累积有效程度为90.7%。
1.2.2学习状态评价表
学习状态评价表从思辨能力、参与程度、交流程度和生成状态四个方面进行评价。参与状态就是看学生是否全程参与学习,在讨论中是否积极发表意见。思辨能力是看学生的语言是否流畅、有条理、善于用自己的语言表达所学知识。交流程度就是看学生之间在学习过程中是否友好合作。生成状态指学生能否总结当堂课程,见解是否有创意或能提出深层次的问题。教师在讨论课堂中对每个学生进行仔细观察后做出评价。每个项目由优、良、中、差四个等级组成。本问卷在正式调查之前,进行预调查,在30例学生中信度系数Cronbach’alpha测得为0.72。30名学生隔1个月后进行重测,两次相关系数为0.74[2]。用因子分析法对问卷结构效度进行测量,累积有效程度为91.3%。
1.3方法
1.3.1课程设计
以轮状病毒肠炎为例,采用临床护理路径教学法。研究课程内容,明确轮状病毒肠炎患儿应用临床护理路径进行护理评估所需的技能和知识,并通过相应的临床护理路径表来完成教学目标[3]。
1.3.2临床路径表设计
(1)住院第1d:①询问病史及体格检查;病情告知;腹泻护理常规;饮食:流质或半流质,乳糖不耐受者采用低乳糖奶粉喂养。②遵医嘱应用口服补液盐、肠道菌群调节剂、胃肠粘膜保护剂。病重者予呼吸、心电监护,吸氧。③实验室检查:血常规、尿常规、大便常规,CRP,肝肾功能,电解质;大便轮状病毒检测;必要时做血气分析、大便乳糖检测。④根据血气分析结果予以纠正酸碱失衡及电解质紊乱;按照脱水程度予以补液;高热时降温处理。⑤主要护理工作:入院护理评估;入院宣教;定时测量体温。对病情变异进行记录。(2)住院第2-3d:①上级医师查房;整理送检项目报告,有异常者应及时向上级医师汇报,并予相应处理;注意防治并发症。②腹泻护理常规;饮食;服补液盐:按需供给;肠道菌群调节剂;胃肠粘膜保护剂;③必要时复查血气分析、电解质。④根据脱水程度、电解质及血气分析结果予以液体疗法;高热时降温处理;必要时查心电图、心肌酶谱。⑤每日护理评估;定时测量体温。对病情变异进行记录。(3)住院第4-7d:①上级医师查房后同意出院,完成出院小结[4];②出院宣教:向患儿家属交代出院用药及注意事项,如随访项目,间隔时间,观察项目等。③出院医嘱:出院带药,门诊随诊。④主要护理工作:出院宣教,对病情变异进行记录。
1.3.3教学活动的实施
以我校儿科护理实验室为教学场所,以真实的护理过程为依据,将教学和模拟工作情境相结合。(1)准备:提前发放临床路径表,指导学生以教材内容为基础,结合图书馆资料和网络查询的资料预习课程内容。(2)学生进行分组,以角色扮演的方法分步骤演示临床护理路径表中要求的内容,在实际操作过程中真正将理论转化为实践能力。(3)教师进行最后点评,进一步强化轮状病毒肠炎的重点和难点,加强学生的认识[3]。
1.4统计数方法
所有资料均采用SPSS16.0统计软件处理,统计方法为描述性统计分析。
2结果
2.1学生对临床护理路径教学法效果评价很好,对于5个项目的评价等级均在A或B以上。说明学生对于临床护理路径教学法的教学质量是肯定的。
2.2学生的参与程度、思辨能力、交流程度和生成状态评价均较好,优良以上的分别占74%、71%、79%和64%。
3讨论
关键词计算机专业;网络课程;教学
1前言
随着计算机技术的飞速发展,计算机网络的全方位普及,网络类课程成为高校众多专业的必修课程,特别是对于计算机专业的学生来说,更是必修的重要课程。由于网络课程理论性和实践性都很强,同时发展和变化很快,新知识层出不穷,如何在有限的课时内有效的教给学生理论基础和实践技能,对广大教师来说是一个很大的难题。这里以作者本人的实践跟大家探讨下网络的教学方法。
2明确教学重点
网络类课程是计算机专业的必修专业基础课,非常重要,各院校在开设该课程之前,已经开设了C语言,数据结构等前序课程。对于网络类课程的学习起到了很好的铺垫作用。
网络课程的内容主要有几大块:通信基础,网络安全和网络协议。
通信技术往往和网络技术相融,所以讲授网络原理离不开基本的通信原理,所以学生如果学过通信原理之类的课程,对通信知识只需要做简单的复习即可,如果没有学过通信原理,那需要利用业余时间加强;网络安全也很重要,但是计算机专业学生对于网络更多是用于实践,所以网络安全又基本了解即可。这样,课程的教学重点就很明确了――网络协议。
3有效讲授教学重点
既然明确了网络协议是网络课程的重点,同时也是难点。那么教师在教学中就要非常重视这部分的教学效果。而实际教学中,这部分往往是老师讲起来困难,学生学起来费劲,从而使一些学生失去学习的兴趣。尽管他们天天都使用网络,但对网络底层发生的事情却不了解,所以必须用直观的方式来将枯燥的协议数据展现在学生面前。
为了解决上面提出的难题,作者根据网络数据包的侦听技术,设计了一个网络通信的演示系统。该系统通过截获网络上传送的数据包,按照网络协议的层次将每层的二进制数据取出,同时有ASCII码的翻译以及相应的文字说明。通过分析每层协议的二进制数据,就可以清楚地讲述网络协议中的每个字节或者二进制位,ASCII码的翻译主要用于讲解应用层协议。通过直观的演示,学生的概念清楚了。该系统不仅可以分析单个的网络数据包,还可以根据用户要求提取一次完整的网络通信过程中的所有数据包进行分析,这样学生就对网络通信有一个整体的认识,同时对TCP/IP协议体系中高层协议与低层协议的关系有了进一步的了解。
当然,现在可以直接利用的演示软件也是非常多的,大家还可以借助这些软件去模拟一些网络环境,通过模拟演示一个网络数据交换的过程,让学生动态的了解整个过程。这样的演示对于学生对网络协议的理解与分析提供了更大的帮助,比通过课件演示讲解或是理论知识的灌输效果好很多。
4提高编程实践能力
由于学生在学些网络课程之前,已经学习了C语言、数据结构等课程,具备了一定的程序编写能力。因此,我们鼓励学生自己动手编写程序,以加深对相关概念的理解。例如,在讲授网卡这部分理论时,要求学生利用Winpcap开发包列举出计算机上所有网卡的相关信息;在讲解分布式进程通信时,要求学生自己编写程序实现一个简单的客户/服务器系统,该系统通过socket实现,只要能在客户机和服务器之间交换信息就可以,不需要实现其它的复杂功能。在所有的这些编程作业中,一定要把握好题目的难度和深度,一般来说,只需要达到通过编程加深对相关概念的理解即可,难度较大的问题或者综合性的问题可以等到课程设计时加以解决。
5利用网络学习网络
授人以鱼不如授人以渔,作为教师,关键的任务是教给学生学习的方法和能力。我们讲授的知识有一定的滞后性,而网络方面的很多是英文资料和文献都是第一手的,教材不可能年年翻新,但知识的更新速度是非常快的,有些内容教材上讲的原理虽然不错,但具体内容可能已经不是最新的了。这一点在网络协议方面体现特别明显,而这块又是教学重点,所以我们在讲解协议的时候,可以和学生一起利用网络查找RFC文档,了解最新的进展,同时对课本没有提及的协议,如果有必要,可以布置作业,要求学生查找RFC文档,同时对协议的关键部分,例如协议的格式,与其它协议的关系等给出相应的中文翻译。
6加强实验环节
本科计算机专业学生的课程体系由于理论课较多,往往没有安排这些实践类的课程或设计,但他们毕业以后很多人往往都需要从事一线的具体工作,实际组网能力非常重要;即使对于少数将来从事计算机网络的理论研究的学生来说,如果没有基本的动手能力,对网络的理解必将受到限制。所以,实验在计算机网络课程中具有很重要的地位。
由于学时所限,实验内容安排不可能面面俱到,一定要突出重点。一般至少需要安排了六个实验,分别是交换机的基本配置,虚拟局域网,路由器的基本配置,路由协议RIP和OSPF,防火墙,服务器配置。为了保证实验的效果,要求学生实验前在模拟软件上了解实验的基本内容。同时每个实验都有一部分要求学生自己想办法解决的问题,通过这种方法来了解学生是否真正掌握了实验内容,也避免部分学生不动脑筋,对照实验教材像操作工一样机械地完成任务。对于其它实验,例如网线的制作等,我们提供详细的电子指导文档,让学生自己了解在生产实习等实践环节再具体操作。
7小结
本文针对计算机专业网络类课程教学方面的问题进行了研究与探讨,提出了作者在实践中解决一些问题的方法,取得了较好的教学效果。但教学方法的研究永无止境,以上只是作者本人的的一些拙见,肯定有很多不足之处,在此提出只是希望和众多从事一线教学的同仁探讨和研究,更好的提高教学效果。
参考文献
[1] 吴功宜计算机网络[M]