JAVA语言实践教学的改革探索.doc_第1页
JAVA语言实践教学的改革探索.doc_第2页
JAVA语言实践教学的改革探索.doc_第3页
JAVA语言实践教学的改革探索.doc_第4页
JAVA语言实践教学的改革探索.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

语言实践教学的改革探索 摘要:本文介绍了我院在Java语言教学改革中采取的手、脑、口并用的一系列措施。关键词本文来自:计算机毕业网 :JAVA;实践教学;创新1存在的问题首先,题目老套,没有新意。改变编程环境,重复实现学生信息管理系统、图书管理系统等陈旧题目的做法,不仅使学生失去对课程设计的兴趣,而且抹杀了学生主动发现问题的探索精神,导致学生学习不主动,简单重复过去,完全应付老师的模样。其次,教师跟踪不利。教师布置完学生作业后,放任自流,对学生的学习进度不跟踪、不监督,甚至某些课程结束后,还有学生叫不出教师名字。学生见不到老师,问题不能及时得到解决,慢慢就松懈了,有的在机房里玩游戏,有的在聊天,甚至有些人根本不在教室,实践教学结束的时候,拷贝他人成果或者直接网上下载交给老师,大好时光白白浪费。再次,学生少有机会表现自己。即使学生非常努力,也很少有同学有机会分享他成功的喜悦,而缺少了交流,无形中就失去了一个相互学习的机会。而且学生的实验报告上交后,根本没有任何消息反馈给学生,学生较少了解自己系统的优点和缺陷。其实课程设计是一门课程的所有知识点的综合应用,涉及的内容比较多,而且多数情况下是独立完成,其间难免会遇到各种各样的问题,如果大家有机会交流,相互取长补短,收获一定非常大。2改革措施JAVA程序设计课程实践性强,而且我校的定位是培养应用型人才,所以我们在教学中反复强调实践的重要意义。由于学生具有C+语言的编程基础,因此我们对JAVA的教学目标是提升学生解决问题的能力。针对以往实践教学中存在的问题,我们采取了下面一系列改进措施。2.1动脑,提出问题列宁说,发现问题就等于解决了问题的一半。大多教师都听到学生中诸如听不懂、学不会的牢骚话,究竟是什么原因导致这种状况呢?听老师讲课,没有一句话听不明白;看课本,没有一个字不认识,其实关键就在于学生没有发现问题,所以发现问题是学习的关键,一旦提出了问题,解决问题就非常容易了。因此在教学过程中,我们提醒大家要用专业的眼光思考,随时随地准备利用计算机的专业知识来解决身边的问题,同时也是对学生的创新思维的训练。在布置一定数量题目的基础上,我们鼓励大家挖掘身边的问题,并以加分的措施来激励学生,同学们主动参与的学习热情被调动起来,大家积极主动地自由组合,讨论提出问题的可行性等,教师偶尔参与到某个项目的讨论中,并适时给出参考意见,最后在项目统计时发现,软件工程专业53人的情况下,题目达到40个左右,而且很多题目新颖、具有可操作性,比如大学生的自我管理系统、专卖店的商品销售、库存、评分系统、在线测试系统等一些题目具有实际意义,可行性强,远远超出我们最初提出的5个题目,基本上实现了一人一题,而以小组合作形式出现的项目小组从采用的技术到系统功能及个人分工也令人满意。2.2动手,解决问题曾经在书上见过这样一个真实的故事:新来的护士应病人及家属的迫切要求,加大了病人的吸氧量,却导致了加速病人死亡的事与愿违的结果,其原因在于增加的氧气吸入量在不知不觉中剥夺了病人自主呼吸的机能,呼吸系统功能的丧失导致了病人的死亡。其实学习也是一样,要给学生保留一定的自主学习空间,虽然学习过程相对痛苦,可是对于学生在人生道路上的成长却是有积极作用的,所以我们教师要想办法鼓励学生自主学习。让学生获得一种能力的提升,才是教学的最重要目的。利用所学的知识来解决实际问题,本身需要对所学知识的加工整理过程,基于这样的想法,不局限在学过的技术和编程语言上,我们鼓励学生学习新方法、新技术并运用到实际项目当中。学生对于自己选择的问题表现出极大的积极性,挖掘系统需求、参考相应的网络资源、学习新技术、新知识,同学们劲头十足,很多同学每天早早等候在实验室门口,中午12点还不想回去。在JAVA语言实践教学过程中,有些学生自主学习JSP、POWERBUILER等新技术,偶尔点到未在教室的学生,也是在宿舍上网查资料,有时候学生也会给老师发短信告知。对这样的学生,我们反而会因为学校不能提供便利的学习条件而自责,绝对不会因为学生不在实验室学习而生气。2.3动嘴,展示成果实践过程,不仅需要动脑、动手,还要动嘴,既要锻炼学生的发现问题和解决问题等创新思维能力,也要锻炼学生的表达能力,我们在实践教学的最后的一个环节安排的是学生成果的自我展示。每个项目至少有一个学生上台讲解,采用常见的评委打分方法,从学生中推荐出5个评委,采用分别去掉最高和最低分,取平均分作为项目的成绩,各个评委通过网络教学软件坐在自己计算机旁边,根据讲解人对于项目的理解、系统提供的功能和应用的技术等情况对项目给以合理成绩,交给记录人员并输入由学生自主开发的评分系统中,计算出最后成绩。对于一些在功能和界面实现比较成功的项目,观众席中不时会发出不由自主地赞叹声,两个或三个小组成员同时登台讲解的情况也不断出现,学生参与评分,不仅增强了大家的主人翁和责任感意识,而且通过其他同学的成果,也会看到自己学习上的差距,达到激励同学互相学习的目的,因此在两个上午的评分过程中,同学们都表现地非常热情,积极参与。3不足和展望尽管很多同学反映这样的课程设计比以往任何一次都更有收获,我们还是发现一些不尽人意的地方:首先,要建立专门的JAVA课程教学网站。虽然目前已经将教学大纲、教案、参考资料、作业及相关要求等教学材料放置在校园网,学生可以随时随地的延伸上课时间,但是由于缺乏师生交流,不能及时掌握学生需求、不能及时了解学生的学习问题,而成为教学中的一大遗憾,因此下一步就是要建立专门的JAVA网络教学平台,分别开设教学区(教学的相关资料等)、学生成果区(作业统计和排名等)、解惑区(提出问题和解答问题)、即时交流区(学习论坛),以网络为纽带,充分利用网络资源的优势,加强网上交流,实现学生学习过程中的自我管理,进一步掌握学生学习状况,把握教学进度和难度。其次,对答辩过程进行优化。一方面,在答辩过程中,因为经验不足,导致评分不公正的现象发生,比如个别答辩小组明显给自己班级同学成绩偏高,甚至个别人左右评分的现象,这些都是始料不及的,以后的操作中应当想办法避免;另一方面,答辩系统网络版本的升级,尽可能发挥每个同学主动性,让所有同学全部作为评委参与评分,培养大家的主人翁精神和责任感意识。最后,硬件资源的教学满足。改变学校机房因为担心机器感染病毒而安装机器还原软件、不提供网络环境等的状况。因为目前情况下很多学习离不开网络环境,导致很多学生抱怨机器还原浪费了很多时间,而不能上网也使得学习过程中遇到的问题不能及时解决,我们相信只要师生共同努力,站在对方的位置考虑问题,所有问题都能迎刃而解。没有最好,只有更好,在以后的教学工作中仍然会遇到很多问题,也正是这些问题的解决才使我们教学不断进步的,培养出更好的、更多的合格人才。参考文献1 张锦祥. 高级程序设计语言课程教学改革与实践J. 浙江教育学院学报,2007,(7).2 边小勇,盛玉霞. 计算机语言类课程教学法研究与实践J. 计算机教育,2007,(11).3 张放平. 强化实践教学 推动创新型人才培养J. 中国高等教育,2007,(17). 摘 要:C语言指针教学内容组织近乎千篇一律,除相关概念至今未见在教材中求精外,理论基础的介绍既不精准又不一致更不直观,大体停留在罗列各种使用情形上。本文选取了已投入教学实践并取得良好效果的自编讲义中的一段,以展示教改成果。其中的字面指针能使介绍直观化。关键词:教学内容;C语言;指针1 基本指针类型C语言中,指针是一种特殊类型的整型值,所以也说成是指针值。指针与地址不同,地址是反映计算机存储介质逻辑构造的物理概念。存储介质由字节组成,每个字节都有一定的序号(如0,1,2,3,100,101,1000,1001,),这些连续的序号就是它们的物理地址。地址作为字节的序号,用整数就能表示。然而仅仅地址并不能反映该地址处的若干字节是由什么类型的变量或数组所用,正像仅凭“长安大街100号”并不能指明该处是大商场还是小店铺,乃至是围有几栋楼的居民小区。为了描述“是由什么所用”这层含义,引入了指针概念,并给出了指针类型及其表达方法。有了指针类型,指针就能由整型值地址转化而成,在程序需要指针时有计可施。指针类型并不像结构体类型,需要专门做出类型声明,而只需在已有的类型名上添加运算符就能表达,甚至像数组类型之类,只需添加运算符和其中的整型常量值。尽管有些指针类型的表达可能非常复杂,但这里仅讨论表达简洁的基本指针类型,即在已有的非数组类型后跟随星号。例如:short * char * struct tag *(假设struct tag是已声明的结构体类型,且全文有效)。如果想把程序中出现的整数2000看成是存储介质序号2000字节的地址,就必须配合使用指针类型。例如: (short *)2000 (char *)2000 (struct tag *)2000都是合理的,参照-2000是字面负整数的说法,它们都可以认为是字面指针。此时,其中的2000代表地址,不过它们还有另一层含义,那就是地址2000处的若干字节,在看来是用两个字节为short型变量所用;在看来是用一个字节为char型变量所用,等。1.1 指针指针是整型值配上指针类型,此时的整型值代表地址。例如,假设k是整型变量,则(short *)k(long *)(2*k+1)(char *)2000(struct tag *)3000的结果都是指针。若k的值为1000,那么(short *)k与(long *)(2*k+1)分别等于(short *)1000 与 (long *)2001为了叙述方便,可以称:(1)指针类型星号前的类型为基类型,(2)类型后的整型值为指针地址,如下表:1.2 指针变量这种类型的变量可以用来存储指针,定义指针变量要用指针类型来完成。以下写出的都是指针变量的定义。short * p1;char * p2;struct tag * p3;之后,p1、p2、p3便都是指针变量名。使用赋值运算可以让指针变量存储指针,但类型应当一致。例如p1 = (short *)k;p2 = (char *)2000;p3 = (struct tag *)2000;都是正确的(k的意义同上文)。用指针变量来存储指针,不过是存储了指针地址,指针类型的信息全凭这个指针变量的类型体现。例如,p2存储的是2000,由于它是char * 型的指针变量,所以它的值为:(char *)2000指针变量对应内存的字节数,由编程环境中设置的模式决定,small模式等为2字节,large模式等为4字节。定义指针变量的方法,可以动态地描述成:在已有变量定义的基础上,在变量名前加星号。例如int p1, v, p2; = int *p1, v, *p2;那么,p1,p2变成为指针变量。注意,在星号的前后增减空格不会影响语义。1.3 输出指针凡是能够输出整型值的格式输出,都可以输出指针的指针地址。但不能忘记指针是在2字节的small模式下还是在4字节的large模式下。%p格式的printf()专门用来输出指针的指针地址。不同的是,它能自动察觉程序完成时的编程环境是什么模式,以便相应地采取类似%x格式或%lx格式的输出,但相比之下输出形式略有差异:small模式时,输出地址的4位十六进制数字。large模式时,输出地址的8位十六进制数字,且两个4位之间用冒号隔开。例如,printf(%p, (int *)30);在small模式下,将输出001e;在large模式下,将输出0000:001e1.4 直接代表指针1.4.1一维数组名代表指针C语言的一维数组名和变量名,在语义上存在着本质区别。尽管它们都唯一地对应一块内存,并且内存块的首字节地址正是这种对应的确切反映。然而,在程序中简单地使用变量名意味着要向那块内存储存数据或要从中取得数据;简单地使用一维数组名却意味着仅仅要利用那块内存的首字节地址形成的有相同基类型的指针。亦即,指针的基类型就是数组的基类型。由于内存块的位置是确定的,所以经常看到的说法类似于:数组名是指针常量。可以用printf(%p, 数组名);来输出数组对应内存块的首字节地址。这从一个侧面表明,尽管数组的内存是系统分配的,但我们还是可以知道它在什么地方。1.4.2 字符串常量代表指针在程序中,经常可以看到这样的写法:p = e:turboc2student.dat;其中,p是char* 型的指针变量。实际上,系统要为这样的字符串常量专门开辟一块内存来存储它包含的字符。可是,它在程序中留下的可供直接使用的只有char* 型的指针,指针地址就是那块内存的首字节地址,所以才要用一个指针变量来保存,以便之后随时可用。在此额外提一句,整型常量的存储位置很隐蔽,但幸好没必要知道。表达式计算的中间结果存储在什么地方也是隐蔽的。有了以上两点认识,就可以这样说,%s格式的输出部分可以是指针值,只要指针地址处的若干字节存储了恰当的字符串。至于在输出部分处写的是字符串常量还是数组名,都无关紧要。2 基本指针的运算指针能参与的运算很有限。除赋值运算以外,还有其他七个种类。前四个种类分别是“*”、“ ”、“&”和强制指针类型转换运算。2.1 指针的指针运算* 除了用来构成指针类型之外,还可以出现在指针前,与指针一起构成一个基类型的变量。“*指针”变量的内存就是指针地址处的若干字节。它是单目运算符。例如,*(int *)2000是一个int型的变量,这个表达式的值是这个变量的值,而不是2000。再如,若an是int100型数组名,*an就为int型的变量,也就是an的第0号元素an0。再如,*Hello是一个char型的变量,其中存储的是字符H。2.2 指针的下标运算 除用来构成数组类型之外,当其间包含有整型值并出现在指针后,将与指针结合成一个基类型的变量。“指针整型值”变量就是“*(指针+整型值)”变量。它是双目运算,需要一个指针和一个整型值。例如: (int*)2000)4 *(int*)2000 + 4)是一个int型的变量。再如,若a是int100型数组名,那么a4 *(a + 4) 是一个int型的变量,也就是a的第4号元素。请不必为先有鸡指针a与4做 运算为a4,还是先有蛋数组a的第4号元素为a4所困,只需记住:下标变量就是做了下标运算所得的变量。再如Hello4 *(Hello+4)是一个char型的变量,存储的是字符o。2.3 指针的求取运算& 是取指针运算符。把它置于变量前,算出的是该变量的指针,这个指针以变量的类型为基类型,以变量内存的首字节地址为其指针地址。例如,有如下变量定义,并假设它们的内存首字节地址分别为:1000,1002,1003short v1; char v2; struct tag v3;那么,&v1、&v2、&v3的值分别为:(short *)1000(char *)1002(struct tag *)10032.4 强制指针类型转换运算(指针类型)跟其他强制类型转换运算符的构成一样,比如(short *)、(char *)都是这样的运算符。把它们置于z指针或整型值之前,结果就是所要类型的指针。例如(int *)Hello就能从char*型的指针转换成int*型的指针,指针地址不变。再如,曾经写出的指针(short *)k(long *)(2*k+1)(char *)2000(struct tag *)3000其实分别为:对k的值做了(short *)运算对2*k+1的值做了(long *)运算对2000做了(char *)运算对3000做了(struct tag *)运算作为类比-k,-(2*k+1),-2000分别为:对k、2*k+1和字面整数2000的值做了求负运算,等。后三个种类分别是加减运算、关系运算和逻辑运算2.5 指针的加减运算i) 指针增减值:指针作为第一运算对象和整型值相加减。结果仍为同类型的指针,但指针地址加减了整型值的倍数,具体几倍要看基类型对应几个字节。例如(short *)2000+10等于(short *)(2000+10*2) 即(short *)2020ii) 两指针相减:类型相同的指针可以相减。结果的类型,若small模式为short,若large模式为long,得到的整型值等于指针地址之差除以基类型的字节数。例如(long *)2000 (long *)1800= (2000 1800) / 4 = 50所以计算结果,或是50或是50L。数组的两个元素的指针与它俩的下标之间的关系,用这类运算确定极为方便。比如a是任意数组,i和j是两个下标,那么&ai + j - i = &aj&aj - &ai = j - i特别地a + i = &ai&ai - a = i2.6 指针的比较运算相同类型的指针可做比较运算。计算结果不是0就是1。比较仅仅使 ATM网络技术分析关键词:网络;交换机;通信;技术 摘要:ATM也是一种快速分组交换技术,它将信息切割成固定长度的信元进行传送。综合了传输、复用、交叉连接和交换技术,结合了电路交换和分组交换的各自优点,信元方式适用于各种类型信息的传输,是提供综合业务的网络技术基础。 一、ATM基本概念 (一)ATM:异步转移模式 异步:ATM采用的两种异步技术:异步时分复用和异步交换技术。 转移:复用、传输、交叉连接和交换的总称。 (二)同步时分复用和异步时分复用 复用(Multiplexing):是一种能让多种逻辑信号在一种物理介质上传送的技术。 同步时分复用(STDM):用户端固定地占用每帧中固定的一个或若干个时隙,直到相应的连接被拆除为止;接收端则从固定的时隙中提取出用户数据。 异步时分复用(ATDM):用户不再固定占用帧中某一个或若干个时隙,而是根据用户请求和网络的情况,由网络来动态的分配网络资源;接收端也不是从固定的时隙中提取相应的用户数据,而是根据数据中本身携带的目的地信息来接收数据。 (三)TDM中的固定时隙交换技术 输入帧中固定位置的时隙被固定地交换到输出帧中的某一固定时隙。 (四)ATM中的异步交换技术 数据经过ATM交换机交换后,随机地占用一个或若干个时隙 二、ATM网络交换机功能的实现 交换设备是ATM的重要组成部分,它能用作组织内的Hub,快速将数据分组从一个节点传送到另一个节点;或者用作广域通信设备,在远程LAN之间快速传送ATM信元。以太网、光纤分布式数据接口(FDDI)、令牌环网等传统LAN采用共享介质,任一时刻只有一个节点能够进行传送,而ATM提供任意节点间的连接,节点能够同时进行传送。来自不同节点的信息经多路复用成为一条信元流。在该系统中,ATM交换器可以由公共服务的提供者所拥有或者是组织内部网的一部分。 1.工作原理 中心控制单元由CPU模块、通信处理模块和路由及业务管理模块组成。正常工作状态下,CPU模块只是控制是否允许某项通信协议的接收、发送,并不直接参与具体通信协议的处理。具体通信协议的处理、协议数据的接收、发送都是由通信处理模块独立完成的。 CPU模块对通信处理模块的控制是通过一个命令寄存器进行的,它们之间的数据交换是通过双端口RAM进行的。 通信处理模块中的ATM业务模块即SAR模块的信息通过路由及业务管理模块后到达交换矩阵进行交换。通信处理模块提供ATM侧的收发复用的8bit宽的Utopia接口,而路由及业务管理模块提供ATM侧的16bit宽的Utopia接口,两者不能直接相连,两个模块之间需要进行Utopia接口转换,转换电路采用CPLD实现。 路由及业务管理模块作为CPU的一个外部设备,与CPU模块之间通过CPU模块之间通过CPU的外部数据总线、地址总线及控制总线相连。由于路由及业务管理模块的CPU模块提供分开的外部数据总线和地址总线,两模块之间需要进行总线接口转换,转换电路采用EPLD实现。 2.中心控制单元的功能 (1)CPU模块 CPU模块包括CPU核、32bit宽数据存储器(SDRAM)、32bit宽程序存储器(FLASH)和CPU的硬件复位配置电路。其中CPU核采用32-bit PowerPC结构,内含指令单元和指令执行单元,是用户程序的执行;SDRAM用于存储在程序执行过程中产生或需要的数据;FLASH用于存储用户所编制的程序,与EPROM器件相比突出的优点是使系统具有在线编程能力有灵活的块锁存而起到保护作用;硬件复位配置电路用于在硬件复位时对CPU的某些参数及复用管脚进行设置。 (2)通信处理模块 通信处理模块包含异步串行通信(UART)处理模块、以太网(Ethernet)处理模块、HDLC通信处理模块和AAL5的SAR(ATM信元的分段与重组)功能模块等。其中UART处理模块用于处理维护终端的信息;Ethernet处理模块用于处理满足IEEE802.3协议的网管代理的信息;HDLC通信处理模块有两种:一种用于中心控制单元和各业务板之间的通信,另一种用于主备中心控制单元之间的通信;SAR功能模块用来实现支持AAL5协议的SAR功能及部分ATM层功能。下面将分别对各功能模块进行简要介绍: 通信处理模块中各功能模块的工作原理大致相同,只是SAR模块稍有不同。工作原理如下:通过CPU模块对一些寄存器进行设置,初始化为某种特定的通信协议,然后在双端口RAM中的参数RAM设置成针对该通信协议的参数。当然,不同通信协议的接口控制信号是不同的。 3.ATM路由的功能概述 ATM路由及业务管理模块作为一种先进的通信器件,它能够支持非常强大、高性能的ATM交换系统。RTM丰富的性能可为系统设计提供灵活的网络业务。与ATM交换矩阵单元(SE)组成的交换矩阵组合应用,能够构建622Mbps到160Gbps的交换容量,该模块能提供622Mbps UTOPIA访问。该模块单独也能构建一个622Mbps交换。 RTM利用每个VC接收队列,64个接收业务类,31个虚输出能够进行灵活的多优先级的排序运算。该排序器能被用来作为CBR,VBR,UBR的虚通道连接的QoS的计算。RTM也提供五个独立的阻塞门限,每个以滞后而有选择的控制AAL5的早包丢弃(EPD)与UBR基于信元丢失优先级的信元丢弃,RTM还支持完全的VPI/VCI头翻译,64K的输入、输出信元缓冲,以及VP/VC交换。在接收侧和发送侧分别支持16K个VCS。 4.信元概述 (1)ATM 的信息单元 (2)采用固定的、短的分组长度,53个字节 (3)信元由5字节信头和48字节净荷组成 (4)信头结构:UNI的信头结构、NNI的信头结构 三、ATM的特点: ATM的优点 (1)协议简单,并可通过硬件来实现,因此协议处理速度快、网络时延很小。 (2)采用固定的53字节长度信元,使得信元的传输不受数据类型的影响,因此适于多媒体数据的传输。 (3)采用统计复用方式,具有动态分配带宽的能力。 (4)先进的业务质量保证机制,完善的PVC管理和控制功能。 (5)是一种有效的跨接LAN和WAN的高速连网技术。 ATM的缺点 (1)面向连接,有N2问题。 (2)协议开销较大。 (3)网络投资较大。 四、小结 ATM技术是一项优秀的传输、交换、复用、交叉连接技术。目前,ATM技术以一种更务实的姿态进入实用中,对ATM技术的理解也应在思想上更新。互联网的可持续发展需要ATM支持,以提高服务质量和扩容;ATM也需要互联网来发展、应用、展示自己。随着能充分利用ATM的应用增加,ATM的优势日渐突出。Internet的发展正是一个机遇,尤其是互联网业务的多媒体化需求,对ATM技术将是一个巨大的推动。   摘要:本文研究了软件工程课程的教学特点和教学中存在的问题,提出了以软件工程知识体系为基础的课程体系的构建,并针对目前各院校的实践类教学薄弱环节,提出一套解决软件工程实践教学的项目实战方案。关键词:项目导向;软件工程;实战方案1教改背景为了满足当前社会对具有丰富的实际软件项目开发经验人才的需求,许多院校适时地增加软件工程专业或软件工程方向的人才培养。即使对于原有的其他专业本、专科学生也需要增强实战项目训练的深度和广度,以增强学生对专业知识的学习兴趣和能力。目前,国内高校对于该类课程的传统做法是以教师课堂授课为主,学生被动地听课,教学内容一般是重理论而轻实践。即使设立实践课程,学生也只是编写一些规定的文档,其开发方式和手段基本上与软件工程的要求脱节。我们所采用的课程设计、毕业实训、毕业设计等实践类教学环节远远达不到我们的预期效果。究其原因主要有以下两个方面:第一、软件工程是一门综合应用的学科,其本身的特点决定了它不是完全可以从书本和课堂上学会,理解和实践是非常重要的。学生不可能靠听讲软件工程的基本原理学会开发一个实际的软件,而是在实际的“动手做”和“真正练”中体会和掌握软件工程的思想许多教师本身缺少使用软件工程方法开发一个完整系统的经验,仅限于照本宣科地介绍上些基本原理,不能将当前软件企业的实际案例融入在基本原理的讲解之中,与实际的软件工程实践有明显的差距。第二、我们在这些实践教学中主要以教师为主体,由指导教师来负责整个实践教学过程的管理和控制。学生只能机械地按照教师的安排完成自己的任务,使得学生认为就是在应付检查或者是为了简单的拿到学分。学生完全不能发挥自己的主观能动性,树立正确的学习目标。在课程设计、实训、毕业设计中学生很难完全自己动起来,更谈不上去从中获取实践经验和提高实践技能为将来的工作打基础。第三、在实践环节的设计方面,我们完全按照课程来制定实践的活动安排。比如,一般根据当前的理论课程的教学进度,在学期期末或者在中间来设置一周或两周的时间进行课程设计等实践教学。这种制定策略完全脱离的实际工作技能需求,在软件开发中往往更需要整体项目开发能力的运用。而且只有整体项目的展示才能够把独立教学的理论课程揉捏到一起,形成一个实践项目的知识链条。第四、我们教师往往使用虚拟课题作为课程设计、实训和毕业设计的题目,这样的题目本身就脱离了社会实际。这样的题目基本上不能提供软件开发中所需要的重要技能训练平台。从需求分析开始就让学生无所适从,根本不能把所学的理论知识运用到实践中,更谈不上锻炼系统的分析及设计能力。2构建先进的课程实践体系方案一:软件工程工作室模式以项目研发为主体、项目管理为主线,建立一支软件工程研发小组。由学生对该研发小组进行自我组织和管理,开展实际项目的研发。并且逐步形成一个软件工程领域知识的研究团体,与课堂理论知识形成互补。教师对项目的管理和技术方向及日常知识学习进行指导,为项目的成功完成提供必要的支撑。对于规模较大或实用性较强的项目,教师也同时参与到项目的研发,从协作的角度带动研发小组建立软件工程的开发理念和方法。执行步骤:(1)组建团队。公开招聘学习成绩优秀,有兴趣进行软件开发的专业学生进入研发团队。(2)搭建软硬件环境。合理规划工作室空间,组建小型研发软硬件系统。(3)制度化建设。建立合理的管理条例,初步形成一套行之有效的团队文化。以软件工程国家标准为基础,结合团队的自身情况建立项目研发标准和规范。(4)确立项目及开发。虚拟一个软件项目,深入开展调研。组织研发小组进行以工程化为原则进行软件开发,在工作中不断学习和完善。(5)规模扩大,为方案二的执行做准备。方案二:公司化项目实战管理模式校内建立虚拟软件公司,教师进入公司担任高级管理职务(CEO、技术总监、资深顾问、部门经理)。学生组建项目开发团队、培训中心、测试中心、质量控制中心、项目管理中心。执行步骤:(1)制定公司人员招聘、录用方案。根据不同的职位制定招聘条件,激励学生对理论课程的学习兴趣。指导学生根据自己的兴趣、个人条件、就业方向等方面有目的的培养自身的专业素养。使学生由被动的、教师灌输式的学习变为根据职业需求主动的、吸取式的学习。(2)建立运行及奖惩制度。以实践学分和实践课程成绩作为员工的工资报酬,对每名员工由上级主管、团队成员、工作业绩考核(参与项目考核)进行评价。从企业的评价角度来考核,让学生认识到什么才是企业所需要和看重的。从评价中塑造学生的学习观、职业观、价值观。(3)承接实际项目。定位中小企业,建立合作关系。在公司成立初期,甚至可以免费为小型公司、企业单位开发软件系统、办公系统、网站。客户负责提供调研条件、业务需求、评价、二次开发等方面的支持。学生从中可以得到职业素养的锻炼和提高,特别是在实际调研时与客户的沟通能力。收集业务数据资料,对客户业务流进行深入认识和提炼形成业务需求。根据调研记录进行整理形成报告。(4)项目启动及实施。高级管理人员、项目经理、部门负责人进行项目论证,进行项目开发任务拆分。完全按照企业模式,由学生担任项目经理、软件工程师、测试工程师、项目管理人员。为了确保项目的成功运行,由教师担任技术总监、资深顾问随时监控、指导项目的运行和管、理。在此完全形成了以学生主导、教师引导的项目开发模式。学生在这种模式中不是按照教师的要求去完成自己作业式的任务,而是完全要按照软件工程的原则来工作。培养学生认识企业化的工作需求、管理模式和任务提交规格,利用课堂上所学的理论知识融合项目所需的实际技术能力进行自主的知识到生产的转化。(5)实践教学与实际项目的有机结合。采用部分带动整体的实践教学模式,引导部分学生的实践教学环节有效的进入实际项目的任务活动中。对于某一门课程的实践教学不是僵硬的规定固定的时间,而是融合在项目开发过程中的某一环节。也就是说在某一项目开发过程中可能结合若干门课程的实践教学活动。这种新的模式能增强知识的有效性和扩展性,让课堂所学的理论知识在实践中真正的流动起来。3项目教学和实践探索式学习软件工程的理论和方法是从众多软件开发实践中总结出来的,但是对于缺乏软件开发实际经验的学生来说,单纯地讲授理论知识往往使学生感到枯燥无味且难以理解。因此,我们收集和总结了一套完整的项目研发体系,将整个项目贯穿于理论知识的讲解中,使学生真正理解这 些理论知识,建立软件开发的系统化与工程化观念和质量意识。(1)从分析项目开发中的挫折入手,例如需求分析失误、软件设计缺陷、客户沟通问题等,深入剖析导致软件失败的根本原因,从而引出软件开发的工程化发展方向,即以软件工程的原理和方法为指导,严格遵循软件过程规范和步骤。通过这些实例的分析,学生们逐渐改变软件开发等于编写程序代码的错误观念,开始认识到软件工程的重要性,有利于培养工程化的意识和观念。(2)软件过程是软件工程课程中的一个重要内容,但是对于开发经验有限的学生来说,很难在头脑中将软件过程的抽象模型与实际开发联系起来,容易产生枯燥乏味的感觉。在教学过程中,我们从软件开发的实际案例中的软件系统,结合这些系统的特点和开发策略,讲解开发过程模型,学生在思考、分析和讨论过程中更好地理解和体会软件过程的基本概念,有利于在实际开发中运用这些过程模型组织开发过程。(3)在软件项目管理方面,我们总结一些企业的最佳实践案例,诸如东软公司的人员组织与项目管理,使学生了解软件项目管理中人员、产品、过程和项目之间的关系,认识到项目管理在成本、人员、进度、质量、风险等方面活动的重要性,有利于学生在实际项目中开展团队协作和项目沟通活动。(4)在软件工程技术方面,我们结合企业信息系统、教学管理系统、电力负荷预测系统等实际项目,论述需求工程、软件体系结构设计、用户界面设计、详细设计、软件测试和软件演化等内容,重点引入项目开发流程的开发思想及各个环节的技术手段。在整个教学过程中,也应注重引入探索式学习策略,引导学生通过文献查阅以及与软件企业人员的接触交流,真正体会当前软件工程业界的真实案例和最佳实践。在常规的课堂教学之外,初期首先选择“方案一”建立软件工程工作室,利用有限的教学资源快速组建软件项目开发团队。教师利用“虚拟实战项目”引导学生进入项目研发情境,形成规范的项目研发标准。结合理论课程教学,针对实战项目进行需求性学习,构建一种“工作式”的学习模式。该方案实施后,学生对理论课的学习兴趣增强,提高了理论联系实际的能力。执行“方案二”后,彻底改变原有的实践教学模式。以“真实项目”为核心,从管理到技术方面广泛模拟公司化运作模式,让学生尽早转变角色。这种“真刀真枪”的实战模式极大的刺激学生的学习主动性,提高了学生的职业素养,丰富了学生的工作经验。4结束语软件开发是一个抽象和复杂的过程,不仅包含许多工程化的原则和方法,而且结合多种技术。在理论课教学中对于这样系列性、综合性、理论性很强的课程群,必须配合系统的、真实的、多角度的实践教学体系。“企业化项目实战”方案能够让学生进入一种企业级实战情境,进行多角度综合软件研发体系的深入学习。 1 地球在变小,地球上不会再发现新大陆,可是一个新的认识、一个新的角度,无异于对地球的一次开拓,无异于发现新大陆。一项计算机基础课程改革,历时八年多。在2007年西安举行的“第三届全国计算机教育论坛”上,改革者的发言使几乎所有在场的人都受到了鼓舞。他们的创新成果是把“数据结构”、“C语言”和“C+语言”联系在一起,形成了一门打破专业界线的综合课程;开发了丰富新颖、独具特色的多媒体教学软件;建立了以学生为骨干的教学实验管理机制。他们的教材C/C+与数据结构(第3版)(上下册)被评为“普通高等教育十一五国家级规划教材”,并由清华大学出版社和Thomson Learning分别出版中文版和英文版,在国内外发行。特别令人感到震动的是,在他们的创新成果中,处处表现出了辩证唯物主义的方法。我们一直倡导马克思主义理论是我们行动的指南,但是,在一项具体的计算机课程改革中始终坚持这一原则也许还从来没有过,这是一件多么难能可贵的事情。这种开拓性的改革精神给我们开了一个好头。本刊执行主编奚春雁(以下简称奚)为此专门走访了这项改革的主持者天津师范大学王立柱教授(以下简称王),经过交谈,我们深深感到这项改革意义重大,对计算机基础教育具有极大的启发性。计算机教育拟从2008年第一期开始,特别开设“教改专栏”栏目,对这项教学改革的过程进行详细介绍。我们以此抛砖引玉,希望大家畅所欲言,对此项改革发表自己的观点,一两句感言也好,论文评述也好,不同主题、不同角度,我们都欢迎。我们共同努力,来落实邓小平同志提出的“熟悉马克思主义的基本理论,从而加强我们工作中的原则性、系统性、预见性和创造性”。我们坚信,沿着这个方向走下去,我们一定能够在计算机教育领域里真正有所作为。奚:王老师,C语言、C+语言和数据结构至今还基本上都是独立的课程,而您在八年以前就计划把它们联系在一起,这种想法是从哪里来的呢?王:这是现实的需要。当时我在经济信息系,号业对学生的计算机应用能力要求比较高,可是计算机课程分散,重点不突出,低水平重复严重,占用课时又多,这种教学既不能跟上计算机快速发展的步伐,又不能提高学生的自主学习能力。奚:于是你们就选择了C、C+和数据结构这三门课程进行综合性课程改革。为什么选择这三门课程作为突破口呢?王:无论是为了跟上程序语言快速发展的节奏,还是为了提高学生自主学习的能力,我们都必须把计算机基础教学内容从简单的应用和单纯的应试转到学习和掌握程序语言发展的规律上来。奚:您提到了程序语言发展的规律。能不能再说具体一点?王:程序语言发展是程序语言重用程度的不断提高:从汇编语言,C语言,到C+语言,Java的流行,是基础设计方法重用程度的提高;从机器指令到函数,从对象到构件,支持重用的程序语言机制日渐成熟。而决定程序语言发展的内在原因是程序设计的基本。矛盾:存储和操作。这种矛盾从低级形式到高级形式的不断转化,进而推动程序语言的不断发展,就是程序语言发展的规律。奚:那么将数据结构包括进来,一定说明它与这个规律有着密切的联系吧?王:数据结构代表若这个基本矛盾发展的高级形式:结构和算法。奚:我很早以前见过一本译著,书名就是算法+结构=程序,这是否就说明了这种联系?王:是的。这是科学出版社于1987年出版的。这种思想是程序设计发展到一定阶段的产物。“时至今日,纵观短暂的计算机发展史,这两个方面一直保持不变。发展演化的只是它们之间的关系,就是所谓的程序设计方法。”奚:那么C和C+呢?C+可是最难学习的一种程序语言。王:从C到C+,具体包含着程序设计发展中的一个复杂的矛盾转化过程,是程序语言发展的一个主要环节。这是任何程序语言都不具有的特点。对于不习惯揭示矛盾,主动分析研究矛盾转化的人来说,C+确实难以理解。奚:普遍认为,C+的应用水平代表着一个国家的软件产业发展水平,也代表着个人的软件应用水平。是不是这样啊?王:是的。不但如此,C+的教学水平也代表着计算机基础教育的水平。奚:辩证法就是研究矛盾发展规律的,看来你们就是在抓矛盾,而且在抓主要矛盾。但是概括和总结这个矛盾运动的规律可不是一朝一夕的事情啊。王:是的,这是一个过程。一个从实践到理论,从理论再到实践的反复过程。我们的教材出了三版,也从一个侧面说明了这个过程的曲折。奚:这个过程对计算机教育一定具有深远的启示。王:1997年浙江大学出版社出版了一本教材C/C+与数据结构,作者是金以文,该教材在讲完C部分之后,直接从C+的特有内容开始讲C+,把C+中与C重复的部分取消了。这是国内在这方面进行的最早的实践活动。奚:国外有吗?王:有2001年机械工业出版社出版了一本译著C+编程思想。作者用了一章的篇幅,先由C语言实现一个袖珍C库(简化的数据结构的顺序表),然后再

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论