时间:2022-11-09 11:06:47
开篇:写作不仅是一种记录,更是一种创造,它让我们能够捕捉那些稍纵即逝的灵感,将它们永久地定格在纸上。下面是小编精心整理的12篇计算机程序设计论文,希望这些内容能成为您创作过程中的良师益友,陪伴您不断探索和进步。
论文摘要:成人教育是我国高等教育办学模式的一种创新体制,计算机程序设计课程是成人教育计算机教学中的必修课程,其主要目的是培养学生的程序设计能力和算法分析应用能力。本文从教学实际出发,针对当前成人教育计算机专业程序设计课程的实践教学进行了探索和研究,并提出一些建议。
1计算机专业程序设计课程实践教学的主要范畴
计算机专业程序设计课程实践教学主要包括上机实验、综合练习、课程设计、软件开发实训等几个方面。上机实验是最基本的实践教学,由任课教师根据理论教学的具体进度,设置一些简单的实验,要求学生在规定时间内完成,通过这些实验加强学生对理论知识的理解和掌握。综合练习一般在经历了一定的学习阶段之后,任课教师根据现阶段学生的学习情况,结合日常生活、工作中面临的实际问题,设置一些难度较小的综合性练习题,要求学生在规定的时间内进行调查分析,然后应用所学知识解决问题。综合练习主要侧重某一方面具体知识的应用。课程设计是在本门课程学习完毕后,任课老师根据教学大纲的要求,结合课程的特点和实际应用,设置一些难度适中、综合性强的课题,要求学生按要求完成课题任务。课程设计主要考查学生对知识综合运用的能力,培养学生利用所学知识来分析问题、解决问题的能力。软件开发实训则是通过实际软件项目来提高学生的职业综合技能。计算机程序设计实践教学都采取由浅入深的原则进行,其过程为:上机实验综合练习课程设计软件开发实训。
2计算机专业程序设计课程实践教学的重要性
2.1加强实践教学是实现计算机专业程序设计课程教学目标的要求计算机程序设计课程的主要目的是培养学生的程序基本开发能力、程序代码编写能力和程序调试应用能力,重点培养学生的算法应用分析能力和数据综合处理能力。其主要任务是通过日常教学,使学生掌握程序设计的一般方法和程序设计的具体过程,掌握计算机程序设计语言的语言特征,具备程序设计师的基础应用能力。在教学过程中,任课教师应以人才培养为目标,侧重编程综合应用能力的培养,通过具体的实践教学来提高学生的职业技能。
2.2实践教学是提高程序设计课程教学质量的重要手段实践教学是培养学生动手能力的重要手段,是提高学生的动手能力和职业技能最有效的方式,是对学生理论知识掌握程度的检验。“知识来源于实践”,“实践是检验真理的唯一标准”,计算机程序设计课程的理论知识应通过编程实践体现,通过具体的程序设计案例和实际编程来提高学生对理论知识的掌握,学生
综合编程能力的强弱是检验计算机专业程序设计课程教学质量的基本标准。
3成人教育业程序设计课程实践教学存在的问题
我国成人教育业程序设计课程的实践教学存在问题的体现在下述方面:①实践设施不足,教学条件不完善;②对教学认识不足,实践教学不受重视;③实践教学方法陈旧,考核方式单一。 转贴于
4积极探索,构建合理的程序设计课程实践教学模式
4.1实践教学要符合教学目标的需要计算机专业程序设计课程实践教学必须紧紧围绕专业培养目标、人才培养规格进行。要结合专业特点更新教学内容,调整实践教学内容、方法和手段。实践教学内容的更新,要注重对学生编程综合能力的培养和创新能力的培养,要对已有的实践教学内容进行筛选、整合,改变单一的演示性、验证性实验,增加综合性、设计性、创新性实验,要充分利用计算机课程的教学特征,提高实践教学效果。
4.2以社会就业需求为主导,开展多种形式的实践教学程序设计课程实践教学主要有上机实验、课程章节综合练习、大作业、课程设计、软件项目实训、校外软件基地实习、软件合作企业顶岗实习、校内软件课题研发等。其中实训、实习和研发都是采用“真题真做”。通过上述这些实践过程,学生的程序设计综合应用能力和软件开发能力都能得到良好的锻炼。
4.3程序设计课程实践教学设计一般要求定教学的具体内容。大多数情形下,采用实例教学效果比较明显,通过实例的演练促进学生对知识的掌握。实例式实践教学设计一般应包括教学目标、课时要求、教学组织、教学内容、实践方式、实践总结、成绩评定等几部分内容。在设计实践教学内容的过程中,应做好三个方面工作。一是要结合学生实际情况,尽量体现知识性、实用性,激发学生的灵感和创造欲,使学生对实践内容感兴趣,以充分调动学生的学习积极性和主观能动性,促进学生积极创新,完成实践内容。二是应注重理论教学与实践教学相结合,保证实践教学与理论课教学相适应,加深学生对基本理论、基本知识的理解和掌握。三是保证实践题目难度和工作量适中,学生通过自己的努力,可以在规定时间内完成实践任务,实践方式可以灵活多变。
4.4改变实践教学的考核方式学习程序设计课程的真正目的在于应用,是为了能正确编写出应用程序。因此,程序设计课程的考核要理论考核与实践操作考核并重,各占1/2,并要求理论考核与实践考核分离,只有理论考核和实践操作考核均合格后,整个课程成绩考核才算合格。实践教学考核主要考核学生综合运用所学知识解决实际问题的能力,不仅要考查学生的知识理解程度和基本操作技能,也要考查学生认知能力、动手能力、知识转化能力、再学习能力和创造能力,任课教师可以通过学生平时的学习情况和期末实践测验给出一个比较合理的综合成绩。这样,不仅可以对学生的学习情况给出一个客观的评价,还可以鼓励学生平时认真学习。
关键词:课程服务专业 计算机基础课程 计算机基础教学
中图分类号:G642.0 文献标识码:A
文章编号:1004-4914(2014)08-252-02
引言
计算机基础课程是非计算机专业本科生必修的公共基础课,在公共基础教育平台和学生的基础教育中占有重要的地位。计算机基础教育课程包括《大学计算机基础》课程和《计算机程序设计基础》课程。为加强计算机基础教育的针对性,更好地服务于专业学习,建立了“1+X”的课程体系。《大学计算机基础》是“1+X”课程体系中的“1”,其教学内容丰富、受众面广、教学成效显著;《计算机程序设计基础》是“1+X”课程体系中的“X”,根据不同专业需求,开设不同的程序设计语言。然而如何能使不同专业的学生更好地学习和接受计算机能力,将“课程服务专业”的思想引入到教学当中,是教学改革的重点也是难点。
一、课程服务专业思想的引入
计算机基础教学的目标是为非计算机专业学生提供计算机知识、能力与素质方面的教育,培养非计算机专业的本科生掌握一定的计算机基础知识、技术与方法,能够利用计算机进行学习、工作和生活,适应信息化社会的发展,并在此基础上,培养学生利用计算机解决本专业领域中问题的意识与能力。
进入21世纪以来,互联网技术的发展和应用深度渗透到生活的各个领域,各个专业对信息处理的终生需求和计算机网络应用的终生需求,使得计算机基础教育的范围不断扩大,与之相对应的是如何将这些需求反映到计算机基础教育的课程中。
1.充分考虑各专业差别,开展计算机基础教学。根据各专业的不同需求和学生的自身发展需求以及国家信息化的要求,笔者所在的黑龙江科技大学为不同专业的学生开设了《计算机程序设计基础(VB)》课程和《计算机程序设计基础(C)》课程。例如,对电子信息类专业,开设《计算机程序设计基础(C)》课程;对信息管理类专业,开设《计算机程序设计基础(VB)》课程。
2.理念先进,服务人才培养定位,教学目标明确。以我校应用型人才培养为目标,在教学过程中,始终坚持“以学生为主体、以教师为主导”的教学理念,提倡“自主、合作、探究、创新”,不断改革教学方法和手段,鼓励学生进行研究式学习、自主式学习、资源式学习和协作式学习,注重对学生四个方面的能力培养:通过计算机、网络及信息技术基本原理、基本知识的讲授,掌握计算机分析问题、解决问题的基本方法,培养学生对计算机的认知能力;通过计算机数据处理、多媒体技术及程序设计知识的讲解,培养学生应用计算机解决问题的能力;通过熟练掌握与运用计算机与网络技术,有效地表达思想,掌握基于信息技术的团队协作方式,接受信息社会道德规范的约束,并自觉承担相应的社会责任,培养学生依托信息技术的共处能力;通过对信息的获取、分析、评价和吸收,培养学生的自我学习能力。
二、课程服务专业思想的实施
根据我们多年在计算机基础教育改革实践过程中积累的经验,改革的核心在于“以学生为主体,以教师为主导”和为专业服务的“计算机应用能力培养”的教学模式和方法。我校计算机基础教育与学生专业结合的做法是在教学手段和模式富有建设性成效的基础上积极主动思考,结合了我校办学的主导思想和特色并有了创新性发展。从几年的实践过程看,做法日渐科学,效果积极显著。
具体做法:“积累、实践、服务”相结合。
1.及时与专业负责人进行沟通,与专业对接。第一学期开学前,通过与学生所在院系教学负责人、专业建设负责人沟通等方式,实现课程内容与专业需要的对接,重新定位,按照专业需求调整教学内容,使课程内容满足专业培养目标的需要。即每学期在制定计算机基础课程授课计划时,请专业负责人或骨干教师参与,根据各专业需要提出合理的意见和建议,充分了解各专业学生对计算机应用技能的需求,从而对课程内容及时做出调整和修订。
2.提高课程组教师的计算机能力培训。课程组的教师积极参与实习、实训、毕业设计和实践锻炼等环节,不断提高自身的实践水平,实现教学水平与专业能力培养的需要对接。同时,课程组的多名教师通过到企业挂职锻炼及时了解社会对计算机能力的实际需要,也了解到学生将来的就业趋势,在提高自身能力的同时,也保持了计算机教育的实用性和先进性,为培养学生的计算机能力作出了充分的准备。
3.为学校各专业的大四学生,进行毕业论文排版指导,发挥服务作用。随着用人单位对大学毕业生计算机能力的要求有增无减,计算机水平高低已经成为衡量大学生业务素质与能力的突出标志之一。因此,我校计算机基础教育“课程服务专业”的理念和做法既符合教育部对普通本科院校提出的“应用型本科教育”的内涵所指,也符合我校的三大教育理念。作为我校的特色项目,必定对于促进学生终身学习和主动应用计算机起到积极的推动作用。
4.根据专业需要重新整合教学内容,探索为专业课服务的途径与方法。在计算机教学过程中,我们打破了原有的学科体系,按照学生能力培养体系重新组织教学内容和教学方法,将相关的理论课程重新整合、重组。如在讲计算机程序设计时,重点针对专业的实际问题进行程序分析。新体系淡化了基础课与专业课的界线,实际了知识整合、交叉安排,加强了针对性和实用性,目的是更好地为学生专业技能培养服务。
5.加大实践教学环节,提升学生实际操作能力,为专业服务奠定基础。计算机基础教学建立了相对独立的实践教学环节,加大了实践教学在教学计划中所占的比例,强调实践与实习,实验的目的不是为了验证理论,而是为了培养学生的技术应用和实际动手能力。同时,在授课计划中还安排了多项相对独立、逐步提升的阶段性技能与综合性实验与训练,不断提高学生的实践操作能力。
6.课程组教师需要了解相关专业课教学重点,积极主动地为专业课服务。课程组教师通过与相关专业负责(下转第255页)(上接第252页)人及骨干教师的沟通,以及与专业课教师之间相互听课,及时地了解了专业急需用计算机解决的相关知识与问题,在备课和授课过程中都会将此部分内容作为重点进行讲解,为今后学生利用计算机解决专业知识打下了坚实的基础。
比如,会计专业是研究企业在一定的营业周期内如何确认收入和资产的学问。会计师除了准备财务报表以及记录企业交易行为外,更重要的是能够参与企业间的合并、质量管理、信息技术在财务方面的应用、税务战略以及很多企业的管理决策活动。因此一个现代高水平的会计人才,不仅仅要会收钱,会记账,会审计,更应该利用会计这个工具,学会管理,具备多方面的能力。美国一个权威职业评估机构分析得出:Computer literacy是会计专业人才应具备的重要能力之一。同时,现代信息技术对会计工作也有着重大的影响作用,会计实务的重点将由原来的编制凭证、记账、结账、编制报表等转向收集信息、存储信息、加工信息、传递信息、查询信息等。因此,面对会计专业的学生进行《大学计算机基础》授课时,也要考虑以上因素,只有这样才能在提高学生学习兴趣的同时,增强学生的计算机会计能力。
7.开发了自主学习,课程服务专业的网站。为了提高学生的自主学习能力,课程组开发了计算机基础系列课程网站,网站中包括了课程的大纲、授课计划、课件、习题、名师视频等资料,方便了学生资料的获取。同时,网站还重点设置了“专业学习模块”,针对不同的专业,根据各个专业对计算机能力的需要设置了不同的模拟试题,极大地调动了学生的学习主动性,激发了学生的学习兴趣。
8.适应专业特点,精心设计案例。案例式教学方法的实施是提高计算机基础课程教学质量的有效途径之一。为了更好地做到课程服务专业,需要授课教师在案例设计之前需要与专业知识进行对接,对案例进行反复斟酌、思考与设计,好的案例可以帮助学生更好地记忆基本概念,理解所学知识,掌握基本技能。
如在对会计专业进行案例设计时,要尽可能将具有专业特色的案例融入教学过程中。在安排案例教学时有意识穿插更具会计专业特色的实例,在学习Word时,可以设计“财务报表”、“月份财务分析表”、“资产负债表”等案例,使学生在练习了表格排版的同时,了解了财务报表、财务分析表及资产负债表应包含的基本信息,与会计专业基础课有了更好的结合。
在讲解Excel时,可以重点与财务相关的公式与函数。在讲授PPT时,可以利用PPT内容提示向导、母版的改造、PPT中表格和图表的插入等操作,制作财务报告幻灯片,向股东和投资人介绍公司的财务状况等。通过这些有针对性的、与专业知识相结合的案例讲解,并结合布置一些有挑战性或应用性或有乐趣的任务、习题,使学生对计算机基础课的学习兴趣大大提高。
三、结论
实践证明,课程服务专业思想在高校公共计算机基础课程中的引入与实施,使得教师能够更加有针对性地进行教学与授课,使得原本枯燥的知识和课堂变得更加生动和引人入胜,充分调动了学生的学习积极性和主动性,激发了学生的学习兴趣,为学生今后利用计算机解决专业实际问题奠定了夯实的基础。
[本文为:1.黑龙江科技大学高层次引进人才科研启动基金(06-122);2.黑龙江省高等教育教学改革项目]
参考文献:
[1] 金蓉,庄红,黄德生.面向能力培养的高校非计算机专业计算机基础教学改革与实践.计算机教育[J],2010(1)
[2] 韩雪.浅析服务专业能力培养的高职《计算机基础》教学.科技信息[J],2011(6)
[3] 孙丽娜.服务专业需求的高职计算机公共课教改研究.中国教育技术装备[J],2013(15)
关键词 计算机教学 考试 改革 能力培养
中图分类号:G424 文献标识码:A DOI:10.16400/ki.kjdkx.2016.12.040
Abstract In order to improve the non computer professional students of science and engineering teaching quality courses of computer application, this kind of curriculum reform of traditional teaching methods, pay attention to the cultivation process and the ability to adjust the classroom computer room, teaching methods and real-time interaction with the screen broadcast, will lecture and experimental fusion, the teaching and examination fusion, using a variety of means of examination coverage of the whole teaching course, not only to achieve the purpose of motivating students to learn, but also make the classroom lively and lively, good teaching effect.
Keywords computer teaching; examination; reform; ability training
为了鼓励和督促学生通过课程真正掌握计算机程序设计及应用的技能,许多任课教师倾注了大量心血,提出了很多方法和措施,值得我们参考。①②③④笔者认为考试是教学的指挥棒,考试改革和教学改革必须同时进行才能取得好的教学效果。为此,在学院教务部门的支持下,笔者在讲授“Matlab语言及应用”课程中,对课程教学和考试方式进行了改革创新,现就有关教学实践的经历谈一下自己的看法。
1问题分析
1.1 传统思想造成考试方式的固化
“笔试”在时间与空间上的严格性的优势使其成为长期且普遍采用的考试方式。以至于造成很多师生固执的认为“只有笔试才是考试”。另一个原因,由于教师们普遍重视理论教学和熟悉笔试操作流程,使得即使在程序设计和应用类的课程考核中,也往往倾向于采用笔试来考核。⑤实际上,笔试的考核方式在理论性较强的课程,如政治类、原理类等课程中适应性更强。考试内容和考试方式又是教学的指挥棒,采用笔试考试直接导致了日常的教学内容和教学方法也会偏重理论讲授,在实践性较强的科目中客观上会造成实践教学的减弱。计算机程序设计应用类课程就是这样一种实践性很强的课程,它的核心教学目的是培养学生程序设计或者使用专业软件的能力,使学生能够在电脑上独立操作实现专业所需的程序设计或者软件操作,而非演算纸上写出步骤或代码。显然,笔试的考核方式制约了这类课程教学过程,影响了教学效果。考察国外大学的课程考核形式,主要包括了闭卷笔试、开卷笔试、小论文、专题讨论、教师口试、答辩、小组研究项目、资料分析、课堂表现和社会实践笔记等等,他往往根据课程内容确定较为适合的考核方式。⑥这些考核方式都是值得我们参考的。开展考核方式改革的探索将有利于我们客观、合理和综合地评价学生的学习过程和知识掌握程度,进而调整教学思路和实践教学步骤。
1.2 社会环境影响学生的学习目的
当前“急功近利”的社会氛围下,获得学分、取得高分成为学生学习的第一目的,真正熟练掌握专业技能和专业知识被大家严重忽视。一个较为典型的例子就是,在我校本专业免试推荐研究生时,入围的资格是考试成绩,复试内容是专业操作技能和专业素质。在这一环节中,高分学生表现出较差的技能或专业素质的现象非常常见。在日常教学中,学校也往往过分重视分数的价值功能,特别是奖学金、评优等几乎完全看考试分数,使学生产生了“分数高于一切”,“考试分数高的才是好学生”等问题。客观上引导学生以考试成绩为第一,而并不关心是否真正掌握了专业知识和专业技能。
对于理工科学生来讲,上述做法严重削弱了学生参与实践教学的积极性。在类似计算机应用类课程的很多科目中,笔试分数并不能真正检验学生的学习效果,笔试成绩高也不能代表高的实践能力。理论上,切实开展专业教育、职业规划是解决这一问题的基本途径。让学生知道每门课程在未来职业中的用途,这需要由每一位任课教师渗透到所负责的专业课程中,需要结合课程知识点告诉学生本节课的技能在未来的工作或研究中有什么用途。实际教学中,还可通过改变传统教学模式、提高学习兴趣来督促鼓励学生,如本文的方法。
2教考综合改革实践
2.1 考核方式
为避免学生平时疏于学习、期末恶补考试,使学习效果得到客观、公正评价,更为了鼓励学生真正学好技能,在“Matlab语言及应用”教学中取消原来的期末统一笔试,改为贯穿整个教学过程的全程考核,将考核点设计为作业、小实验、讨论和课程设计等,表现为“考教融合”。在本门课程中,将成绩构成分配为期末程序设计考试成绩占40% ,平时实验成绩占30%,课后作业占20%,课堂讨论占10%的模式。
课堂实验和课后作业部分要求所有学生教学过程中同步完成,属于完成性考核。所有W生都被要求掌握这些基础知识点和技能。讨论部分和程序设计考试阶段是提高的部分,属于提高性考核,学生如果想取得好的成绩,就要在完成基本实验和作业的基础上,认真思考问题,上课积极参与讨论,针对问题提出更优方案,努力掌握软件应用技能,并在期末程序设计考试中顺利完成考题。讨论课的内容包括了如专业数据处理需求、特殊功能实现方法等广泛的扩展性内容,大家讨论给出程序设计方案和步骤,这能考察出学生的基本素质、思维能力和知识熟悉程度。在期末程序设计考试阶段,通常会设计包含了多个教学知识点的专业有关应用型程序设计题目,学生在给定的时间内在教学机房独立完成程序开发。这部分的考核以解决实际问题为考核目标,给了学生更大的学习压力。但由于这部分比重只占总成绩的40%,也没有给学生过多的精神压力。这种考核方式能够充分调动学生积极性,使得学习过程丰满而充实。
2.2 教学方式
为了配合上述考核形式,需要深刻改革授课方式。在讲课风格上,尽量避免空洞的理论讲授,通过给学生提供生动、形象的演示,使他们了解直至理解每一个知识点,在实践中掌握。在上课地点上,抛弃了原有的讲台和黑板,将授课地点从教室改到计算机室,学生每人一台电脑,既能观看教师演示,又能动手实践,还能随时与老师交流。在授课方式上,不再划分讲课学时和实验学时,将授课与实验融合起来,边讲边练边讨论。
具体操作,将每2学时的教学内容划分为4个阶段。第一阶段,采用屏幕广播方式,利用案例教学,为学生讲授基本原理和操作方法(约30分钟),将空洞的理论性的知识点穿插到实践中,让学生看得见;第二阶段,学生独立练习前述教学内容(约30分钟),完成老师的演示内容,通过操作理解知识点;第三阶段,集体讨论,启发式教学,并采用屏幕广播方式,为全体同学重复解释教学难点,讨论知识扩展;第四阶段,布置需在课堂完成的与实验内容和课后思考作业,重点培养学生解决问题的能力,课堂实验需要当堂提交,不能按时完成的或完成不认真的,直接影响成绩评定;课后作业完成时间由学生掌握,按完成水平给出成绩。⑦
上述教学方式使得学生在没有压力的情况下轻松学习,增强学生的学习主动性,使学生觉得“每节课都在学习,每节课都是考试”。
2.3 教学内容
教学大纲要求掌握的教学内容和实践技能,都设计到各个实验中,不鼓励学生死记硬背。因为“纸上得来终觉浅,绝知此事要躬行”。对于基础的命令和方法,学生会在反复训练中掌握,结合专业需求理解,经过大家多次讨论后自然就可以熟练掌握。对于生僻复杂的知识点或模块,更没有死记的必要,教会学生解决问题的办法,要求学生在遇到或用到时,能知道其解决方案并能查找相应资料就行。关于教学内容,重点引入学科专业有关的应用内容和常用热门模块,不但使学生学有所用,还跟踪了知识前沿。
3教学效果分析
多轮的“Matlab语言及应用”教学实践表明,本文提出的教学方法能够充分调动了学生的学习兴趣,所有选课学生都获得了学分,且都取得了良好以上的成绩,70%以上的学生在期末的程序设计考试中都能独立完成程序设计。与授课前相比,学生的编程能力、创新意识以及实践课程的学习主动性等方面均有所提高,两年的授课前与考试后问卷调查的结果表明,学生对程序设计类课程的有好感的比例都是从约30%上升到约70%。编程基础较好的约20%的同学经过本课程的学习后已经能够熟练掌握Matlab语言,在毕业论文和研究生阶段可以自由设计所需专业程序。考察2015、2016两年本专业本科毕业论文中数据处理环节,50%以上学生采用了Matlab软件设计程序,包括自主设计和改造他人程序两种情况。上述教学效果完全达到了本专业本科培养方案中设置本门课程的目的。
4结语
从计算机语言应用类课程教学中存在的问题出发,结合“Matlab语言及应用”课程的教学实践,探索了教学和考试改革的方法,取得了一定的成效,使得学生的素质得到较好发展,编程实践水平普遍提高,提高了学生的学习兴趣。需要指出的是,我们一直采用的是小于20人的小班教学方法。在这种师生比的情况下,教师的教学工作强度是可以承受的,学生发生抄袭现象也是容易被发现并制止的。非常明显,当学生人数增多时,这种教学方案会给任课教师带来很大负担。因此,不断完善教学和考试改革,使教学和考试体制更具科学性、合理性和适用性,以满足优秀人才培养的需求任重道远,我们仍需不断努力。
注释
① 张贞贞,宋连公.非计算机专业计算机基础教学模式探析[J].华北水利水电学院学报:社科版,2009(5):111-113.
② 金蓉,庄红,黄德生.面向能力培养的高校非计算机专业计算机基础教学改革与实践[J].计算机教育,2010(1):145-148.
③ 张居晓.提高高校非计算机专业计算机基础教学质量的策略[J].计算机教育,2011(2):54-57.
④ 吴春明,邹显春,杜云.高校非计算机专业学生计算机创新能力培养模式研究[J].西南师范大学学报:自然科学版,2011(5):240-243.
⑤ 刘智运.大学教学机制必须改革[J].教学研究,2011.34(3):9-11.
关键词:计算思维;VFP程序设计;计算机基础教育
中图分类号:G642 文献标识码:A 文章编号:1009-3044(2014)06-1271-02
目前,计算思维是计算机界关注的一个热点。自2010年7月,九校联盟(C9)西安会议提出计算机基础教学的核心任务是计算思维能力的培养以来,国内多所高校围绕计算思维与计算机基础教学改革进行了深入的研究和实践,发表了一些计算思维研究和实践方面的论文。在新的形势下,如何在大学计算机基础教学中,培养学生在各自专业领域中应用计算机和计算思维解决实际问题的能力,对于提高学生的创新能力和信息素养都具有重要的意义。
1 计算思维
计算思维是美国卡内基梅.隆大学计算机系主任周以真(Jeannette M. Wing)教授提出的。周教授认为:计算思维 ( Computational Thinking )是运用计算机科学的基础概念去求解问题、设计系统和理解人类的行为,其本质是抽象和自动化。
计算思维是数学思维、逻辑思维和工程思维的综合,是与阅读能力、写作能力和算术思维并列的第四种能力,能够提升人类的能力。就像识字、做算术一样,是人人都必须具备的思维方式。
2 VFP程序设计教学现状分析
Visual FoxPro(简称VFP)课程是面向高等学校非计算机专业学生开设的计算机基础教育课程。VFP作为计算机程序设计的一门基础课程,应注重学以致用。学习的重点不只是编写程序,而是学习算法思想与问题求解的思路,增强学生计算思维能力的培养。
但是,从目前VFP程序设计教学,尤其是非计算机专业现状来看,普遍存在以下问题。
2.1 课程学时少
随着计算机技术内容的不断更新,以及信息技术在中小学的普及,在新的形势背景下,计算机基础教学面临着新的挑战。人们对计算机基础教学产生了片面的认识。认为“计算机会用即可”、“计算机即编程”,造成学时被压缩,资源得不到充分的配置和利用。就我校的计算机基础教学改革来看,“大基”的学时由64变成32,时间压缩了一半,学生计算机基础水平有待提高。
VFP的教学课时相对“大基”课时虽然要多些,但对于非计算机专业的学生来说,计算机语言底子更是薄弱,想在短期内掌握一门计算机语言,十分不易。对于授课教师而言,既要完成教学目标,又要学生掌握计算机语言使用方法,并且在教学中形成学生的计算思维能力是非常困难的事情。
2.2 以语言知识为主,偏理论,轻实践
在实际教学中,很多老师以语言知识为主线,详细介绍语法规则等细节内容,上机操作多以验证为主,偏重考试内容而不是编程,这和课程的教学目的是相悖的。导致学生学习积极性不高,感到枯燥,学的不牢,编程能力和分析解决实际问题的能力没有得到提高,更谈不上运用计算机解决专业问题。
3 以培养计算思维为核心的VFP程序设计教学方法
3.1 以计算思维为主线,改进教学内容和教学方法
计算思维养成以计算能力的培养为基础,对教学内容的改革,不是完全改变原有的课程内容,而是内容的再组织与优化,突出核心内容和方法。
教师在上第一节课时可以介绍一个完整的系统,比如学生信息管理系统。在演示过程中告知学生,每项功能可由哪些知识实现,让学生对本门课程有一个系统开发的概念。并了解VFP数据库管理系统在各个领域的应用。学习本门课程的目的,不是为了顺利通过考试,而是能够独立开发一个完整的系统,并能解决自己的专业问题。
在实际的教学中,以培养学生计算思维能力为核心任务,采用“任务驱动”和“案例教学”的方法,针对不同的专业和不同层次的学生设计教学任务。按照“提出问题—分析问题—寻找解决问题的方法—介绍解决问题的方法和知识—方法和知识推广—课后作业和拓展”的教学片段设计思路,对学生进行计算思维的实践。
3.2 注重程序设计思想和算法训练
计算思维的本质是抽象和自动化。在教学过程中,可将相同或相近的知识点整合,设计相应教学任务,让学生了解程序设计思想和程序设计过程。如求解方程、求阶层等任务,可先让学生用数学方法来求解,再引导学生用抽象的计算机语言来实现。
启发学生利用多种技术、多种算法解决同一问题,围绕问题求解和设计能力培养。例如求解“1+2+3+……+100”,可分别考虑用for循环、while循环来实现。采用有趣的案例,比如“猜数游戏”,“幸运7”,“测试体重”等,用多种思路设计与多种编程方法实现。
3.3 以上机实践为重点
VFP是实践操作性很强的一门课程,学生只有亲自动手编写代码,调试程序,才能掌握和理解所学的知识,了解编程的思路和方法,训练思维能力。对此,教学过程中可以考虑以下方法:
3.3.1 设计合理的实验内容
由于实践课时限制,学生练习时间较少,首先要使学生熟练掌握基本的语言知识,具备基本的编程和调试能力,才能逐步引导深入。实验内容包含主要重点内容,难度适中,有一些让学生发挥的余地,在书上能找到所有知识点和类似代码,但又不是完整的照抄,有助培养学生的设计能力。
3.3.2 实验任务具有趣味性和综合性
通过实验任务的趣味性、综合性等来增强实验内容的难度,从而强化计算思维训练。如在“幸运7”游戏案例中,把一些枯燥和不易理解的知识,变成有趣的游戏。不仅让学生理解面向对象程序设计的相关概念,并对应用程序的开发流程有了一个综合的认识。通过拓展知识,让学生实现多位数的幸运数字游戏设计。通过反复训练,以提升学生计算思维能力。
3.3.3 安排课程设计实验
在程序设计课程的最后环节,安排课程设计。或结合实例,完成一个项目。为学生提供一个全面考查学生水平的机会,对所学知识进行融会贯通。
4 结束语
计算思维的教育,是一种普适教育,对任何类型的学生都需要培养。什么是计算思维,如何去理解它,每一位教师都应该充分地认识到它的重要性。只有改变了教师的意识,才能把计算思维的培养贯彻到自己的教学中,才能培养学生的研究创新能力,提高学生的信息素养。面向计算思维的计算机基础教学改革任重而道远,还需要不断的探索和改革。
参考文献:
[1] 何钦铭.计算机基础教学的核心任务是计算思维能力的培养[J].中国大学教学,2010(9).
[2] 李丽新.任务驱动教学法在Visual FoxPro程序设计课程教学中的应用[J].吉林建筑工程学院学报,2011(6):75-77.
信息生态观从社会环境的角度整体理解信息技术、人与社会的关系。该观点认为随着信息社会的快速发展,信息技术已不再是简单地创造物质财富的技术工具和技术系统,信息技术的每一次革新都深刻地影响着人的生活习惯和思维方式,乃至改变着整个社会生态环境。德国学者昆特(ThorstenQuan-dt)依据“人的生存空间”理论,分析了技术生态系统中各要素之间的互动过程,建立了“技术应用的三角模型”,认为“用户的知识结构和生活方式影响着他们对技术的选择和应用;信息技术应用不仅反映了用户需要的特征,同样会不自觉地把一些附属特征强加给用户,改变用户的特征;社会环境同样也影响着技术的应用的发展。三者中,每一要素的变化都会整响到整个媒介生态环境的变化”[4]。由此可见,在复杂多样的信息社会中,对信息技术的理解已不能只是“中性”的技术工具,还需要考虑技术、人、社会的相互关系,理解信息技术对社会正、负两方面的影响。在信息技术教育研究中,如果只谈“信息技术发展,忽视信息技术的社会人文特征”或“只谈信息社会的表面问题,忽视引发问题的内在技术原因”都是不全面的,甚至还有可能会引发更复杂的社会问题。信息技术“工具观”“系统观”“生态观”是人们对信息技术认识的一个发展性连续体。这个连续体既反映着信息技术对人类生活的影响程度,也表现出人们对信息技术的认识层次,一定程度上也影响着学校信息教育的开展。
信息技术教育:历史的考察
中小学信息技术教育可以追溯到20世纪50年代的计算机辅助教育。20世纪90年代,随着计算机技术、网络技术的发展,以及人们对技术与社会关系认识的深入,它逐渐演变成为一个目标多元、内容丰富、方法多样的现代教育领域,成为许多国家中小学的基础教育课程。考察国内外信息技术教育的发展历程,它大体经历了计算机程序、计算机应用、信息素养、信息生态等四个教育阶段。
1.计算机程序教育
20世纪70年代未,微型计算机的快速普及受到了教育学界的广泛关注。为占得信息化社会的先机,世界发达国家纷纷将计算机设置为中小学教育内容。1980年,英国实行了“微电子教育计划”(MicroelectronicEducationProgram),投巨资帮助中小学配置计算机和其它电子设置,开发教学软件,进行教师培训,改造中小学教材,使之渗透计算机教育内容。1981年,前苏联计算机教育学家叶尔肖夫在题为《程序设计——第二文化》中提出了程序设计文化的观点,他认为“是否具有编排与执行自己工作的程序的能力是人们能不能有效完成各种任务的关键。现代人除了传统的读写算能力以外,还应该具有一种可以与之相比拟的程序设计能力,这种能力可以帮助人们从小培育一种程序设计意识与能力”[5]。此观点清晰地反映出“算法思维”的理念,并希望通过计算机程序的学习,培养学生解决问题的方法和策略,引发了计算机教育界的共鸣。随之,程序设计成为计算机教育的重要内容。受程序设计文化的影响,我国中小学计算机教育在试点期也将“发展学生程序设计能力”作为主要的教育目标。1984年教育部(当时的国家教委)颁发的《中学电子计算机选修课教学纲要(试行)》就提出了“掌握基本的BASIC语言,并初步具备读、写程序和上机调试的能力”。从实施成效来看,程序设计教育为青少年创造了接触和了解计算机的机会,推动了计算机文化的普及。但是,从学生学习心理和学习过程来看,脱离了具体生活情境、忽视学生自身学习特点、抽象地向学生灌输计算机程序结构知识,无疑也是对青少年身心成长的一种摧残,因此,计算机教育过程中,如何调动学生学习积极性,激发学生学习兴趣,适应社会需要就成为计算机教育的新挑战。
2.计算机应用教育
20世纪80年代中期计算机操作系统和应用软件日趋成熟,一些数据库管理系统(Dbase)、电子报表系统(Visculc)、文字处理系统(WordStar)开始安装到微型计算机上,越来越多非专业的人员从事计算机应用日常工作。1985年美国东田纳西州大学科尔教授在第四届计算机教育应用大会上发表了题为《面向职员的计算机课程》的论文,在报告中将计算机文化教育的目标界定为“应用者能够在自己的教学科研、管理服务中把计算机作为一种有效的工具使用,其教学内容应该包括文字处理、电子报表处理、数据库、图像处理等应用软件的使用”[6]。社会对计算机应用的现实需求促进了计算机教育从“程序设计”向“计算机应用”的转型。我国教育工作者也对当时中小学计算机教育进行了反思,指出“名为计算机课程却只讲BASIC语言,给学生造成计算机就是BASIC,BASIC就是计算机的错觉”。1994年,在总结前期计算机教学实验的基础上,教育部颁布了《中小学计算机教育指导纲要(试行)》,将“培养学生利用现代化的工具和方法去处理信息;培养学生分析问题、解决问题的能力,发展学生的思维能力”作为中学计算机教育的两项重要目标,学习内容也从前期的BASIC程序设计拓展为“计算机基础知识、计算机基本操作与使用、计算机常用软件介绍、程序设计语言、计算机对现代社会的应用以及对人类社会的影响”5个模块。“计算机学以致用”的观点有着它的合理性,能够激发学生学习动机和掌握这种技能的积极性,特别是对即将毕业寻找工作的高年级学生来说,能够增加一门非常实用的技能。但是,基础教育阶段教育的目的毕竟不是完全的社会职业教育,更重要的还是促进学生综合素质的发展[7]。如果过于强调计算机技能教育,忽视计算机应用道德的培养,也可能会出现应用着“由人类理性创造的计算机工具,做着不理智、乃至计算机犯罪的事情”。
3.信息素养教育
20世纪90年代,信息技术发展日新月异,信息总量的膨胀冲击着人们工作与学习的各个领域,计算机应用教育已很难应对信息化社会的挑战,发展学生利用信息技术解决问题的能力,培养信息素养已为人们所共识。早在1989年,美国图书情报协会就分析了信息社会对公民的素养要求,认为“具有信息素养的公民,能够根据个人的信息需要,有效地检索、评价和使用信息的综合能力”[8]。艾森堡(MikeEisenber)等人在此基础上创立了发展学生信息素养的6种基本技术:(1)任务确定;(2)信息搜寻策略;(3)检索和获取;(4)信息应用;(5)信息创建和展示;(6)信息评价。随后,美国一些州(例如,北卡罗来纳州、威斯康辛州等)开始以课程整合的方式普及中小学信息素养教育。20世纪90年代,英国政府将信息技术(ICT)正式列入国家中小学课程,并将教育目标界定为:(1)了解和使用信息技术;(2)学习利用信息技术开展各学科的学习;(3)培养学生利用信息技术解决问题的能力。推动了英国信息技术教育的发展。2000年,我国教育部在北京召开的“全国中小学信息技术教育工作会议”上决定用5到10年时间,在中小学普及信息技术教育,并将信息技术教育课程列为中小学的必修课程,提出信息技术教育的主要任务之一就是要“培养学生的信息素养”,随后的《普通高中信息技术课程标准》把提升学生信息素养作为课程建设的总目标。信息素养教育将信息知识技能的学习融入到学生利用信息技术解决问题的现实情境之中,强调学生在信息社会中需要注意的问题,养成良好的信息技术应用习惯,这无疑为学生今后在信息社会中健康成长创造了条件。但是,信息素养教育并没有从信息环境的内在特征分析技术、人、社会之间的关系,没有引导学生从根本上思考信息技术可能会带给人们潜在危机,因此,“缺少了批判性分析信息的意识,当学生微笑地享受着信息环境中的娱乐,却不知为何而微笑时,当学生控制着‘电游’操作杆,却被‘电游’所控制时,世界就已不再是美丽新世界”[9]。
4.信息生态教育
计算机和网络通信技术的革新推动了信息全球化的发展。随之,大众传媒摆脱了传统的单向、线性、控制的信息传播模式,进化为多元、互动、开放的信息环境。信息受众也从被动的“接受者”成长为信息“者”。在此充满“新奇、变幻,乃至诱惑”的信息环境中,信息技术教育也正接受新的冲击与考量。其教育目标就不应局限于“信息技术”的掌握,甚至也不应只停留于“生活问题”的解决上,还需要帮助青少年正确认识技术、个人、社会的相互关系,发挥信息技术的积极因素,将其可能会带来的负面影响提前消解于信息生态系统之中。波斯曼在对“媒介信息给社会所带来的现实问题”研究中指出“媒介生态关注的是信息环境交流的工具和技巧是如何控制信息的形式、数量、速度、分类以及方向的。同时,这样的信息构造与偏见也影响着大众的观点、价值观和态度”[10]。可见,信息技术教育研究在关注“技术教育”的命题时,也要关注“人在信息环境中的行为以及形成的社会关系”命题。即:(1)技术层面的命题。包括信息交流的技术特征、基本概念、和操作程序等。(2)信息社会情境层面的命题。即使是相同的信息工具传递相同的内容,在不同的社会情境下表现出来的意义也可能不同,在现实情境中理解信息显然是一个重要命题。(3)人与技术关系层面的命题。不同知识结构和生活背景的受众对信息技术及其表达信息的理解是不一样的,反之,信息技术工具及其表达的信息对不同的受众有着不同的影响。2010年,美国教育技术协会在《学生教育技术标准》的修订版中反映了信息生态的理念,增加了“批判性思考”和“数字化公民”的指标,指出“学生要具有批判性选择工具和资源,理解与技术相关的人、文化、社会的相关问题,安全合法负责任地使用信息和技术。”信息生态教育已经摆脱了“纯技术”教育狭隘观念的束缚,从生态学的视角来理解信息环境中各要素的关系,希冀帮助青少年在“学技术”“用技术”的基础上,也能够从现实情境中,批判性地认识技术变革给信息环境带来的整体生影响,从思想和行为上预防可能出现的信息问题。
信息技术教育:现实的追问
伴随着信息技术革新和人们对信息社会认识的深入,信息技术教育的内涵得以不断丰富和发展。受技术特征和应用环境的影响,不同时期表现出不同的教育内容、教育方法和教育目标。尤其在信息爆炸的今天,教师该如何开展信息技术教学?家长又该如何帮助孩子合理应用信息技术?这还需要从我国的现实情况谈起。
1.信息技术教育是要学生“抵制”信息技术吗
信息技术的发展与普及为青少年创造了全新的学习环境,但带来了前所未有烦恼和困惑。“网络成瘾”“沉迷手机”“远程作弊”等事件都引发了社会对信息技术教育的热议和关注。一些家长不惜使用“没收手机”“电脑上锁”“切断网络”等严防死守的方式阻止孩子接触信息技术,在调研中一种家长如是说:“最初给孩子买手机是为了知道孩子上学情况。我们上班忙,没法接送孩子,通过手机可以知道孩子是不是按时到校、是不是安全回家。可是,现在的手机功能越来越强大。自从孩子用上iPhone,吃饭拿着手机,走路拿着手机,甚至洗澡也把手机放在手边。全家人在一起说话的时间比以前少多了,最糟糕的是我发现他还通过手机抄袭同学的作业,这学期学习成绩明显下降。依我看,如果能教育孩子彻底远离信息技术最好”。在信息社会到来的今天,青少年是否真的需要与信息技术隔绝呢?事实上,无论从信息技术发展目的,还是从社会生存需要来看,这都是不可能的。首先,信息技术是人类文明进步的工具。从收音机、电视机到计算机和互联网,信息技术的发展都适应着当时人类社会的需要,推动着社会时步。在人类文明史上,信息技术的每一次飞跃,都使得“人体得以延伸”。“因噎废食”、不加分析地将青少年与信息技术隔离开来,无异于关闭了青少年利用信息技术自我发展的大门。其次,信息技术已成为我们日常生活必不可少的工具。在信息技术日益发展的今天,数字化技术渗透到社会生活的各个角落,网络银行、数字化图书馆、远程学习等信息技术工具彻底改变着人们生活与学习的方式。如果不加选择地拒绝信息技术,也就阻碍了青少年在信息社会中学习生存的机会。由此可见,开展学校信息技术教育,绝不是要求青少年完全抵制信息技术,当然也不是让儿童在信息技术环境中放任自流,而是要根据信息生态环境与青少年成长的特点,发展青少年“使用信息技术而不是为信息技术所利用的能力”[11]。
2.信息技术教育等同于“操作技能”训练吗
信息技术是我国中小学教育的必修课程,它以提高学生信息素养为目标,强调同学合作解决问题,引导学生在信息获取、加工、管理、表达与交流中,掌握信息技术、感受信息文化、增强信息意识。然而在教学实施过程中,一些教师依然偏重于技能操作与训练,忽视现实问题解决能力和信息情感的培养。访谈过程中,一位教师表达了他对信息技术教育的认识:“根据学校课程纲要,我们学校在三年级开设信息技术课,涉及的内容主要有信息与计算机基础知识,应用软件学习和网络应用等内容。其中,信息与计算机基础知识包括信息的定义和特征、计算机的发展史、组成和工作原理。应用软件主要学习文字处理、电子表格、演示文稿等基本的操作与应用。网络应用包括用浏览器收集网络材料、学习使用电子邮件等。此外,我们学校四年级校本课程中,学生还可根据个人爱好选修‘机器人制作’的校本课程,进行算法与程序设计、组件安装训练”。分析调研材料发现:当前一些教师还是将信息技术教育简单等同于信息技能的学习,认为信息技术教育就是让学生掌握一些操作技能,完成一些简单的信息作品。实际上,无论从基础学力教育理论,还是从国际信息教育发展趋势来看,当前青少年信息技术教育都已超越了传统的知识记忆与技能训练,应用信息技术解决现实问题,理解技术、人与社会的关系日益受到重视。现代学力观认为“基础学力大体可分为两个侧面:其一是‘实体性侧面’,包括诸如知识、技能之类的能够借助测验测定的显性学力;其二是‘功能性侧面’,包括思维能力、学习动机的隐性学力。”从学力的综合发展来看,信息技术教育不应仅限于显性的信息知识与技能,还应包括解决实际问题、良好信息技术价值观等隐性内容。从国际信息技术教育发展的经验来看,基础信息技术教育绝不能等同于信息技术职业教育。如果在基础教育一味强调信息技能的发展,无视信息生态环境的复杂性和多样性,这势必会在基础教育阶段陷入“培养技术员式的陷阱(Tech-nicistTrap)”[12]。
3.学校信息技术课程是“鸡肋”吗
严峻的社会现实问题增强了学校信息技术教育的迫切性。2010年颁布的《国家中长期教育改革和发展规划纲要(2010-2020年)》就明确提出“鼓励学生利用信息手段主动学习、自主学习,增强运用信息技术分析解决问题能力。加快全民信息技术普及和应用”。那么在学校层面,该如何开展信息技术教育?又如何鼓励学生在学习过程中利用信息技术自主学习?一些学校的教育管理者提出了自己的困惑。访谈中一位校长谈了自己的想法:“信息技术作为一门必修的基础课程已为大家所共识。但是,从近年来课程实施成效来看,信息技术却处在一个‘尴尬的地位’。一些学生和家长认为,它‘文’不如语文、英语,‘理’不如数学、理化,一些信息技术教师认为,随着信息技术应用的‘普及化’和‘傻瓜化’,学生会越来越容易掌握相关的操作技能,信息技术在将来也许会淡出学校基础课程,失去其存在的意义。”信息技术是一门年轻的基础教育课程,庄子云“始生之物,其形必丑”。当前,中小学信息技术课程实施确实存在一些困难,例如,课程设计、活动组织、学习评价等方面都还有不完善的地方,给人们以“鸡肋”的感觉。但是,从我国的教育现状和国际前沿教育发展分析来看,信息技术课程都有着其存在的必要性和合理性。其一,“教育机会平等”要求信息技术课程的存在。受经济发展不平衡的影响,我国区域教育还存在着不平衡的问题。如果信息技术不能以学校课程的形式存在,就很难保证学生学习信息技术的平等机会,加剧区域教育的“数字化鸿沟”。其二,从国际发展的维度来看,为了加强国家竞争力,占得数字化发展的先机,日本、韩国等国家都制订了国家课程标准,以学科的方式开展信息技术教育。近年来,美国一些州也纷纷制定信息技术教育标准,以媒体技术、计算机等课程方式展中小学信息技术教育。此外,中小学信息技术知识技能体系的不断完善、教育研究队伍的不断壮大,也有利于信息技术课程的建设和发展。
芭芭拉•莉斯科芙(Barbara Jane Huberman Liskov) 1939年11月7日生于美国加州洛杉矶市。1961年在加州大学伯克利分校取得数学学士学位,此后去麻省,作为计算机程序员先后进入Mitre公司和哈佛大学工作。1963年,她重新回到旧金山,进入斯坦福大学人工智能项目组,作约翰•麦卡锡教授(1971年“图灵奖”得主)的研究生。1965年获硕士学位,1968年获得计算机科学博士学位,成为全美国第一位计算机科学女博士。在麦卡锡教授的指导下,她的博士论文是编计算机下棋残局的程序(Dissertation: A Program to Play Chess End Games)。
离开斯坦福大学,芭芭拉•莉斯科芙重新回到Mitre公司(1968C1972)工作,此后她成为MIT电气电子与计算机科学系的教授,直到现在。1986C1997年,她担任软件科学与工程的NEC教授,1997年后担任计算机工程的Ford教授,2008年后担任MIT的研究教授,这是MIT的最高荣誉。芭芭拉•莉斯科芙培养了25位博士生,她的这些学生又培养了81位博士生。
2009年3月10日,美国计算机协会(ACM)宣布2008年度“图灵奖”授予芭芭拉•莉斯科芙,以表彰她在编程领域的奠基性贡献。ACM的颁奖词是:表彰她“在编程语言和系统设计,特别是在数据抽象、容错和分布式计算方面对实践与理论基础的贡献”(For contributions to practical and theoretical foundations of programming language and system design, especially related to data abstraction, fault tolerance, and distributed computing)。
莉斯科芙领导了许多重要的项目,包括小型低成本交互式的分时操作系统设计范例Venus、第一个支持数据抽象的面向对象编程语言CLU的设计与实现、第一个支持分布式程序实现的高级语言Argus、面向对象数据库系统Thor,还有最近的Byzantine分布式容错系统。其中,CLU语言对现代主流语言,如C++/Java/Python/Ruby/C#都有比较深远的影响,而她从这些实际项目中提炼出来的程序模块化和数据抽象思想,已经成为软件工程中最重要的精髓之一。她的另一个在程序设计中广泛应用的成就,是与周以真(Jeannette Wing)一起提出的Liskov替换原则,即“派生类(子类)对象能够替换其基类(超类)对象被使用”――这是面向对象最重要的原则之一。华裔女教授周以真现在是卡内基梅隆大学计算机系系主任。
美国计算机协会认为,莉斯科芙在计算机编程领域带来了革命性的创新。MIT官员拉斐尔•雷夫表示:“她的杰出成就已经跨越了学界的高墙,改变世界的日常生活。你每次和朋友交换邮件,检查银行账户,或者是搜索Google,都是在利用莉斯科芙的研究成果。”
莉斯科芙早期在计算机软件设计领域的成就已经被纳入到多种计算机编程语言中,她在程序模块和数据抽象上的研究成果帮助软件更加容易编写、修改和维护。莉斯科芙表示,她的工作和“模块化”有关系,将复杂的系统拆分成小的模块,使它们变得更简单。
2009年6月27日,在加州圣迭戈举行了“图灵奖”的颁奖仪式。图1为授奖晚宴留念,从左向右为:ACM 2008年主席Dame Wendy Hall(大英帝国女勋爵、英国南安普敦大学教授、英国计算机协会会长),英特尔公司企业技术事业部副总裁兼英特尔研究部门总监钱安达(Andrew Chien),谷歌副总裁Alfred Z. Spector,芭芭拉•莉斯科芙,ACM CEO约翰•怀特(John R. White )。
从1968年全美第一位计算机科学女博士,到2008年全世界第二位女性“图灵奖”得主,芭芭拉•莉斯科芙辛勤工作了整整40年。
关键词:游戏教学法;游戏案例;激励机制;案例教学
中图分类号:G431 文献标识码:A 文章编号:16727800(2013)009019203
基金项目:国家自然科学基金项目(61171075);湖北省自然科学基金项目(2011CDB297);武汉市教育局重点科研项目(2011020);湖北省教研项目(鄂教(2011)32);湖北省教育厅科研项目(B20129003);湖北省教育厅科学研究项目(B2013254);校本重点研究项目(2013JZ06)
作者简介:周方(1982-),女,硕士,武汉生物工程学院计算机与信息工程系讲师,研究方向为分布式系统与软件工程。
0引言
纵观笔者所在院系人才培养方案,除去专业实习与毕业设计环节,专科学生在校学习5学期,程序设计类课程开设共持续4学期,本科学生在校7学期,程序设计类课程开设共持续6学期,虽然经过长时间的系统学习,但是效果并不理想。该系针对面向过程和面向对象两类程序设计类课程,开设有《C语言程序设计》、《面向对象程序设计》、《Java语言程序设计》、《Delphi语言程序设计》、《C#语言程序设计》、《.Net语言程序设计》等一系列程序设计类课程,期望用程序设计语言的高覆盖率换取高就业率。但大多数学生均感觉投入了过多的精力,却没有精通任何一门程序设计类语言,并且从事计算机相关工作的毕业生
人数比例不到25%,这与人才培养初衷出现了严重的不一致。针对该现象,汲取各程序设计类课程任课教师的经验,在现有教学学时的基础上,通过调整人才培养方案,寻找各类程序设计类课程教学方法、教学内容、考试方式、教学评价等的通用性研究,并构建知识共享平台,摸索出一套适合本校校情的程序设计人才培养模式,并争取向其它兄弟院校推广。
1游戏教学法定义及创新
所谓游戏教学法,就是在分析常规教学方法的基础上,结合在校大学生爱玩游戏的实际情况,采用学生普遍感兴趣的游戏案例作为载体,教学过程中,注重与学生平等、信任关系的建立,实现“寓教于乐”的最高境界。具体创新如下:
(1)该方法通过深入剖析计算机相关专业程序设计类课程之间的关联关系,将其组成群组进行立项研究,通过调整教学大纲、注重第一门程序设计课程的教学、利用案例特别是游戏案例进行知识点讲解等方式,从多个角度激发学生学习程序设计的积极性,达到提高学生工程实践能力的目的。
(2)该方法首次将软件产业中的角色定位和角色职能,引入高校计算机教学课堂,以便学生对该行业有所了解,更早、更好地涉及该领域,从而定位和充实自己的职业生涯。
(3)该方法在进行案例教学过程中,以小组协作方式进行学习,以提高学生的团队合作意识;依照“将课堂还给学生”以及“授人以鱼,不如授人以渔”的思想,让学生自己组合成小组,自己参与管理,摸索适合自己团队的激励机制,促使学生在提升程序设计能力的同时,也相应提升其管理能力,这样有助于培养技能和管理相结合的复合型人才,全面提高学生的综合素质,以适应我国软件产业迅猛发展的需要。
(4)本项目研究坚持强化学生的抽象思维能力和设计(动手)能力的培养,从教学过程的一点一滴入手,逐步引导学生建立创造性学习和创造性工作的意识,以达到培养创新人才的目的。
(5)本项目以游戏案例为载体,快乐学习为理念,通过寻找程序设计类课程教学的通用性并建立通用性案例库等方式,达到缩短能力培养周期的目的。
2游戏教学法具体内容
该教学方法以《C语言程序设计》、《C++语言程序设计》为主,《数据结构》和《数据库》为辅,通过对这4门计算机软件系列类课程立项进行研究,针对学生爱玩游戏的特点,通过对知识点进行提取、整合,构建核心知识体系,将其融入到游戏案例中, 从教学计划、教学案例、教学方法、教学模式、教学内容、教学反思、评价体系、考核形式、激励机制等9个方面进行研究,具体内容如下:
2.1教学计划研究
虽然网络游戏已经盛行,但暂时还没有进入高校计算机专业的课堂教学,因此很难借鉴其它兄弟院校的教学计划,而培训机构和游戏公司却充当了先行者。可以借鉴其课程体系结构和人才培养方案,例如:开设游戏策划基础、游戏构架设计、Flash、Flex、Java、网络游戏程序设计、网络游戏算法设计、游戏数理概论、游戏渲染技术、游戏平台设计、游戏组建开发等课程。
2.2教学案例研究
建设程序设计专用案例库,以便复用。以游戏案例为切入点,结合当前计算机业内的热点,选取游戏中的某个片段,结合程序设计的理论知识,带领学生去实现,例如:人人网、腾讯网、雅虎网平台上的社区类游戏。案例收集过程中,兼具趣味性和实用性,例如:交通信号灯程序、打字程序、计算器、猜数程序等,以此来吸引学生,学生对其了解后,可进行适当的完善和修改,以培养其创新意识。
2.3教学方法研究
教学过程中,要综合考虑学生的知识水平、认知规律、学习特点和接受能力,同时也要清楚地意识到第一堂课的重要性。能否上好第一堂课,直接影响到整个课程的学习,在上第一堂课时,教师应帮助学生明确学习该门课程的目的和学习任务,建立一个完整的学习框架,使学生能树立为用而学的学习动机。在课前充分了解学生的基本情况,包括他们的入学起点、已学课程、对该门程序设计类课程的认识和需要、兴趣爱好和关心的话题等,还要对课堂上可能遇到的各种问题予以充分估计,并拟定多种相应的教学方案。
讲解知识点时,加入公司实际运作时岗位分工的介绍,例如:美工、前台程序员、后台程序员、游戏策划、运维等工作人员应具备的知识体系等,让学生依据自己的兴趣爱好,有针对性地培养和提高自己在该方面的能力,以便更早、更快地与工作接轨。
2.4教学模式研究
采用“以例激趣—以例说理—以例导行”的教学模式,激发学生的求知欲和表现欲,寓教于乐。心理学研究表明,良好的心境可以使思想活跃,思维敏捷,表达欲增强。游戏能激发学生的学习兴趣,能给课堂营造良好的氛围。游戏活动能激发学生的创新意识,针对青少年模仿能力强、好动、好玩、爱表现的天性,将游戏元素引入课堂,通过游戏案例对程序设计类课程教学方法进行改革,打破传统的“概念—命令—程序”一条线的教学安排,让学生能够轻松接受新知识,调动他们主动学习新知识、探索新方法的积极性,使得学习逐步进入一个良性循环的轨道[1]。
2.5教学内容研究
重设授课内容顺序。程序设计类课程,通常是按知识的体系结构进行组织,即“数据类型—基本结构—数组—函数—模块与项目—文件”的章节顺序,在课程起始阶段,系统地讲述各种数据类型和基本语句,需要花费大量的时间,映证相关内容重要性的例子又相对缺乏,导致许多学生在此阶段开始就丧失了学习的耐心和兴趣。按此授课内容顺序不利于案例教学法的进行,而授课时以案例为载体,将核心知识体系贯穿其中,则有利于加强学生对抽象知识的消化与吸收。
2.6教学反思研究
教学反思是教师进步的阶梯,是教师进步的重要途径,进行教学反思能够充分激发教师的教学积极性和创造性,并为其专业发展提供机会和条件。教学反思鼓励教师通过多种策略和方法审视、分析自身的教育观念及教学活动,充分尊重教师的主体地位,发挥教师的能动性、积极性和创造性。只有通过不断的教学反思,才能够逐渐提高教师的教学监控能力,提升教师的专业素质、综合水平等[2]。
2.7评价体系研究
要检测教学效果,必须有完善的评价体系,只有各个方面的评价指标都较高,才能真正做到教与学的完美结合,从而促进游戏案例教学在程序设计类课程教学中的发展。评价主要包括两个方面:对学生而言,应该从知识的掌握程度、理解程度和是否具备了独立设计管理软件的能力等指标来进行评价;对教师而言,主要从案例的选取、课堂实施效果以及教学艺术等方面进行评价。
2.8考核形式研究
计算机程序设计类课程的实践性决定了它不注重学生死记硬背各种语法规则,而看重学生利用程序设计解决实际问题的能力。因此,可以将考试形式多样化,采取闭卷、开卷、考查、免考、实验报告、口试(类似于毕业答辩)、现场操作、小论文、作品等方式,精心营造“创新”的浓厚氛围,通过全程考核来激发学生学习的主动性和积极性。
2.9激励机制研究
激励有两种对象:一种是游戏玩家,对游戏而言,激励就是游戏的可玩性,即如何使得玩家能够对某个游戏乐此不疲。从游戏的视觉效果、声音效果,到人物设计、剧情编制,乃至规则制定、操作设置等方面都充分发挥其激励作用。将玩家类型分为成就型玩家、探索型玩家、社交型玩家和杀手型玩家,研究其特点并制定相应的激励机制;另一种是学生,在项目的分工合作中,也需要构建健全的激励体系。
3结语
本方案已在笔者所在院系实施了3年半的时间,效果良好。该教学方法的实施,不仅提升了本系计算机相关专业学生的程序设计能力,而且锻炼了学生的创新思维能力。通过对学生进行试点,并跟踪调查,提升了学生在程序员岗位的就业率,同时也提高了学生对计算机相关专业的认知度和对学校的认可度。
参考文献:
关键词:移动学习,C语言程序设计,教学
1 移动学习
移动学习(M-Learning)是借助移动互连技术,使用移动计算设备(智能手机、PDA、移动电话等)实现学习者随时随地进行不同目的、不同方式的学习[1]。移动的内涵包括:形式上是移动的,即学习者不再受时间、空间和有线网络的限制,可以随时随地进行不同需求、不同方式的学习;学习环境是移动的,学习资源和学习者也是移动的;内容上是互动的,进行教学活动的双方实时交流,教育信息、教育资源与教育服务依靠移动计算技术和互联网技术实现双向“移动”,教与学相互促进,才能更充分的体现移动学习的优越性;实现方式上是数字的,移动学习是基于无线移动设备进行的数字化学习,它是在数字化学习的基础上发展起来的,是远程学习发展的一个新阶段[2] 。
现阶段的移动学习受技术条件的制约,通常作为高校教学的一种辅助学习模式,主要应用于管理和为学习支持服务提供“交互”通道,学生和教师通过使用移动设备(如手机等)方便、灵活地实现交互式教学活动。高校移动学习的主要应用模式分为三大类:基于短信息的在线移动学习,基于连接的在线移动学习以及存储移动学习模式[3]。基于短信息的在线移动学习具有使用费用低,设备普遍支持等优点,主要应用于通信数据少并且可用简单文字描述的学习活动和学习服务,可用于向学习者发送课程安排、考试安排和考试成绩等信息,提供指导、激励和支持等作用。基于连接的在线移动学习和存储移动学习,需要建设WAP站点,提供能够支持移动设备访问和下载的学习资源,着重选取能够贴近学习者生活和工作同时又较为时尚和流行的主题作为学习内容。存储移动学习和基于短信息的在线移动学习将是目前在高校中最切实可行的移动学习应用模式[4] [5]。
2 C语言程序设计课程特点
C语言作为当今最为流行的程序设计语言之一毕业论文范文,不仅是计算机专业的必修课,也是很多
非计算机专业的学习课程。随着计算机的普及,学生运用计算机的能力越来越强,但计算机程序设计课程因其较复杂的语法、编程等知识,依然是众多学生学习上的“拦路虎”。
C语言程序课程知识点琐碎,概念繁多,理论不易掌握;概念抽象且复杂,包含的数据类型和运算符丰富,需预习与复习相结合才产生较好学习效果;对应的规则繁多且易混淆,使用较为灵活,容易出错,使得学生容易产生畏难、厌倦情绪;理论与实验教学学时分布不均衡,导致课堂教学中,对如何分析和解决问题讲得不够充分,学生编程思路不清楚;实验过程中,不能将理论知识应用自如,在处理实际问题时往往不知从何入手,需要在平时教学中注意培养学生动手能力[6][7]。
C语言程序课程的这种特点,适合采用移动学习作为其辅助教学方式。针对C语言理论性强的特点,可以在课前课后发送定时短信,提示预习摘要求较高,不好的缩进格式影响其呈现效果,结构化风格使得程序占用篇幅往往较长等等,这些因素均会制约移动设备的可读性。
3移动学习在课程教学中的应用
根据上述分析,设计移动学习方式如下:总体原则,以传统教学方式为主,移动学习方式为辅,移动学习方式充当课堂教学的重要补充,能够实现课堂知识的延伸,指导和激励学生进行更深层次的学习和实践。实现方式,主要采用基于短信息的在线移动学习方式,配合基于连接的移动学习空间、论坛,以及存储移动学习资源建设。针对课堂教学,精心设计课前案例,提出驱动式问题,相关预习提示,课后设计相关重点回顾,知识点延伸,以短信形式发给学生,对于短信不能很好显示的内容可以邮件形式发送给学生,或者放在相关网站上,以消息的形式提醒学生查收。软硬件支持:考虑到学生普遍拥有设备的程度,将移动设备限定在普通移动手机,软件使用中国移动飞信校园版(EFetion_campus)[10],可以支持PC端向移动手机的短信群发,通过飞信、群、语音、邮箱、空间等多种方式实现互联网、移动网间的无缝互通毕业论文范文,还可以使用日程提醒,邮件提醒等功能打造个性化的学习指导。移动学习具体实现方式如图1。
图1 移动学习应用模式图
3.1功能模块介绍
移动学习做为一种辅助教学模式,能够参与到C语言课堂教学的课前准备,课后辅导以及实验指导等方面。
3.1.1短消息学习模块
(1)课前预习提示。可将每节的学习目标、重点、难点发送给学生,也可发一典型程序,加驱动式问题,发送到邮箱里,同时设置邮件提醒功能。
(2)课堂内容回顾。对前面课程学习过的知识内容以短信形式发给学生,提醒其回顾。
(3)作业提示、阶段测试。也可仿照上述短信设置方式,定时群发给所有的学生。
3.1.2移动学习空间或论坛
移动学习空间既可以方便学生在线浏览,也要努力适应基于连接的移动学习访问,其资料下载模块提供的学习资源,也要支持移动终端设备。移动学习论坛,实现学生自由交流空间。在移动学习论坛上定期设置讨论专题,既可以是关于某个错误进行分析,也可以针对相关程序选题集思广益,还可以是对当前教育进行探讨等等。
(1)课堂内容延伸。可提供诸如:MSDN使用介绍,帮助学生自如设计C/C++程序等;CSDN论坛介绍,提供同资深程序员交流学习的平台。
(2)常见错误提示分析。提供调试程序基本步骤,常见错误解读及可能出错原因。
(3)课程设计选题。设计相关程序选题,使其能够体现课程各个阶段的进度,并且具有一定的实用性,趣味性,能够调动学生的学习积极性。
(4)测试空间。提供一些历年试题,可以帮助学生巩固理论学习。
(5)教育思考。定期对教学进行总结,寻求更好的教学方式,也可以一些高校精品课程网站链接。
(6)资料下载。课程内容的各种学习资源,如PPT课件、多媒体课件、部分课程的录音、录像等;有关课程的各种辅导资料,如各章节的知识要点、课程设计任务库、程序设计案例库、试题库等都可以作为下载的资料。
3.2移动学习内容设计
在高校教育中,学生同时需要进行多门课程的学习,如果在针对某一门课程实施基于短信息的移动学习方式时,设计过多的短信内容,或者发送较多的次数,都将会给学生造成信息轰炸,带来过重的信息负担。配合C语言程序课堂教学,在课前课后发送两条飞信,每次不超过5页,对于无法以短信内容呈现的资源就发送到邮箱,同时以短信形式提醒学生注意查收。程序设计课程所涉及程序对格式要求较严格,一个程序案例通常占用较多篇幅,此时以邮件的方式发送较为合适,同时在相关论坛上设置讨论专题,根据学生回答设置最佳答案,统计学生活跃度,作为平时成绩参照。图2为课前预习的飞信基本内容设计。
图2 飞信基本内容设计
把课程内容按照“章-节-知识点”的层次模式进行组织,整理出每章每节的学习目标、重点、难点、学习指导、参考资料等内容毕业论文范文,并概要总结出每个知识点的核心内容和若干测试题目,学习者可以通过短信息随时随地自由学习、复习这些重要的知识点,并对学习的效果进行测试。设计短信内容时需考虑程序格式问题,屏幕显示行数,尽量控制在8行*5屏=40行,每行8字以内,不要以图片的形式发送(涉及彩信资费问题)。
另一方面,为课程的核心内容提供文档、PPT课件、课程录音、课程录像等多种媒体格式、适合多种移动终端的学习资源,满足学习者不同的学习需求和学习习惯。学习者只要把这些资源通过教学网站,下载到自己的移动终端上,当他们在教室外面、公共汽车上等地方时,都可以通过移动终端来浏览这些学习内容,充分享受移动学习的便捷与方便,而且不需要承担高昂的移动通讯费用。但是供下载的资料要充分考虑移动学习的特点,不仅要考虑学生的设备支持程度,还要考虑移动学习的片段性特点,对其中的部分资料需要进行特殊处理使其适合移动学习方式,主要处理原则,按知识点,将文档,影音资料都处理成片段,确保一个片段一个知识点,每个片段持续10分钟左右。
4 实验分析
借助中国移动飞信校园版,上述大部分移动学习方式都可以实现,从PC端到手机客户
端可以方便的实现短信群发,只要不超过一定数量,免费且易于操作。学生也分常乐意参与到这种形式的移动学习中来,非移动用户除了在接收短信受限之外,也可以加入飞信校园版PC端,可以共享资源。实验证明,使用移动学习方式作为程序设计课程的辅助教学方式能够大大调动学生学习的积极性。但是在学生中间出现了两级分化的现象,部分同学兴趣高涨,能够充分利用提供的学习资源,学习进度甚至出现超前现象,另外一部分同学上课时也在查看手机,学习不仅没有进步,反而沉迷于手机上网。这种现象提醒大家不仅应该注意实施移动学习的方式,同时还要加强大学生的思想教育,使其认识到网络资源的便利性和危害性,能够主动的去寻求有益的资源来提高自己。
使用飞信实现移动学习还有以下必须注意的地方:(1)飞信中涉及大量广告,容易分散学生注意力。(2)短信数量过大,易给学生造成信息轰炸,要限制性的使用。(3)需警惕不法分子盗取飞信或手机号,进行诈骗。可以利用飞信的二次开发功能,屏蔽其他模块,使其更适合校园使用。
移动学习对学习者也要有一定要求毕业论文范文,比如说需要一定的自学能力,自制能力,以及较强的学习动机等[8][9]。现阶段的移动学习在高校教学中应该起辅助作用,但不能排除其对研究生,博士生及在职人员充电的作用,所以还是要做好移动资源的建设工作,注意打上数字签名保护知识产权。
5 结论
当前,移动学习是教育界的研究热点。将移动学习方式引入语言类课程的教学中已取得较大进展,但将其应用到C语言程序设计课程教学中来,还属于尝试阶段。移动学习给教学改革注入新鲜活力,其对高校教学的促进作用,不仅依赖教师的合理使用和学生的大力配合,还依赖于软件平台的设计。本文所使用的飞信校园版,受到发送短信条数,广告绑定等不利因素的限制,不仅要考虑课程特点,还要考虑软件的使用规则,不能充分发挥移动学习的优势。下一步需要改进的地方,不仅在于移动学习资源的建设,还要建设实施移动学习的软件平台,不仅要适合移动终端在线浏览,还要能够与校园各个系统整合,充分利用现有资源,更加适应程序设计课程的要求。
参考文献:
[1]德斯蒙德·基更.移动学习:下一代的学习[J].开放教育研究.2004
[2]刘豫钧,鬲淑芳.移动学习——国外研究现状之综述[J].现代教育技术.2004
[3]王建武.3G网络下基于彩信的被动式移动学习实践研究[D].西安:陕西师范大学.2009
[4]张珑,王建华,张军,邸佳奇.移动学习在高等学校教学改革中的应用[J]. 计算机教育.2010(6):34-37
[5]王伟,钟绍春,吕森林.大学生移动学习实证研究[J].开放教育研究,2009,15(2):22-27.
[6]张素芹,吴连生.独立学院“C语言程序设计”教学改革实践[J]. 计算机教育.2010
[7]顾钧.程序设计语言课程的概念体系及教学策略探讨[J].中国成人教育.2010
[8]李望秀.高校教学中的移动学习[D].长沙:湖南师范大学.2008
[9]徐楠.M_Learning在现代远程开放教育中的应用研究[D].南京:南京师范大学.2005
[10]efeixin.10086.cn/product/category_15.html
一、犯罪客体
本罪侵犯的直接客体是计算机信息系统安全保护管理秩序和计算机信息系统所有人的合法权利。本罪的行为对象是计算机病毒等破坏性程序。
为了更好地研究制作、传播计算机病毒等破坏性程序罪,我们首先要对计算机病毒等破坏性程序的概念及特征加以了解。
计算机病毒等破坏性程序的概念及特征:
1.计算机病毒的定义
关于计算机病毒的概念,国内外有许多看法:
(1)计算机病毒之父弗雷德·科恩博士(Fred Cohen)1984 年把计算机病毒定义为:“计算机病毒是一种计算机程序,它通过修改其它程序把自身或其演化体插入它们中,从而感染它们。”(注:Cohen, F.,1984.“Computer Viruses-Theory and Experiments”,IFIP TC -11Conference,Toronto,1984.)并于1988年著文强调:“计算机病毒不是利用操作系统的错误或缺陷的程序。它是正常的用户程序,它仅使用那些每天都使用的正常操作。 ”(注:Cohen, F. , 1988. “On theimplications of Computer Viruses and Methods of Defense” 《Computers & Security》7(1988)P167.)
(2)Hambung大学计算机病毒测试中心的Vesselin Bontchev 认为:“计算机病毒是一种自我复制程序,它通过修改其它程序或它们的环境来‘感染’它们, 使得一旦调用‘被感染’的程序就意味着(implies)调用‘病毒’的演化体,在多数情况下, 意味着调用与‘病毒’功能相似的拷贝。 ”(注:Vesselin Bontchev, Are “Good”Computer Viruses Still a bad Idea?: Http: // drsolomon.Com/ftp/papers.)
(3)美国Command Software Systems 公司的安全专家认为:“计算机病毒是一种程序,在某环境下,在你未知或未经你同意,通过控制你的计算机系统, 复制自身、 修改执行代码, 实施破坏。 ”(注:Sarah Gordon:《Computer and Secuity》14 (1995)391—402.)
(4)1994年2月18日《中华人民共和国计算机信息系统安全保护条例》第28条给计算机病毒所下的定义是:“计算机病毒,是指编制或者在计算机程序中插入的破坏计算机功能或者毁坏数据,影响计算机使用,并能自我复制的一组计算机指令或者程序代码。”
(5 )我国有学者把计算机病毒定义为:“计算机病毒是一种程序,它用修改其它程序或与其它程序有关信息的方法,将自身的精确拷贝或者可能演化的拷贝放入或链入其他程序,从而感染其他程序。”(注:张汉亭:《计算机病毒与反病毒技术》,清华大学出版社,1996年版。)
上述(1)、(2)、(5)对计算机病毒的定义与(3)、(4 )定义的区别是前种观点认为计算机病毒是具有感染性,但不一定具有破坏性的计算机程序,而后种观点认为计算机病毒是不仅具有感染性,还必须具有破坏性的计算机程序。是否具有破坏性是二者的根本区别。本文研究的计算机病毒是指《中华人民共和国计算机信息系统安全保护条例》第28条所规定:“计算机病毒,是指编制或者在计算机程序中插入的破坏计算机功能或者毁坏数据,影响计算机使用,并能自我复制的一组计算机指令或者程序代码。”很显然,上述规定的计算机病毒仅限于具有破坏性功能的程序。因此,这种定义下的计算机病毒具有以下主要特征:
(1 )感染性:就是指计算机病毒具有把自身的拷贝放入其他程序的特性。
(2)潜伏性:入侵系统的病毒可能有一个“冬眠”期, 其间病毒不做任何骚扰性示意动作,也不做任何破坏动作。病毒入侵后,不露声色,处于“静观待机”状态,人们很难发现它们。这种隐蔽自己使用权人难以发现的特性称为潜伏性。
(3)可触发性:病毒因某个事件或数值的出现, 诱使病毒实施感染或进行攻击的特性称为可触发性。
(4)破坏性:病毒破坏文件或数据, 扰乱系统正常工作的特性称为破坏性。
2.计算机病毒的分类
计算机病毒一般分为四类:
(1)文件型病毒(File Viruses):
文件型病毒感染宿主程序时,将病毒代码附加到其上,一般是附加到其头部或尾部。它通常感染任意。COM和或。EXE,文件,有些也感染。SYS,。OVL,。PRG和MNU等可执行文件。
文件型病毒可以是直接行动型或常驻内存型。直接行动病毒每当携带它的程序执行时就选择一个或多个程序去感染。常住内存病毒是,被其感染的程序第一次执行时,该病毒就隐藏于存储器中,其后,当其他程序执行时或当满足某些条件时就感染它们。Vienna(维也纳病毒)是直接行动病毒的例子,多数病毒是常驻型病毒。
(2)引导型病毒(System or Boot Sector Virus):
感染磁盘系统区可执行代码。在DOS系统,有许多引导型病毒, 它们攻击BOOT扇区和硬盘的主引导扇区。例如Michelangelo(米开郎基罗),Brain(巴基斯坦),Stoned(石头病毒)等就是引导型病毒。 本类病毒总是常驻内存。
有少数病毒被称为混合型病毒(Multi-partite Viruses),它们既感染文件又感染扇区,同时具有文件型病毒和引导型病毒的功能。
(3)链式病毒(SYSTEM or CLUSTER Virus):
链式病毒的病毒代码不直接附着在宿主程序上,而是通过修改文件目录表使得在调用宿主程序时,首先执行病毒,然后再执行宿主程序。注意,宿主程序并没有被改动,而是文件目录表被改动。DIR -Ⅱ病毒是典型的链式病毒。也有人认为本类病毒是文件型病毒的子类。
(4)宏病毒(Macro Virus):
宏病毒是由一个或多个宏组成的能递归复制自身的集合。这里,“递归复制”是指:一染毒文件能将病毒传染给另一文件,而被传染的文件又继续传染其他文件,…。
宏病毒不是破坏执行文件,而是破坏数据文件。典型的宏病毒是WM/Concept.A.
3.其它破坏性计算机程序
因为计算机病毒只是破坏性程序的一种主要表现形式,破坏性计算机程序还有许多其他表现形式,常见的主要有以下几种:
(1)设备炸弹(Device Bomb):一种程序,它由于某特定的设备(如COM端口、磁盘驱动器D等)的出现而运行,通常伴随着破坏性行为。
(2)逻辑炸弹(Logic Bomb ):由于某些系统条件的出现或缺少而自动激活执行的程序。典型的逻辑炸弹是当程序设计者的名字从公司工资表去掉时,程序就停止运行。在运行特定时间后或在特定日期被激活的逻辑炸弹称为时间炸弹。逻辑炸弹与病毒的区别是逻辑炸弹没有传染性,不自我复制。
(3)野免(Rabbit ):通过无限制地复制自身来耗尽系统资源(如CPU时间、磁盘空间、终端I/O等)的程序。它与病毒的区别是, 它不感染其他程序。
(4)特洛伊木马(Trojan Horse):任何提供了隐藏的、 用户不希望的功能的程序。即似乎是提供了一些合乎用户需要的功能,但由于在其中包含了一些用户不知道的未经授权的代码,使得该程序有一些不为用户所知的(也可能是不希望的)功能。这些额外的功能往往是有害的。典型的特洛伊木马程序是AIDS,它声称是爱滋病数据库,当运行时它实际上毁坏硬盘。特洛伊木马程序与病毒的区别是,前者是不依附于任何载体而独立存在,而病毒则须依附于其他载体且具有传染性。
(5)蠕虫(Worm):计算机蠕虫是一个程序或程序系列, 它采取截取口令字并在系统中试图做非法动作的方式直接攻击计算机。蠕虫与计算机病毒不同,它不采用将自身拷贝附加到其他程序中的方式来复制自己。蠕虫一般由许多代码模式块构成,欲将其隐藏在操作系统的文件中不太可能,因为它太大了。蠕虫与病毒的区别在于,病毒对计算机系统的攻击不依赖于操作系统设计中的错误和缺陷,而蠕虫是非法入侵者,它要窃取口令,特权,要借助于操作系统本身的错误和缺陷。
蠕虫通常造成的后果是当蠕虫的传播与系统所有者的期望相抵触,由于过多的拷贝使系统超载导致网络崩溃。
二、犯罪客观方面
本罪的客观方面表现为故意制作、传播计算机病毒等破坏性程序,影响计算机系统正常运行,后果严重的行为。
这里,制作是指利用计算机编程技术编制计算机病毒等破坏性程序;传播是指将自己或者其他人制作的计算机病毒等破坏性程序置入计算机信息系统或者将携带计算机病毒等破坏性程序的计算机软件或数据文件加以散发或销售或者将计算机病毒等破坏性程序原代码予以公开等。
计算机病毒的传播方式主要有以下八种:
(1 )软磁盘或光盘:计算机病毒主要通过软磁盘或光盘从一台计算机传播到另一台计算机(或系统)。
(2)E-mail:由于宏病毒的出现和因特网的迅猛发展,E -mail(电子邮件)已成为计算机病毒传播的主要方式之一。
(3)病毒交换电子广告牌(Virus exchange BBS )病毒交换电子广告牌是计算机病毒传播者最常使用的方法。该系统鼓励用户交换病毒信息,生成新病毒等。
(4)病毒交换网(Virus Exchange Networks)这些网络常被称为VX-Net(病毒交换网),NukEnet.他们中一些自称“病毒研究BBS ”。例如,维吉尼亚病毒研究所就以“黑轴电子广告牌系统”著称,它是病毒制作组织的世界中心。
(5)病毒分配站点(Virus Distribution sites)。 随着因特网的迅猛发展,许多网站成了传播病毒的场所,例如常常会发现一些大学的网站成为病毒的传播站点。
(6 )病毒分配“机器人”和文件“服务器”(VirusDistribution Robots and file servers)。使用被称为“机器人”和“服务器”的自动分配程序来传播计算机病毒。通过电子邮件与服务器相联系或向机器人索取文件,用户就可以匿名地通过因特网获取计算机病毒。
(7)书籍(Virus Instruction books)。关于如何编制计算机病毒的书籍也是传播病毒的一种方式。 例如Mark Ludwig1990 年所著“The Little Black Book of Computer Viruses ”一书就包含计算机病毒的原代码。
(8)销售病毒(Viruses for sale)。 有一些人专门出售计算机病毒。例如在美国的某些杂志上刊登销售病毒的广告为合法。一些政府机构和企业从病毒交换系统或病毒传播者那里购买或获取计算机病毒以测试其防病毒软件的性能。
本罪是结果犯,要成立本罪必须有特定的犯罪结果,即行为人的制作、传播行为影响了计算机系统的正常运行,后果严重。如果行为人仅仅有制作、传播计算机病毒等破坏性程序的行为,但未造成严重后果的,不构成本罪。
三、犯罪主观方面
本罪的主观方面只能是故意,即明知自己制作、传播的是计算机病毒等破坏性程序,而且认识到计算机病毒等破坏性程序一旦输入计算机系统将会造成严重后果却仍故意制作或传播。过失不构成本罪。
制作、传播计算机病毒等破坏性程序的动机各异,目前主要有以下几种:
(1)为科学研究及防病毒:如计算机病毒之父F.Cohen就是为解决计算机理论问题则研制计算机病毒;许多防计算机病毒专家及厂商就是为防病毒而研制计算机病毒;
(2)显示个人能力:1988年11月2日,23岁的康乃尔大学的研究生Robert T. Morris 就是为了显示个人能力而编制了著名的InternetWorm;
(3)防止非法拷贝:1987年10 月攻击美国特拉华大学的巴基斯坦病毒,即Brain 病毒(由巴基斯坦的巴锡特和阿姆杰德两兄弟编写)就是为了防止盗版而编制;
(4 )出售(经济原因):当前西方有些人制作病毒是为了向政府机构及防病毒产品研制机构出售其编制的计算机病毒以获取经济利益;
(5 )恶作剧:行为人编制计算机病毒等破坏性程序完全出于捉弄人,以获得刺激和乐趣。如苹果病毒就是出于恶作剧;
(6)报复:1996年9月大连市华鹰寻呼台的计算机管理员张某被解雇,为了报复,他离职前在计算机系统中设置了逻辑炸弹,造成重大经济损失;(注:陈兴实、付东阳:《计算机、计算机犯罪、计算机犯罪的对策》,中国检察出版社1998年版,第97页。)
(7)出于政治、军事上目的(作为武器):如海湾战争中, 美方事先将计算机病毒置入伊拉克防空指挥系统中,使伊拉克的防空系统在战时基本陷入瘫痪。另据报道,泰米尔游击队利用E-Mail 炸弹攻击斯里兰卡大使馆,使得在相当一段时间内使馆内无人可以使用E-mail ;(注:《Computers & Security》17 (1998)No.3, P194.)
(8)勒索:1989年12 月美国的人类学博士鲍伯编制的含有计算机病毒的有关爱滋病信息的磁盘,将逾万片磁盘由巴拿马的西布格公司免费邮送世界各地,在说明书中要挟用户必须向西布格公司支付378 美元,否则将破坏其应用程序。这就是以勒索为目的制作、传播计算机病毒等破坏性程序的例子;
(9)不正当竞争:即出于不正当竞争的目的制作、 传播计算机病毒等破坏性程序。例如我国就有人将计算机病毒等破坏性程序置入防计算机病毒软件中,迫使用户继续购买其所制作或销售的更高版本的防病毒软件,以扩大其产品的市场占有率和销售额。(注:蒋浩、于志刚:“论制作、传播破坏性计算机程序罪”,载《法学家》1997年第5期,第18—24页。)
关键词:预算系统;工作流;系统集成
一、全面预算系统的相关理论界定
全面预算是指经济体在一定时间范围内,对自身内部的财务、管理控制等方面,实施总体的预算管理,主要包括业务、财务(预算)两大块。业务上概括地说,主要有销等预算;财务上就是现金流方面和预计财务报表等。其重要性如下:全面预算系统对经济体内部控制的完善非常有利;能够拓宽经济体财务管理的范畴,从战略角度提高了财务管理的重要性;全面预算系统对经济体各业务部门的协调合作关系也有着积极的促进作用,通过预算,能将经济体的各部门统一到计划中,明确部门自身的作用和重要性,做到有系统的分工合作。
二、全面预算编制的组织结构、内容模式和流程
1.组织结构及内容模式
以企业为例,一般是在董事会下面直接设置预算管理委员会这一专职部门,对预算编制和审核起主要负责作用。会计部门负责具体的业务执行。所以企业管理层和企业财务部门的负责人一般是预算管理业务的领导者。全面预算管理也可以根据不同业务设置不同的预算部门,然后成立一个综合性质的预算管理办公室,负责协调组织个业务部门的预算管理工作,并最后交由财务部门统一协调。企业各层级都可以按照这个模式来设置预算管理组织机构。全面预算的内容模式可主要分为业务上的、财务上的、资本上的、筹资上的预算四个方面。
2.全面预算流程
一般流程是:预算编制与下达;预算编制审批与调整审批;预算滚动调整;执行跟踪分析与考核评价;建立科学的预算考评机制。
三、工作流在经费预算系统中的设计概论
1.工作流系统作为全面预算系统的主要支撑技术系统的优势:
技术相对较为成熟,可作为核心的信息技术作支撑,从而保证全面预算信息系统的可扩展性、稳定性和操作的高效;工作流技术由于与人工作业的高度仿真和分析方法上的一致,对预算编制过程中的不合理现象,能够有助于使用者的提前发现,并及时有效地改进,对完善预算计划十分有利,预防预算失控。工作流技术由于将各信息系统统一于预算管理的现实流程中,可以有助于使用该系统的经济体节省IT投资资金,也有效规避了系统更新上的风险。工作流技术如果应用在多级工作流层面上,那么基层工作流是全面预算管理各流程的有机组合;第二级工作流系统是其他信息系统与全面预算管理系统的流程、数据接口上的有机整合;第三级工作流系统可以整合各分系统的流程,使其更有益于整体框架的可扩展性。
2.工作流技术及其要素的简要分析
工作流技术从非IT专业的财务工作者看来,是原来人工完成的业务流程和整体或部分的内容的信息程序化,在设计计算机软件时,完全模仿人工业务流程和内容,计算机领域概念上的信息、文件、任务按照现实业务中所指定的规程来行动,这些信息文件在软件使用者之间传递。按照通俗的理解,工作流技术就是计算机程序严格按照原来人力进行的业务的流程和制度,用电子化信息化的方式来执行原来人力所执行的业务程序。
其中工作流理念设计的计算机程序引擎,对全面预算管理的基础程序要素进行定义、调用、安排执行顺序、控制实例、添加工作项目等。具体有过程定义的解释,应用工具的调用、程序执行顺序的安排、过程实例的控制、工作表中工作项目的添加等等。
从数据上看,工作流数据一般有控制数据、应用数据和信息数据。工作流技术设计的软件系统主要采用面向服务架构(SOA)的设计方法。面向服务的体系结构,可以理解为计算机程序设计上的一种组建模型,将程序的不同功能模块(也可视作服务)通过SOA定义好的接口和语法契约加以联系,计算机程序上的接口在程序设计上是比较中立的,独立于编程语言、操作系统和硬件平台。然而软件系统的各项程序模块和服务都要靠接口这种通用和统一的方式来执行交互。SOA将应用程序的不同服务通过这些服务之间良好定义的接口和契约联系起来,良好的面向服务架构能够使工作的运营效率得到显著提高。面向服务的体系结构一般要有粗粒度服务接口、松藕合、标准化接口、大数据量的低频访问、基于文本的消息传递、独立的功能实体等基本特征。
3. 总体架构设计
一般来说,采用工作流技术设计的全面预算管理系统采用服务器/客户端的网络架构,在系统的底层用工作流系统做基础程序职称,SOA架构则是采用WCF技术来执行的,将全面预算管理系统设计为分布式的各个业务程序模块,方便远程调用。在全面预算管理系统的最直接面对使用者的是Web客户端子系统,通过Response/Request与web服务端进行交流。Web服务端子系统是以IIS6.0为主Web服务器,包括多个子模块与其他系统交互。
采用工作流设计理念、技术的全面预算系统的数据库,主要包括:业务系统、工作流相关、组织信息构成等方面的数据库。业务数据库还要有全面预算数据库和WEB数据库。
4.全面预算系统功能设计概述
4.1从模块上看主要包括四大模块,及各自下设的若干小模块,列举如下:
预算编制模块,其中包括:业务预算模块(及下设更细模块);财务和资金预算模块(及下设更细模块);资本预算模块;生产性投资支出预算模块。月度滚动计划编制模块,包括财务计划、业务计划和资金计划模块。全面预算管理的跟踪分析模块流程为:对要分析的项目进行选取、对所需要的业务数据进行采集、对预算和业务数据进行比较,并生成预算管理所需要的各种报表及分析表。
4.2基于工作流技术设计的全面预算管理信息系统的引擎设计
.NetFramework4.0的系统软件环境下,全面预算系统工作流引擎要用到很多公共核心服务,来对工作流程实例来进行管理。总体控制工作流引擎包含所有运行时服务对象.其中:WFMain服务程序是核心部件,对过程定义和控制过程实例进行解释和执行,然后按照过程定义己确定的业务逻辑调用各项活动和服务。除了WFMain服务程序外,还要有几个应用服务,负责对外部递交数据的所用工作进行控制。在出口处有包括邮件和用户通知服务。入口部分工作流用户通过工作流客户端进行预算数据编制或调整服务;
4.3系统集成设计简介
在逻辑上可以分为:工作流程序系统、全面预算管理系统、webservice程序系统、其他业务程序系统,在这个四个集成程序模块外部,在封装一个WEB服务程序,来实现这几个系统间及其与外部系统的相互调用。
简而言之用户使用基于工作流设计的全面预算管理信息系统时,首先用到的是预算管理的系统界面,呈现在用户面前的是预算管理的通用或特殊的业务和流程的进入界面。然后根据全面预算流程不同阶段和流程使用相应的系统程序,并通过互联网程序进行调用前述程序和结果等,并与其它管理信息系统进行整合,从而实现数据的通用和高效分析利用。
参考文献:
[1]魏春奇.构建以战略为导向的全面预算管理制度[J].会计之友,2007,7(28):10一11.
【关键词】循环程序设计;迭代法;高次方根
循环结构是结构化程序设计中三大基本结构之一,也是计算机程序设计语言教学的重点和难点之一[1]。循环结构通过重复执行一组操作,能够把复杂的、不易直接求解的问题变换为操作简单,易于处理的迭代求解问题。这也体现了解决数学问题时常常采用的化归思想。
本文基于数值计算中采用迭代法求解二次方根的实例,对相应的问题和求解方法进行拓展,并通过理论分析和C语言编程实现,让学生从深度和广度上对迭代方法及其应用有更加深刻的理解和认识。
1、基本案例
为了求解 的值(2的算术平方根),数值计算[2]中采用经典的迭代方法:
令x= ,则有,
. (1)
由式(1)知,x的值可通过迭代方式求解,即
. (2)
经过多次迭代,可以计算出 的值。
计算科学的基本问题是能行性问题[3]。上述迭代方法具有可行性吗?分析如下:
首先,式(2)中x的计算需要一个初值,通过不断地迭代更新x的值。为了便于处理,不妨设初值为任意的正值。
情况1:当初值0
. (3)
不等式(3)说明,当0
进一步地,由代数不等式 知,
. (4)
等号成立当且仅当x= 。这说明小于 的初值经一次迭代后,产生的新x必然大于 。
情况2:当初值0 时,由式(1)的推导过程知,
. (5)
不等式(5)说明,当x> 时,式(2)的计算过程,即由 更新x,会产生比初值更小的新的x值。再由式(4)知,当x> 时,更新过程产生的x值不会小于 ;由于新的x值在逐渐缩小,说明最终会收敛至 。
上述分析说明,当初值0 时,更新过程使得x值逐渐变小,最终收敛于 。
上述过程也可由图1进行可视化证明。当初值x< 时,由于 。假设 ,通过移项知,须 。由图1知,此时曲线y=1/x的值大于直线y=x/2的上值。所以,假设成立,且产生了大于 的新值。当初值x> 时,类似的推导知,假设 ,须 。由图1知,假设亦成立,且更新过程x总是不小于 。当x= 时,1/x+x/2=1/ + /2= ,得到最终的解x。证毕。
图1 直线y=x/2和曲线y=1/x.
上述的证明过程说明,式(2)的迭代方法具有能行性,能够计算 的值。
事实上,对于任意的正数p,令x= ,由式(1)的推导过程知,
. (6)
通过与求解 类似的推导过程知,式(7)能够计算任意正数p的算术平方根,方法同样具有能行性。
. (7)
教学意义:本节能够让学生加深理解由循环结构形成的迭代方法。采用迭代方法求解复杂的问题时,通过把问题分解为若干步骤,每步完成一个相对简单的问题。由于这种化归思想广泛存在于数值计算或者科学计算之中,通过引导,能够加深学生对迭代法的理解。
2、案例拓展
进一步地,对任意正数p的任意m( 且为自然数)次方根,能够通过上述方式求解 吗?
首先,可考虑m=3时的情况。令x= ,则有x3=p。与式(1)类似,
. (8)
如何对式(8)进行类似于式(1)的改造,且使得产生的更新过程会收敛至 ,是构造相应迭代过程的关键。
事实上,代数不等式 是式(9)的特例,
. (9)
求解 的迭代过程最终会收敛到 本身,这是由于式(9)(n=2时)中不等式右端产生的最小值正好为 (也可参考图1)。因此,在构造求解 的过程中,式(9)的右端需要直接产生 。由式(9)知,此时需要构造式(10)的形式,
. (10)
进一步地,由式(8)知,
. (11)
显然,
. (12)
所以,式(13)可以用于迭代求解 ,
. (13)
相应的收敛性证明与 的情况类似,不再累赘。
进而,对任意不小于2的自然数m,对应的问题是求解x= ,则有xm=p。与式(1)和式(8)类似,
. (14)
由不等式(9)知,式(14)右端,即 ,具有最小值 。在实际的更新过程中,可采用式(15)的简化形式,
. (15)
式(15)的收敛性证明如下:
情况1:当初值0
. (16)
说明经一次迭代更新,产生的新值x大于 。
情况2:当初值0 时,由式(14),(15)和式(16)知, ,说明此时由式(15)产生的新值x在逐渐变小,但不会小于 。该更新过程使得x趋向于 ,当x= 时,式(15)的迭代过程收敛。证毕。
上述推导过程说明,式(15)能够用于迭代计算 。而且,平方根和立方根的求解是m=2和m=3时的特例。
教学意义:把求解平方根的问题,泛化到求解任意高次方根的问题,有助于引导学生深化思维。上节和本节的收敛性证明也能够锻炼学生运用数学知识解决问题的能力,提高理论水平;这一理论推导过程,也可以让学生更加清楚上述迭代过程能够求解高次方根的原因,有助于加深对计算科学中可行性问题的认识;本案例通过最基本的加减乘除运算解决了求高次方根的问题,从运算角度同样体现了化归思想;而且,该案例能够让学生更好地理解和运用循环结构解决实际问题。
在实际教学中,把求解平方根和立方根的情况推广至任意高次方根的问题,可以作为课外作业,让学生自行完成,以培养数学思维和动手能力。
3、程序实现
基于对 , 和 的求解说明,本节给出相应的C语言算法(程序)描述。
求根的过程,不管p值大于1,或者小于1,根总有向1靠近的趋势。这说明x的值可以简单地初始化为1。为了加速程序的运行,我们也可以考虑其它的初始化方法。如,论文[4]给出了初始化的一个上界。
教学意义:通过程序实现,对于任意的正数p,Program 1 和Program 2分别能够求解平方根和立方根,Program 3能够直接求解任意的高次方根。对问题的深化思考有助于拓展学生的视野,激发学生的学习兴趣,培养通过编程解决问题的能力和成就感。
4、小结
本文把迭代法求解平方根的案例,拓展到求解任意正数的不小于2的正整数次方根问题,分析了迭代求解的理论基础,证明了迭代方法的收敛性,最终给出了C语言程序代码。本文设计的教学案例在提升学生的学习能力,拓展学生的知识面,丰富教学内容方面具有多个优点:1)理解和掌握循环结构,2) 理解和运用数学不等式求解极值问题,3)锻炼数学思维能力,培养科研型人才,4) 加深理解计算科学中的能行性问题。
参考文献:
[1] 孙英,徐顺琼,李兴美. C 语言中循环结构程序课的教学设计与探讨.计算机教育 [J], 2009,12:186-187.
[2] F. 施依德[美]著, 罗亮生 包雪松 王国英 译. 数值分析 [M], 第二版. 第1章第1页. 北京:科学出版社, 2002.
[3] 赵致琢.计算科学导论 [M]. 第3章第69页. 北京: 科学出版社, 2004.
[4] 刘红超, 陈惠汝.用迭代法计算预定精确度下的算术平方根 [J]. 黄冈师范学院学报, 2004, 24(3): 24-26.
基金项目:
中国博士后科学基金(2011M501189)。
关键词:数据结构;算法;C++语言;案例驱动
1研究背景
“数据结构”的概念最早是C.A.R.Hoare于1966年提出的。在他的经典论文《数据结构笔记》中,他首次系统地论述了一组数据结构的构造、表示和操作等问题。1973年,D.E.Knuth在《计算机程序设计技巧》第一卷中给出了关于“信息结构”的系统论述。1976年,N.Wirtnh用“算法+数据结构=程序”这个公式表达了算法与数据结构的联系和它们在程序中的地位[1]。从此,数据结构确立了在计算机相关专业中的核心基础课程地位。
数据结构是一门关于非数值数据在计算机中表示、变换及处理的课程。这里的数据,实质是指计算机所能表示的各种不同数据对象(性质相同的数据元素的集合)的集合。对于每一具体的数据对象,数据元素之间的关系都不是孤立的。数据元素之间的内在联系被称之为结构。从数据元素之间的关系特征分析,各种数据对象的数据元素之间的关系仅呈以下四种结构之一:集合结构、线性结构、树形结构、图形结构。
数据结构课程的主要内容,是针对以上四种结构,先从逻辑层面讨论结构的关系特征及抽象操作;再讨论结构在计算机中的存储表示(映像);并在存储表示的基础上给出相应结构的基本操作及实现;最后讨论各种结构的应用。
已有教材编写的思路莫不如此。但许多教材过于抽象而甚少工程背景,原因在于那些教材描述算法所使用的语言工具常是伪代码指令[2-3],或在涉及数据结构转化于应用时往往不能完整地展开。因此,许多刚学完计算机高级语言、编程能力尚且不足的学生为此而深感困惑。
在长期的教学过程中,我们认为数据结构是一门兼具理论性与实践性的课程,也是在掌握程序设计语言后加强与提高学生程序设计能力的课程。因此,我们在编写数据结构教材时,以基本数据结构的主要内容为主线,在充分讨论结构的逻辑特征基础上给出结构在计算机中经典的存储表示(映像),并在存储表示的基础上,用C++语言实现结构下的各个基本操作(建立结构的顺序类或链式类)。我们强调数据结构的应用,以模板的形式给出各种不同数据对象应用数据结构(线性结构、树形结构、图形结构、集合结构)的多个实例。每一算法或程序的编写高效、易读,并遵循程序设计的规范,从而使学习者将数据结构与工程应用有机结合。
2教材编写的几个要点
2.1教学大纲及教材内容
历经三十多年的发展,数据结构课程的主要讨论范畴已基本取得共识。尽管计算机应用领域仍在不断扩大,并产生了许多新的数据结构和算法,但数据结构最基本、最核心的内容还是各种经典教材中反复强调的最具有代表性的那些知识。2006年,教育部高等学校计算机科学与技术教学指导委员会编制了《高等学校计算机科学与技术专业发展战略研究报告暨专业规范》[4],其中,算法与数据结构涉及AL1、AL2、AL3、AL4、AL5、PF2、PF3、PF4等多个知识单元,知识点包括递归,面向对象程序设计的基本理论,基本数据结构(栈、队列、链表、串、数组、广义表、树、图、哈希表等),常用排序算法,常用查找技术,算法分析基础等。2009年,教育部考试中心制订了全国硕士研究生入学统一考试关于数据结构的考试大纲。以上内容构成了我们编写教材的大纲依据。
我们编写的教材[5]共七章,内容如下。
1) 第一章:绪论。
内容包括数据、数据元素、数据对象、数据结构、数据类型、抽象数据类型、算法的概念、算法时间复杂度和空间复杂度的分析等。
2) 第二章:线性表。
内容包括线性表的基本概念和类型定义、线性表的顺序存储结构、线性表顺序类的实现、线性表的链接存储结构、线性表单链表类的实现、循环链表及双向链表的存储结构、线性表的应用等。
3) 第三章:其他线性结构。
内容包括栈的存储及操作实现、栈的应用举例、递归、队列的定义和基本操作、字符串、数组及矩阵的存储压缩、广义表等。
4) 第四章:树型结构。
内容包括树、森林的定义及基本术语、二叉树的结构定义、二叉树的存储结构、二叉树的遍历、二叉树基本操作的实现、树和森林的遍历、树型结构的应用(算术表达式求值、树与等价问题、赫夫曼树及赫夫曼编码)等。
5) 第五章:图。
内容包括图的定义和术语、图的存储结构、图的基本操作、图的遍历、图的应用(最小生成树、最短路径、拓扑排序和关键路径、最短路径)等。
6) 第六章:查找。
内容包括静态查找表(顺序查找、折半查找、分块查找),动态查找表(二叉排序树、平衡二叉树、B-树和B+树),哈希查找等。
7) 第七章:排序。
内容包括插入类排序、分划类排序、选择类排序、归并类排序、基数排序、外部排序介绍等。
在教材的编写过程中,我们注重在体系完整、结构合理、概念清晰的基础上形成自己的特色。如对于线性表,强调注重在顺序及链式存储映像下基本操作的实现,对于栈和队列等操作上受限制的线性结构,强调注重相关环境下的应用,对于树、图等非线性结构,强调注重遍历及遍历的应用,对于查找和排序等,强调注重在消化各种经典算法的基础上时间效率的评估。
2.2选择C++语言描述算法
本教材的另一个特点是将面向对象的方法引入到数据结构领域。面向对象技术不仅是一种程序设计方法学,而且是一种认识方法学,数据结构讨论的正是数据的描述与处理,与面向对象的认知方法具有天然的联系。面向对象程序设计语言提供的封装、继承、多态和泛型程序设计等机制,为数据结构抽象数据类型的程序实现提供了很好的描述工具。
此外,面向对象的最大好处是复用、复用、再复用。数据结构中涉及的各类结构下的基本操作,在实际应用中也是常用的基本操作,而选择面向对象的高级语言C++作为描述算法的工具,既能将高级语言程序设计与数据结构紧密结合,又能通过数据结构进一步认识C++中的STL(标准模板库),从而为实际编程的复用带来方便。显然,在数据结构的学习过程中,面向对象的主流语言C++较伪码语言更值得推崇。
2.3典型案例设计及举例
基于案例驱动的教学模式设计是以兴趣引导出发、以培养学生的设计能力为宗旨的教学模式,即通过对具体实例的演示、讲解,引导学生利用已学的知识,学会分析问题的方法,培养学生解决问题的能力[6],以达到对问题更高层次的认知。在数据结构教材编写过程中,我们首先在存储表示的基础上,以类的方式实现相应结构的抽象数据类型,然后精心设计案例,通过模板的方式,使用类解决各个不同的应用问题,且对每一案例的解题都附有主函数,以确保应用的完整性。
例如,对于二叉树的学习,遍历是课程的重点,其重要性不仅在于遍历操作自身,更重要的是,它还是许多树形结构应用的基础。因此,我们设计了算术表达式求值这一案例。在这一案例中,使用二叉树的先序遍历次序和中序遍历次序建立二叉表达式树,使用二叉树后序遍历的思想对表达式求值,通过这一案例的学习,将二叉树三种重要的遍历融于一处。
图1是表达式用二叉树表示的例子。
图1算术表达式二叉树
在实现了用二叉链表结构定义的表达式类BinaryExpTree后,利用表达式的前缀式及中缀式建立二叉表达式树的函数如图2中的算法1所示。其中
ch1为表达式的前缀表示,ch2为表达式的中缀表示,low、high分别为中缀次序的起始和最终位置,本函数根据先序次序和中序次序的形成规律,运用先序递归遍历的思想逐个为先序次序中的第k个元素(k的初值为0)生成二叉链表中的结点。
在图3中,设在数组ch1中存有二叉表达式树的前缀表示,而在数组ch2中存有二叉表达式树的中缀表示。k指示了当前子树的根结点位置,在建立了根结点后,查找ch1[k]在ch2 中的位置i,从而形成新的划分L(low――i-1)、D(i)、R(i+1――high)。
K加1,对左右两部分依次递归地建树,直至某一子序列出现low > high,则子树建毕。
void BinaryExpTree :: _Create ( BTnode* &T,char ch1,char ch2,
int low,int high,int &k )
//利用表达式的前缀式及中缀式建立二叉表达式树
int i;
if(low > high)
T = NULL;
else{
T = new BTnode;
T->data = ch1[k];
//查找k在中序中的位置,从而划分D L R
for ( i = low;i
if(ch2[i] == ch1[k]){
k++;
_Create (T->Lchild,ch1,ch2,low,i-1,k); //建立左子树
_Create (T->Rchild,ch1,ch2,i+1,high,k); //建立左子树
}
}
}
图2算法1:建立二叉表达式树
图3先序次序和中序次序之间的关系
在建立了二叉算术表达式树后,用后序遍历的方式对表达式数求值,如图4中的算法2所示。
int BinaryExpTree ::_Evaluate(BTnode* &T)
{ // 在建立了二叉算术表达式树后,用后序遍历的方式对表达式树求值
if(T){
if(!T->Lchild && !T->Rchild )
return T->data C'0';//字符型转换成整型
return _Opreate(_Evaluate(T->Lchild),T->data,_Evaluate(T->Rchild));
}
return 0;
}
图4算法2:对表达式树求值
限于篇幅,其他函数及主函数不一一列举。
需要说明的是,上述表达式求值的过程仅是二叉树遍历的应用举例,真正应用于算术表达式求值尚有许多问题,如该方法输入数据是表达式的前缀式及中缀式、仅限于二元运算符、操作数是字符类型、表达式中的运算符不能重复等。
我们在教材的附件(程序光盘)中另给出了用栈的方式建立二叉表达式树的方法。该方法可直接用任意的算术表达式做输入数据、支持单目运算、支持各种类型的操作数。解决同一个问题,采用不同的方案
实现,无疑起到了开拓学者视野、加深问题认知的作用。
3结语
教材是根据教学大纲(课程标准)编写的系统反映学科内容的教学用书,是人们按照一定的教学目标、遵循相应的教学规律,组织并发展的科学技术理论及知识系统。合适的教材将协助学者更好地达到学习目标,期待我们的新编教材能接受学习者的检验并受到欢迎。
参考文献:
[1] 张乃孝. 编写“数据结构”教材的几点体会[C]//中国计算机学会,全国高等学校教学研究中心,全国高等学校教学研究会. 大学计算机课程报告论坛论文集. 北京:高等教育出版社,2007:543-547.
[2] 严蔚敏,吴伟民.数据结构[M].北京:清华大学出版社,1997.
[3] Horrowitz E,Sahni S. Fundamentals of Data Structures[M].Pitmen Publishing Limited,1976.
[4] 教育部高等学校计算机科学与技术教学指导委员会. 高等学校计算机科学与技术专业发展战略研究报告暨专业规范(试行)[M]. 北京:高等教育出版社,2006:233-234.
[5] 万健,王立波.数据结构实用教程[M].北京:电子工业出版社,2011.
[6] 陶影,张斌. 数据结构实验教学应重视算法设计与分析能力的培养[J]. 实验室研究与探索,2008,27(12):119-122.
Compiling Data Structure Textbook by Case Driving
WANG Libo, WAN Jian
(School of Computer, Hangzhou Dianzi University, Hangzhou 310018, China)
Abstract: This article introduces basic concepts of Data Structure, discusses understanding of Data Structure course. Main points are put forward in the process of compiling, stressing the importance of case driving teaching mode in teaching material compilation, forming characteristics of the material itself.