1、大学要出思想教育是科学,其价值在于求真。教育是艺术,其生命在于创新。而担负此重任的,应该是我们今天的大学。大学是出思想的地方!大学是谈文化、论教育的地方!大学是创新和社会进步的源泉,大学能够、也应该如此,在 21 世纪尤其如此。大学教育,自古重“育人” 。大学不仅仅是有大教室、大操场、大食堂、大图书馆、大实验室,其应有之义,是要有真正作为教育家的“大校长” 、 “大师”和名副其实的“大学生” 。今天一些大学什么都关心,谈经费、谈人事、谈机构,就是不谈教育本身,尽管大学的会议都在讲“以教学为中心” ;今天一些教师什么都关心,谈社会、谈待遇、谈机遇,就是不讲课程本身,每天上课仍带着以不变应万变的课
2、本。用什么样的教育观来指导人才培养工作,这是涉及到培养什么样人才的最高原则。英国李约瑟博士在撰写中国科学技术史一书后,曾经提出一个困扰中国学人的世纪难题:“为什么中国培养不出一个诺贝尔奖获得者?” 摘要:在 VB 程序设计课程的教学中,采用项目化教学能够避免传统教学方式的缺陷,提高学生分析问题和解决问题的能力,使学生在教学过程中不断得到实践技能的训练和综合素质的提升。本文指出这种教学的关键是针对教学计划的项目设计,并给出了几点设计原则;然后将整个项目分解成各个子项目模块,各模块中包含了教学知识点,并以一个子项目为例,详细介绍了项目化教学的实施过程及效果分析。 关键词:VB 程序设计;项目化教学
3、;实践技能 “VB 程序设计”是一门面向理工类非计算机专业学生的计算机基础课,涉及面广、影响大。该课程旨在培养学生程序设计的基本思想 、项目开发方法、 程序调试技巧和算法分析能力,形成良好的编程风格;教会学生学习的方法,培养学生再学习能力,为以后使用计算机解决本专业的问题打下基础。目前以课程知识点为纲要的传统教学方式存在着很多问题,它已经越来越不能够满足新的形势下课程教学的需求了。 1 传统教学方式的缺陷 “VB 程序设计”课程的教学中,传统的教学方式通常采用以知识点的层次递进为体系1。通常按照 VB 代码基础、程序基本结构、数组、过程、常用控件、文件读写、数据库等知识点层次递进为教学体系,教
4、师按照教材把需要掌握的这些知识点按部就班地灌输给学生, 然后再带领学生上机来巩固所学的知识。这种教学方式虽然符合人的认知规律,但存在以下缺陷。 1.1 知识点联系不够紧密,学生的主动性不高 传统教学中很多教师在课堂上举的一些例子往往是为了某个知识点,而且例子与例子之间没有联系。这样的教学容易造成学生缺乏主动性与创造性,他们大多只是对书中的例子或教师举的例子依葫芦画瓢,并且只求运行出结果就算万事大吉,而教师也常常以能否做出结果作为评判的标准。 1.2 对知识应用缺乏整体感 作为一名设计师在设计一副作品时,如果只顾设计作品的各个组成部分,没有整体规划与协调,就无法完成一幅令人满意的作品。作为一名教
5、师,如果按部就班地讲解“VB 程序设计”的知识点,没有依托一个完整的实际项目,就会令学生接收的知识是零散的。 1.3 缺乏实际工程项目开发体验 军事学院学生学习军事知识, 如果只是学理论,没有实际经验,是当不了将军的。同样学习“VB 程序设计”,如果只是停留在知识点学习以及例题练习,没有实际工程项目开发的历练和体验,无法感受所学知识在实际工作中的作用和地位,将会抑制学生的学习兴趣,影响学习效果。 2 项目化教学的内涵及意义 为改进程序设计课程传统教学存在的这些问题,我们在“VB 程序设计”的教学中采用项目化教学。所谓项目化教学,是以某个工程项目为案例,该项目应涵盖课程中主要知识点,采用边讲知识
6、点边设计项目中某个模块程序的教、学、做相结合的教学法,当课程各知识点讲完时,项目设计也已完成。学生不但能学到课程的主要知识,同时也完成了一个真实的项目设计。 传统教学模式多为自下而上的线性结构学习, 在学习时多是只见树叶、不见森林,而项目化教学,是先在学习者面前呈现出一片美丽的森林,使他们自然而然想去其中寻宝。这样的教学方法使学生在学习过程中首先建立了系统和全局的概念,也使学生更加明确后续知识的学习目标。 3 项目化教学在 VB 教学中的实施过程 项目化教学的具体实施可按照 3 个环节进行:项目设计 ;制定项目教学计划;项目实施。 3.1 项目设计 在 VB教学中采用项目化教学,教学的整个过程
7、和所有内容以实际的工程项目来贯穿,教师依据教学内容选取工程项目。项目确定后,整个教学过程也就确定了,学生通过完成项目来达到对本课程教学内容的掌握,因此,项目任务的选取是关键。选取项目任务时,(1)要把握好任务的“质”,即需要了解 VB 的发展及社会的需求,也需要教师深入了解学生的基础和特点,选取学生感兴趣的能调动学生积极性的项目任务,即所选项目必须具备趣味性2。(2) 是实用性, 该项目本身应具有一定的实用价值,以消除学生心中的“学习无用论” 。(3)是完整性。能够通过该项目实例的展开涉及到教材的绝大多数知识点,以完成教学任务。基于以上 3 点原则,本课程选取了典型的应用实例“学生信息管理系统
8、”作为贯穿课程全部内容的项目。3.2 制定项目教学计划 教学项目确定后,首先要制定出项目实施计划,把整个项目分成若干个子项目3,并把每个子项目所涉及的知识点罗列起来 ,按照教学时段,用教学计划的形式固定下来,形成项目教学计划,通过师生的共同实施,达到每个项目所必需的能力要求。具体做法:针对课程的重点、难点 ,精心设计项目内容,注重综合性、实用性、趣味性,每一个子项目都注意突出阶段性目标的设计,即让学生能根据课程进度,解决一定难度的问题,让学生获得成就感,同时也注意项目的可拓展性,鼓励学生在项目内容的驱动下,探索新的解决问题的方法和技巧。 按照上述子项目的设计方法,将“学生信息管理系统”划分为
9、10 个子项目,其中前 3 个子项目如表 1 所示。 3.3 实施过程 在教学过程中,每一个子项目围绕一个中心内容,首先提出子项目设 计目标,然后分析该子项目所包含的若干知识点,利用项目子模块中的程序实例,讲解每个知识点的用途及用法,最后实现该模块。并布置与该部分内容相关的实验任务,要求学生在接下来的实验课中完成。 以设计“子项目 3:应用选择结构完善学生信息管理系统 ”为例,介绍项目化教学的实施过程。在已经学习了标签、文本框、命令按钮等控件的用法,并完成了子项目 1(创建系统主界面)及子项目 2(为系统添加登录界面的设计)。接着围绕这两个子项目展开新知识点选择结构的讲解,功能是输入正确的用户
10、名和密码通过身份验证, 进入主窗体。 涉及到的知识点: IF 选择结构、块 IF 结构、执行过程 ; 计时器控件的属性、事件; Msgbox 函数的属性、事件。 项目的实施分 4 个阶段进行: (1) 第一阶段,以往知识点回顾。对登陆窗体的设计过程做简单的复习,界面设计如图 1 所示。 (2) 第二阶段,问题引入与问题分析。在运行该程序后,用于单击“进入系统”按钮,可以直接进入该系统,没有对系统添加任何保护措施。为了更加的实用,同时也为了系统的安全,有必要对程序进行修改,运行效果如下图 2 所示,当用户名和密码都正确时才能允许用户进入系统,否则给出错误提示信息。为实现这个功能,就要用到选择结构
11、。 (3) 第三阶段,引入新知识点。计算机具有智能的标志之一就是具有逻辑判断的能力,即针对不同的情况作出不同的选择,该功能的实现是借助相应的选择结构语句完成,首先介绍具有两个分支的 IF 语句格式在本例的应用,伪代码如下: If 用户名=“admin”and 密码=“123”then 显示主窗体 隐藏登录窗体 Else 提示用户输入错误 选定用户名文本框中输入的内容 删除密码文本框中输入的内容 End if 再次介绍单步执行的方法,通过单步执行程序掌握选择结构的执行过程;介绍 Msgbox 函数的使用方法。If username=“admin”and password=“123”then Sh
12、ow mainfrm Hide loadfrm Else Msgbox “密码出错,请再试一次” Username.selstart=0 Username.sellength=len(username.text) Username.setfocus Password.text=” ” End if (4) 第四阶段,学生实践。 输程序。模仿教师的设计过程做一遍, 加深印象。 教师布置作业。布置与知识点相关的作业,如完成在窗体中加入滚动字幕的功能,可以假设字幕每隔 100 毫秒向右移动 100 个单位,当字幕在窗体的 右边消失后,从窗体的左边出来。使学生加强对新知识点的理解和运用,同时介绍定时器
13、控件的属性、事件。 在问题中结束,引发进一步思考。例如问题 1:如何限定用户登录次数?引出下节课的内容:多分支语句格式及嵌套的 if 语句格式; 问题 2:用户名和密码的存储采用数据库、密码的加密等。为以后的知识讲授做准备,同时给学生留下印象,使学生产生对新知识的渴望,从而激发他们主动去学习。 4 结语 项目化教学的应用突破了以知识点的层次递进为体系的传统教学模式,以实际项目作为导引,引出了相关理论的学习,最终又作用于实践。在教学过程中始终贯彻“问题引导、项目驱动、讲练结合的原则,使学生的学习过程始终围绕完成一个完整的、实际的、具体的、有形的项目,这个项目将知识点融合在一起,这使得学生在完成项
14、目的过程中,既是学习理论知识的过程,也是综合应用知识的过程。这样就把知识的学习和知识的应用有机地结合在一起,一年以来的教学实践证明,项目化教学的应用极大地激发了学生的学习兴趣,既学到了知识,又学会了分析问题、解决问题的能力。 参考文献: 1 常晓娟.“任务驱动”教学法在程序设计语言教学中的应用J. 齐齐哈尔医学院学报,2005(6):693-694. 2 薛永三,柴方艳,邵丹,等.“工程项目驱动”教学法在 VB 程序设计教学中的应用J. 牡丹江师范学院学报 :自然科学版, 2008(4):56-57. 3 卢桂荣. 项目教学法在高职课程“VB 课程设计”中的应用 J. 科技信息,2008(32
15、):297-298. The Application of the Project Teaching Method in VB Teaching ZHANG Guang-qun,WANG Hang-jun (School of Information Engineering, Zhejiang Forestry College, Linan 311300, China) Abstract: In the teaching of VB programming designing Courses, the Project Teaching Method is used to improve stu
16、dent analysis and problem-solving capabilities, so that students in the teaching process has been摘 要:本文对 3 本国内软件工程教材及 2 本引进的美国软件工程教材进行比较分析,并结合笔者从事软件工程教学的经验,分类总结了该课程的若干教学实施方法。 关键词本文来自:计算机毕业网 :软件工程;教材;教学方法;比较教育研究 1 中美软件工程教材编写比较 我们以历年教学中使用过的三本国内教材及作为教学参考书使用过的两本国外引进教材为研究对象,分别就软件工程的地位、教学内容、讲授方法、实践环节安排等问题
17、进行比较分析。作为研究对象的五本教材列于表 1。为了叙述方便起见,按表1 顺序五本教材分别简称为“汤本” 、 “刘本” 、 “张本” 、 “郑译本”和“影印本” 。 1.1 关于软件工程的地位及开设该课程的意义 “汤本”沿用 IEEE 对软件工程术语的定义:“以优质、高效、低成本为目标,研究开发、运行和维护软件以及使之退役的系统方法” 。 “汤本”前言中指出软件工程课程“为学生后续的专业课程教学和工程实践环节提供必要的方法学基础和能力训练,同时也是学生参加工作后立即面临的最直接应用基础。 ”可见, “汤本”强调的是“方法学”及方法学训练。 “刘本”引用IEEE Standard Glossar
18、y of Software Engineering Terminology 给出的一个“软件工程”更为全面的定义:“软件工程是将系统性的、规范化的、可定量的方法应用于软件的开发、运行和维护,即将工程化应用到软件上;对中所述方法的研究” 。 “刘本”在前言中又指出“软件工程不仅从方法论的角度为管理人员和开发人员提供可见的结构和有序的思考方式,而且从大量软件开发的成功经验总结出设计模式、框架、部件库等,软件工程正在逐步发展为一门成熟的专业学科” 。 “刘本”在进一步指出方法的“系统性” 、 “规范化” 、“可定量”特征的同时,强调软件工程的专业性。为此,该教材 1.3 节专门介绍了 IEEE和 A
19、CM 联合研究项目SWEBOK (软件工程知识体系 )所包含的 10 个知识领域。“张本”指出,软件工程是“研究软件开发与维护的普遍原理和技术” ,同时认为“一本书中不可能包含软件工程的全部内容,入门介绍从实用角度讲述软件工程的基本原理、概念和方法” 。 “郑译本”的原书前言指出, “为了获得成功,在设计和开发软件时,我们需要有规范,需要有工程化的方法” 。该书新版第 6 版“更加强调一些新的和重要的软件工程过程和实践” 。 “影印本”在回答“What is software engineering?”(什么是软件工程? )时这样写道“As software engineering, we u
20、se our knowledge of computers and computing to help solve problems.”(软件工程意味着我们应用计算机和计算科学的知识帮助解决问题)。在小结中写道:“Software engineers use tools, techniques procedures , and paradigms to enhance the quality of their software products.”(软件工程师应用工具、方法、过程和范式来增进软件产品的质量)。 “Their aim is to use efficient and product
21、ive approaches to generate effective solutions to problems.”(其目标是应用有效和生产性的方法产生问题的有效解答)。 不难看出两本引进教材更加强调软件工程的“实践性” 、 “生产性” ,这与国内教材强调“学科性” 、 “基础性”不同。对软件工程认识上的这种差异,决定了中美两国“软件工程”教材在教学内容、讲授方法及实践环节安排等方面的诸多差异,最终也将决定学生胜任第一任职岗位需要的差别。国内学生毕业时虽有较好的基础,但往往需要数月、半年至一年再培训、再学习才能胜任岗位工作,这对美国学生是不可想象的。因为如果不能较快或立即适应工作,就意味着
22、“失业” 。 1.2 关于软件工程的教学内容 “汤本”的教学内容主要讲传统方法即结构化方法。这是考虑到“结构化方法是软件工程入门阶段的最基本要求和大多数中、小型软件开发中的实用技术” 。 “汤本”全书共 8 章,第 1 章概述,第 2 章软件计划,第 3 章需求分析,第 4章软件设计,第 5 章编码,第 6 章软件测试,第 7 章软件维护,第 8 章软件项目管理,附录文档参考大纲。 “汤本”以 SA(结构化分析)、SD(结构化设计 )、SP(结构化编程)为主线,结合一个“学生选课注册系统”的实例进行分析。 “刘本”以 IEEE 最新发布的软件工程知识体系(SWEBOK)为基础构建内容框架,重点
23、讲面向对象的方法。其它内容则点到为止,并未展开阐述。 “刘本”全书 11 章,第 1 章概述,第 2 章软件过程,第 3 章软件项目管理,第 4 章需求工程,第 5 章形式化方法,第 6 章面向对象基础,第 7 章面向对象分析,第 8 章面向对象设计,第 9 章软件实现,第 10 章软件测试,第 11 章软件演化、维护、再工程。其中,第 4 章、第 6 至第 10 章,以当前普遍流行的面向对象技术和UML(统一建模语言) 为核心,全面、深入、系统地介绍软件开发各个阶段的任务、过程、方法和工具,并结合 Minilibrary(小型图书馆系统)实例进行分析。 “张本”既讲结构化方法,又讲面向对象方
24、法,因为“结构分析和结构设计技术现在仍然是人们在开发软件过程中使用得非常广泛的方法,在相当长一段时间内这种方法还会有生命力” 。 “张本”全书 15 章,第 1 章概述,第 2 章可行性研究,第 3 章需求分析,第 4 章形式化说明技术,第 5 章总体设计,第 6 章详细设计,第 7 章实现,第 8 章维护,第 9 章面向对象方法学引论,第 10 章面向对象分析,第 11 章面向对象设计,第 12 章面向对象实现,第 13 章软件项目管理,附录 A C+类库管理系统的分析与设计,附录 B 一个汉字行编辑程序的设计。其中第 28 章及附录 B 介绍软件生命周期各阶段任务、过程、结构化方法和工具。
25、第912 章及附录 A,用 UML 描述介绍面向对象方法学引论、分析、设计和实现。 “郑译本”共 32 章,分为五个部分。第 1 章软件工程介绍,单列一章。第一部分软件过程,含第 2 章,考虑到所有重要的过程模型,涉及传统过程和敏捷过程的争论。第二部分软件工程实践,含第 5 章软件工程综述,第 6 章系统工程,第 7 章需求工程,第 8 章构建分析模型,第 9 章设计工程,第 10 章进行体系结构设计,第 11 章构件级设计建模,第 12 章完成用户界面设计,第 13 章软件测试策略,第 14 章测试技术,第 15 章产品度量。第三部分应用 Web 工程,含第 16 章 Web 工程,第 17
26、 章开始一个 WebApp 项目,第 18 章 WebApp分析,第 19 章 WebApp 设计,第 20 章 WebApp 测试。第四部分管理软件项目,含第 21至 27 章,给出的是与计划、管理和控制软件项目的人员有关的问题。第五部分软件工程高级课题,含第 28 至第 31 章,分别涉及形式化方法、净室软件工程、基于构件的开发、再工程及未来之路。 “影印本”全书共 14 章,分三个部分。第一部分含第 1 至第 3章,分别论述软件工程知识的重要性(第 1 章为什么需要软件工程) ,理解过程的重要性(第2 章过程和生命周期建模)以及完成项目计划 (第 3 章项目计划和管理 )。第二部分介绍软
27、件开发和维护的主要步骤,包括第 4 章需求分析,第 5 章系统设计,第 6 章对象,第 7 章程序编写,第 8 章程序测试,第 9 章系统测试,第 10 章系统交付,第 11 章,系统维护。第三部分软件的评估和改进,分析如何评价过程和产品的质量,含第 12 章产品、过程和资源的评价,第 13 章预测、产品、过程和资源的改进,第 14 章软件工程的前景。 需要说明的是, “影印本”从第一部分即给出贯穿全书的两个通用实例,第 1 个例子代表典型的信息系统,介绍了为一家大型英国电视公司确定广告时间价格的软件;第 2 个例子代表实时系统,介绍 Ariane5(阿里亚娜 5)控制软件。以后每一章都将所介
28、绍的概念应用到这两个通用实例中。 综观上述 5 本教材的内容与组织可以看出,国内教材是以结构化方法或(和)面向对象方法为主线,并结合管理信息系统的实例进行分析。实例的选择主要从教学角度出发,并不一定是实用的系统。引进教材尤其注重“实践性” ,突出当前软件开发占主流的 UML 为描述工具的面向对象方法。对结构化方法,则作了进一步抽象,不再作为单独部分具体阐述。对于开发一个实用软件所需要要的各个方面,特别是新技术,如敏捷过程、构件建模、净室测试模型等都做了细致的分析。所选用实例都源自实际项目。这样就能使学生获得更接近当前软件开发实际的知识和实用的方法,达到“学以致用”的目的。 1.3 讲授方法及实
29、践环节安排 “汤本”的讲授方法是“结合软件开发实例进行讲授” ,汤本理论讲授 30 学时,上机 30 学时。该教材从第二章开始就在习题中布置了一个“学生成绩管理信息系统”的课题作业,要求学生对该课题开展工作,随教学进程完成相应阶段的任务,提交相应文档,并以小组为单位编码、实现和测试。这种将实践环节和理论讲授融为一体的做法可圈可点。但是“汤本”并没有相应材料支撑课题作业。 “汤本”中举出一个“学生学期选课注册系统”的范例,可惜也没有贯彻始终,仅在“可行性研究”和“需求分析”中用过。这就给初学者带来一些困难。 “刘本”和“张本”采用理论讲授与实例分析相结合的方法,书中有大量实例,并有内容丰富的习题
30、配合。 “刘本”中 Minilibrary 的实例分析较详尽,对理解面向对象的方法有很大帮助,只是这个实例仍嫌不够完整。 “张本”有两个实例分析的附录,分别讲述了用面向对象方法和结构化方法开发两个软件的过程。与张本配套的教辅材料有软件工程导论学习辅导和电子教案,给教学带来很大方便,这也是本书受到教师、学生欢迎的一个重要原因。 “郑译本”采用的是案例导向的讲授方法。书中提出一个 Safe Home(住宅安全系统)的教学案例,以对话形式逐步展开这一软件的开发过程,让读者跟随一个虚拟的项目组,跟随他们的工作进程开发一个计算机应用系统。 “影印本”从第一部分就给出了两个实际项目(英国广播公司软件和阿里
31、亚娜火箭控制软件) 做为教学案例,并给出一个借贷处理系统的学摘要:本文是教授“操作系统”课的心得体会。提出了对“操作系统”课程的一些思考以及对教材改革的思路,并且指出了传统的“操作系统”课程教学环节的弊端和实践环节在“操作系统”这门课中的重要性以及实践环节的多样性,最后指出要从培养高水平的创新性人才出发,研究教材改革的方向和思路。 关键词本文来自:计算机毕业网 :操作系统;教材改革;教学环节;实践环节 DiscussSomeThoughtofTeachingandPractice in the Subject“Operating System” Abstract: The article di
32、scusses the feeling when I teach the subject“OperatingSystem”.There is devided between theory and practice in the subject“OperatingSystem”and the content of text book is serious out of date. The article is provided some thoughts of the subject“OperatingSystem”and some advice ofthereform of the text
33、book. At the same time, this article points out the shortcoming of traditional teaching in the subject “OperatingSystem”and importance of practice in the subject “OperatingSystem”and diversity of practice. Finally, the article points out to research the direct and idea of the reform of text book fro
34、m start point of cultivating high level innovating person with ability. Key words: OperatingSystem;thereform of the text book;teaching tache;practice tache 1 引言 操作系统本身是计算机系统的底层核心软件, 它的设计过程体现了程序设计和软件工程的精髓。操作系统原理是计算机专业主干课程之一,是计算机科学知识构成的重要部分。除理论知识以外,实践环节也是必不可少的。在传统的“操作系统”课程教学当中,存在着相当大的弊病,理论和实践脱离得相当严重,已
35、到了“操作系统”课程教学非改革不可的地步。 2 传统的“操作系统”课程教学环节的弊端 在传统的“操作系统”课程教学当中, “操作系统”的理论性较强,与实践脱离很严重,有的甚至没有实践环节。这使得学生在学习这些理论的时候觉得太空洞,并且是无用武之地。 举例来说:进程管理是操作系统的核心章节,在这里只能用类 passical 语言来实现进程管理各种算法。但在实际上,学生在实践中并没有实践它,造成学生只是在理论上知道这种算法,而无法实践它。在以后的学习甚至在工作中都没有用到这种算法。这样就造成了一种恶性循环。 具体来说,比如有关 PV 操作的例子,自习教室中共有 50 个座位,当教室里没有空余座位时
36、读者只能在教室外等候,直到有人离开教室时方可进入。要求定义相应的信号量并用 PV 操作给出读者进行自习的同步算法。这是一个书上的例子,书上只给出了类 passical 语言表示的程序段,然而没有给出具体passical 语言或者 C 语言的程序来说明整个的 PV 操作。 如 S 表示自习教室刚开放的时候可用的座位数为 50。当 S0 时说明教室中有座位可用,当 S=0 时说明座位已被分配完,当 S Begin SemaphoreS:=50; Cobegin Begin P(s); 进入自习教室; 自习; 离开自习教室; V(s); End Coend End 这是书上给出的答案,这样也无可非议
37、,学生只要知道先申请资源,即教室。申请到了教室就进入教室自习,自习完了就释放资源。 然而,学生在实践环节中实践不了它。这样就是当时学生知道这段读者进程的意思,但过不了多久,拿到类似的问题,学生就不会做或做错了。 在传统的“操作系统”课程教学中存在着严重教学误区: (1) 操作系统纯理论化。许多高校“操作系统”课程还是理论教学,没有实践环节,脱离实践非常严重。 (2)“操作系统”课程內容过于陈旧。我们现在操作系统课本还是上世纪 80 年代或 90 年代的內容,经过这二十多年计算机的发展,操作系统得到了迅速的发展,操作系统也得到了更新换代,然而这在我们学生的教材上没有得到体现,使得操作系统的教材从
38、上世纪 80 年代延续到 21 世纪,可能还要继续延续下去。 因此,对操作系统教材的改革已迫在眉睫。当然,对操作系统的教材更新时必须要注意以下几点: (1) 首先要做到新老兼顾的原则,也就是说在吸收新鲜的內容的同时,原来过于陈旧的內容可以删除,但是基本內容不能少,这样在增加新內容的同时原来的知识得到了巩固,新知识的添加可以包含在原章节中,这样每章的操作系统算法都可以通过这些新知识来论证。新知识包括,嵌入式操作系统以及一些最新操作系统理念,把这些新知识融入到原有知识里,更能体现出操作系统理论在现实中的价值。 (2) 在配备操作系统教材的同时,应配备一本实践指导教材。这是非常重要的。这样可以把操作
39、系统每章的算法和原理与实践结合起来,做到理论和实践相结合。这样,学生通过自己动手实践更加容易理解操作系统的原理和算法。 教材的选定非常重要,选定一本好的教材,对学生的学习兴趣和积极性的调动非常重要。例如,一本好的教材对学生有启发的作用,可以很好地调动学生的积极性和主动性,一本好的教材有好的实践指导书,可以帮助学生自己动手实践理解操作系统里的各种算法。一本好的教材是和现实紧密结合的,这不仅反映了操作系统当前的迅速发展的领域,而且可以使学生更加了解当前操作系统的发展状况,对学生有着一种激励作用。 总之, “操作系统”课程的改革必须是围绕着学生的学习和兴趣来改革,让学生学习到更多的知识,接触到最新的
40、技术发展是我们作教师的巨大责任。因此, “操作系统”课程的改革必须围绕学生的自身特点来进行,这样“操作系统”的改革才有出路,才会让学生学到更多知识。 3 对“操作系统”课程中实践环节的几点思考 实践环节是学生自己动手来完成课程里所要求的实践环节,以实现课程里的算法。在“操作系统”中,实践环节非常重要,学生通过实践环节来理解“操作系统”各种算法,因此实践环节在“操作系统”课程中占有十分重要的位置。 现在大多数高校“操作系统”课程没有实践环节,这样学生在学习 “操作系统”这门课时就感到非常枯燥。如开头讲的那个例子:学生只知道怎么分析这道题,然后给出类Passical 进程段,然而学生并不知道如何用
41、计算机语言来实现这个程序段。学生只能用中文来表示这个进程段。假如书上能给出用源代码来表示的整个程序,然后学生可以上机论证一下,这样对进程管理的整个过程都会了如执掌,并且有了理性的认识。通过实践环节,学生可以更好地理解操作系统的各种算法。 大多数高校没有把操作系统的实践环节放在非常重要的地位,他们把纯理论的知识直接灌输给学生,而没有用实践来论证这些理论。这样,理论显得非常空洞。为了凸显实践的重要性,我们在“操作系统”的每章里都可以附加操作系统的实践。 在国外的许多高校,操作系统很早就开设了实践环节,这样操作系统每个章节的算法都可以用实践来实现,加深了学生对这些算法的理解。同时也给出了许多源代码供
42、学生参考,这样有利于培养操作系统方面的拔尖人才以及为培养软件专业方面的人才奠定基础。而在国內的许多高校,操作系统并没有开设实践环节,以至于学生没有办法来实现操作系统里的算法。这样高校也就造就不出一批高层次的人才以及拔尖人才。实践环节是培养学生动手能力和理解操作系统算法的重要环节。具体的实践环节应包括以下几点: (1) 对算法源代码的分析,可以加深对此算法的理解。通过对源代码的分析和编译,学生可以对算法的整个编译过程和实现过程有一个更加直观上的理解。通过对源代码的编译和分析,可以提高学生的编程能力,而且能够使学生的思路更加开阔。因此,在操作系统课程的实践环节中增加对每个算法源代码的分析和编译是必
43、要的而且是必须的,这是培养高水平拔尖创新性人才的重要环节。 (2) 操作系统课程要跟上时代的步伐。随着现代计算机的迅速发展,现代操作系统更新换代非常迅速,如何让学生接受最新的操作系统设计技术成为当前面临的重大课题。如现在嵌入式系统发展迅速,在人们生活的整个电子领域都有嵌入式系统的影子。而在操作系统的教材中却没有嵌入式操作系统的內容,这样学生就无法跟上时代的步伐。因此,在操作系统课程中增加嵌入式操作系统是必要的,而且是必须的。这可以让学生能够接受操作系统的最新技术,而且可以把操作系统的理论应用到操作系统最新发展的技术上。 (3) 在实践过程中故障排除能力对培养学生独立思考能力起着非常重要的作用。
44、比如检测源代码正确性,这就需要学生有独立思考的能力和较强的动手能力。通过检测源代码的正确性,同样可以提高学生的编程能力以及培养学生的创新性思维。 (4) 实践环节可以有多种形式,比如可以把学生以组为单位共同完成一个模块,几个小组完成一个大的系统。这样不仅培养了学生的动手能力,也培养学生的创新能力。 操作系统是整个计算机专业的核心课程,也是后续课程的基础,实践环节不仅可以让学生真正理解操作系统的算法,而且可以培养学生的编程能力。总之,在操作系统课程中,实践环节占有非常大的份量,是培养创新性人才的重要环节。因此,需要改变当前操作系统课程教学的误区,必须改革教材以及实践环节的配套用书,让学生真正从实
45、践中理解操作系统的各种算法,同时为以后的编程打下良好的基础。 4 总结 在整个操作系统教学过程中,理论和实践相脱离,在课堂上讲述的算法没有摘要:“数据结构”课程是计算机专业最重要的专业基础课,游戏开发技术是计算机应用技术最前沿的分支之一,实现由基础到前沿的跨越,是学生的希望所在,也是检验教学成功与否的重要指标。本文总结了游戏开发过程中的成功经验,及时反馈并自觉落实到教学过程中,对教师和学生都是有益的尝试。 关键词:数据结构;游戏开发;跨越 从事“数据结构”教学的教师往往遇到的学生困惑是:数据结构有什么用?数据结构与计算机新技术的开发有什么关系?类似的问题一方面反映了学生对计算机新技术的渴望与困
46、惑;另一方面也反映了“象牙塔”里的学校教育与技术开发市场之间的距离。 毋庸置疑的是, “数据结构”是计算机本科学生最重要的专业基础课,在游戏编程中扮演着极其重要的角色,而游戏开发技术又是计算机应用技术最前沿的分支之一。本文试图通过数据结构在游戏开发中的简单应用来解答学生的困惑,以此拉近学校教育与市场开发之间的距离。本文涉及到数据结构中的链表、顺序表、栈、队列、二叉树及图的概念,在此不做过多描述,希望读者阅读本文前对数据结构有所了解,并且熟悉 C/C+语言的各种功能和应用。 1 顺序表的应用 顺序表是数据结构中最简单、最常用的一种线性表,它的特点是,用一组地址连续的存储单元依次存储线性表的元素。
47、砖块地图系统中使用的就是这种最简单的数据结构。这里对砖块地图系统做如下规定:构建一个简单的砖块地图系统,视角为俯视 90 度,并由许多个顺序连接的图块拼成。 (1) 定义图块 struct Plot/定义图块结构 int Access;/ 记录此图块是否可以通过 /中有每个图块的图片指针 等记录 ; Access 为 0 时,表示此图块不可通过,为1 表示能通过。 (2) 定义二维数组存放每个图块的值 定义的二维数组为:Plot Map710。通过循环将此地图初始化,初始化程序和生成地图如图 1 所示。 for (i=0;i for (j=0;j scanf(“输入第%行,第% 列初始化值:%
48、d ” 从图 1 看出,这个地图用顺序表表示非常直接。当控制人物在其中走动时,对人物将要走到的下一个图块进行判断,看其是否能通过。比如,当人物要走到(2,5) 这个图块时,用如下判定函数来判断这个图块是否能通过: x=3;y=5; int Ispass(x,y) return Mapx,y.Access;/返回图块是否通过的值 以上只是简单的地图例子,使用顺序表也可以表示更为复杂的砖块地图。目前流行的整幅地图中也都要用到大量的顺序表,只不过在整幅中进行分块而已。 2 链表应用 链表的主要优点就是可以方便地进行插入、删除操作。在游戏开发中,链表主要应用在有大规模的删除和添加操作上。在飞机游戏中,
49、飞机的子弹是要频繁地出现、消除的,个数也是随机的。链表主要应用在发弹模块上。在下面的源代码中,我们就定义了坐标结构和子弹链表。 (1) 定义坐标结构 struct Cpiot/定义坐标结构 int x;/X 轴坐标 int y;/Y 轴坐标 ; (2) 定义子弹链表 struct Bullet /定义子弹链表 Cpiotbulletpos; /子弹的坐标 intbulletspd; / 子弹的速度 struct Bullet* next; /指向下一个子弹 ; (3) 定义飞机类中的子弹 class Cmyplane public: void AddBullet(struct Bullet*); /加入子弹的函数,每隔一定时间加弹 void Refresh