资源描述
《算法设计与分析》教材建设的实施
国家973信息技术与高性能软件基础规划项目首席科学家顾钧教授和中国工程院院士李国杰教授指出:“我国的软件开发要算法先行,这样才能推动软件技术的研究与开发,提高我国企业软件产品的技术竞争力和市场竞争力”。算法设计与分析是计算机专业的核心课程,是一门理论性与实践性相结合的课程。通过课程学习学生应掌握常用算法设计策略,提高软件开发设计和解决计算机科学与工程领域中较复杂的实际问题的能力;同时通过学习算法复杂性分析,培养学生在软件开发中注重效率的理念。<br> <br> 1亟待改进的现状<br> <br> 在我校本科生课外实践、毕业设计和研究生考试阅卷工作中,发现学生算法设计能力普遍欠缺,其它普通高校也有类似情况[1]。教材是体现教学内容和教学方法的知识载体,是进行教学的基本工具,分析现有的算法设计与分析教材,不难发现出现以上现象的根本原因。现有教材定位往往偏高,注重理论讲解高深,适合研究生、重点院校本科生使用,这样的教材往往导致学生对算法设计课程产生畏惧心理。现有教材对算法策略的讲解多以问题为章节,没有概括和归纳算法策略的特点,及在同一策略下不同问题的应用差别,学生很难系统地掌握算法策略的应用技能。另外,现有教材普遍只侧重算法效率分析,而缺乏提高效率方法和技巧的介绍,综上所述,深感有教材建设的必要性。<br> <br> 2本教材建设宗旨及其结构设计<br> <br> 根据现状分析,本教材建设以“适用性实用性”为宗旨,定位于普通高校计算机专业本科学生,以素质教育的为需求,注重培养学生解决实际问题的能力。基于此宗旨本书分四个层次: <br> 第一篇“引入篇”包含两章,从问题求解的步骤开始认识算法及其重要地位、并学习算法设计的基本过程、算法效率分析方法;为提高学生的学习兴趣,还对当前主流算法及软件进行了简要介绍(此节可作为选修)。<br> 第二篇“基础篇”,对算法设计基本工具循环、递归机制和数据结构的应用技巧和提高算法效率的方法做了讲解。<br> 第三篇“核心篇”包含两章,主要介绍了常用的几种算法策略,如:枚举法、递推法、分治法、贪婪算法、动态规划及与图搜索有关的算法策略,并对算法策略及其应用进行了总结比较。<br> 第四篇“应用篇”,每节针对同一问题采用不同的数学模型、不同数据结构或不同的算法策略进行算法设计,并进行算法效率上的分析比对。<br> <br> 3教材建设特色<br> <br> 教材建设遵循《中国计算机科学与技术学科教程2002》(“China Computing Curricula 2002”,简称“CCC2002”)知识体系,属于算法和复杂性(AL)的范畴。以AL1.基本算法分析和AL2.算法策略作为教材核心。<br> 教材建设中吸收国内外同类教材[2] [3][4]的优点并加以消化,力争浅显易懂地讲解深奥的算法设计策略和分析方法。在体现“适用性实用性”的宗旨下,本书和现有算法设计的教材相比主要特色有:<br> (1) 重系统性,符合认知规律<br> 本教材结构严谨,章节划分合理、层次分明。特别是教材第三篇“核心篇”摒弃同类教材中根据问题划分章节的方法,通过对算法策略特点的概括和归纳,以同一策略下的应用差别来划分章节,能反映知识点间的联系,符合认知规律。同时,在各章末尾对算法进行比较、总结,使学生能方便、全面地掌握算法策略的本质及其应用体系。<br> (2) 重启发性,体现创新意识<br> 有些算法设计教材中的例题,先给出问题的算法设计结果,再去讲解它们。这样做只能使学生“知其然”而“不知其所以然”。本书中例题要经过问题分析、数学建模、数据结构设计和算法设计后,才给出算法和算法分析。这样讲解富有启发性,利于培养学生“设计”算法的能力,而不是“记忆”算法的能力。同时,改变学生被动接受知识的习惯,养成主动学习的意识。<br> (3) 重适用性,提高学习效率<br> 第二篇“基础篇”是从程序设计到算法设计承上启下的内容,对问题求解的基本方法、算法基本工具的使用及提高算法效率的基本技巧做了必要的总结、归纳,相信这些内容会给普通院校的广大学生有较大的裨益,可以从根本上促使其打好学习算法设计的基础,提高学习效率。<br> (4) 重开放性,培养学科兴趣<br> 第一篇中对现代算法的概览,旨在扩大学生的知识面,提高学生对算法设计学习的兴趣。教材中还介绍了从算法到程序转换中的常见错误和注意事项,引导学生不能仅停留在形式化的算法描述阶段,而是要大胆上机实现,检验算法设计的结果。这样在提高学习本学科兴趣的同时,还能尽快提高学生的实践能力。<br> (5) 重实践性,拓宽思维空间<br> 教材中介绍的算法设计方法与现代的编程方法步调一致,有利于激发学生问题求解的欲望,增强综合应用能力。第四篇“算法设计实践”,每节中针对同一问题采用不同的数学模型、不同数据结构或不同的算法策略进行算法设计,旨在扩展学生解决问题的思路,促使学生灵活运用算法知识,而不是生搬硬套教材中的算法。同时,也可以通过对多种算法设计的分析比较认识算法的优劣。<br> <br> 4教材建设成果<br> <br> 教材已于2006年3月由清华大学出版社出版。教材出版后虽然仅使用一次,但教材初稿已多次作为算法设计与分析课程的讲稿,学生使用后普遍反映良好,他们认为教材将复杂的算法思想进行了高度的概括归纳,以简洁的方式呈现给读者,具有易读、易懂性,实例丰富,非常实用。省内其它院校进修的教师也认为这个教材(讲稿)内容充实,第四篇是全书的一个亮点,非常有利于提高学生的算法设计应用能力;教材没有过多的算法注释,为启发式、探究式、研究式教学方法提供了好的教学平台。2010年6月该教材已被列入国家“十一五”规划教材。 <br> 参考文献 <br> [1] 李海伦,唐全,“程序设计”课程教学改革的研究与实践——加强算法设计教学,提高学生编程能力《 计算机教育 》2005年 7期21-22<br> [2] 王晓东主编《计算机算法设计与分析(第二版)》,电子工业出版社,2004<br> [3] (沙特)阿苏外耶著,吴伟昶等译,《算法设计技巧与分析》,电子工业出版社,2004.8<br> [4] Sara Baase,Allen Van Gelder,《计算机算法——设计与分析导论》第三版,高等教育出版社,2001.6<br> </p> <p> </p> <p>
</p>
摘要:“C语言程序设计”是高校多数非计算机专业本科生的必修课,也是学生普遍认为非常难学的课程。为了降低难度,笔者提出从调整授课顺序和改革教学内容两个方面入手,进行改革。实践证明,这一做法能够取得比较好的教学效果,学生的程序设计能力也较以前有明显提高。<br> 关键词<br>本文来自:计算机毕业网 :C语言程序设计;教学效果;授课顺序;教学内容<br> <br> 随着计算机在各个专业领域的普及,许多非计算机专业的本科生都需要在学习和工作中根据专业的特点编写实用程序。以“C语言程序设计”(下面简称为“C语言”)为代表的“程序设计”类课程是高校多数非计算机专业本科生的必修课。通过系统地学习该课程,学生主要学习两大类的知识:一种流行的程序设计语言(例如C)和程序设计初步。其中,程序设计的思维方式以及与之相关的概念、操作等都将比较系统地介绍给学生。<br> 按照传统的教学模式,学生普遍认为《C语言》比较难学,而且在后续课程学习中也不能很好地用它进行程序设计。学生程序设计能力普遍偏低,主要体现在两个方面:编写程序的效率低和程序的质量低。就此,国内有的学者提出通过按照专业调整授课重点、补充多媒体等教学手段激发学生兴趣、通过“精选”、“精讲”、“勤练”等方式提高授课质量[1]。<br> 在讲授过程中,笔者对比和研究了多种教学手段和国内外计算机程序设计语言类教材[2~8],并进行了小范围的实验,最终发现,单纯改革教学方式能够收到一定的教学效果,但是受教师本身教学水平的影响比较大,不会从根本上解决问题。另外一个结论就是传统教学中有两方面值得推敲:一方面是授课顺序,另一方面是教学内容。<br> <br> 1传统的教学顺序<br> <br> 传统的“C语言”教学中,概述之后往往要用两章的篇幅(大约10学时)分别介绍数据类型和运算符,然后依次是程序控制结构、数组、指针、函数等知识。这种教学顺序可能来自于教材的编纂顺序。笔者认为,这种顺序比较适合于编写产品使用说明书,而不适合组织教材,更不适合教学。它存在如下两个问题:<br> (1) 初期的知识点过于繁多。以数据类型部分为例,C语言中用于修饰数据的基本数据类型只有4个(分别是char、int、float和double)。如果只是简单介绍,这些内容并不多,但在这部分通常还要讲述short、long、signed和unsigned修饰,其他进制整数的表示、各种小数的表示、字符和字符串的表示、各种数据的输入和输出、输入输出数据时格式的控制等等。如果学生已经基本掌握了C语言,作为复习,倒还可以按此方式总结,但在学习伊始就要面对如此繁杂的内容,确实有些不妥。调查发现,学习完这部分内容以后,许多学生都表示听明白了,但什么都没有记住,更谈不上如何在程序中使用,为什么要这样用等。甚至有的学生在进行到一半的时候就产生了畏难情绪和放弃思想。类似的问题在讲授运算符部分时也存在。<br> (2) 数组、指针和函数比较难掌握。这是整个课程的重点和难点部分,其中既包括很多新的概念和相应的操作,还包括课程要求掌握的大部分算法。学习完这部分内容之后,学生普遍反映能够读懂程序,但不能熟练编写和调试程序,因此有必要研究这部分内容的教学方法。<br> <br> 2调整授课顺序<br> <br> 从软件工程的角度分析,C语言属于结构化程序设计语言。结构化程序设计的一个突出特点是程序要围绕着数据展开。就此,笔者根据几本国内外语言类教材的组织方式[2-8],并站在初学者的角度,本着由问题引入、由浅入深的原则,重新组合了部分内容,分散了知识点和难点,基本消除了上面提到的问题。具体说明如下:<br> (1) 按照程序处理对象安排教学顺序。围绕着不同类型的数据,我们把整个教学过程主要分成三个阶段进行。第一阶段采用以int型数据为例,重点介绍整型数据及其相关操作,例如常量、变量、定义、输入、输出、计算等概念。第二阶段在前一阶段的基础之上,通过简单扩充,讲授完float、double等其他数值型数据的相关概念和操作等知识。最后一个阶段讲授有关字符与字符串的概念及其操作。<br> (2) 综合介绍数组、指针和函数。数组、指针和函数是C语言中的重点和难点部分。这三个概念之间既包括相互独立的部分,也有相互重叠的部分。在讲授的时候,最好按照各部分的难易、重叠关系安排教学顺序。为此,我们把这部分也分成三个阶段进行。第一阶段,仍然以整型数据为例,重点介绍三部分的基本概念和操作。第二个阶段重点介绍要求掌握的算法,例如排序、查找等。第三阶段,重点讨论涉及字符串的概念和操作。当然,如果能够把前后两部分综合考虑,从整体上划分成三个阶段讲授,会使得课程更为紧凑。<br> 经过这样划分以后,由于每一阶段都针对特定的数据类型展开,所以不论是学生理解和掌握,还是教师的备课和授课,都将轻松许多。经笔者小范围实验证明,调整之后也确实取得了令人满意的教学效果。<br> <br> 3调整课程内容<br> <br> 当然,这里说的调整课程内容并不是说哪些专业适合学习C语言,哪些专业不适合,什么专业适合学习哪部分内容等有关分级教学的问题。《中国高等院校计算机基础教育课程体系2004》(简称CFC2004)提出计算机基础教育的理念是:“面向应用需要;采用多种模式;启发自主学习;重视实践环节;培养创新意识;树立团队精神。”传统的《C语言》教学中,多以介绍语法为主,所讲述的程序或者是针对理想数据的验证性程序,或者是简单的算法,例如数组的排序、检索、插入与删除元素等。这些内容当然重要,但是它们都是针对理想数据、特定情况展开的。因此,学生按照这种方式学习了一个学期之后并不能保证顺利编写和调试具有实用价值的简单的小程序。<br> 为了使学生具有一定的实践能力,笔者认为需要从两个方面调整课程。第一个方面是修改例题。具体地讲,就是要改变原来程序的给出方式。原来的方式是在简单分析之后直接给出程序的。笔者认为,例题必须从零开始,按照自顶向下逐步细化的设计过程逐步给出,尤其是比较靠前面的例题和比较复杂的例题更应如此。<br> 另一方面是补充有关程序调试、测试方法和异常处理等方面的知识。其中,程序调试方法至少包括设置断点、跟踪、查看变量的值等操作。测试方法主要介绍黑盒测试和白盒测试。针对初学者的特点,不妨把异常处理的重点放在以scanf为代表的输入函数上。除了上面这些内容以外,根据专业需要,笔者认为针对不同的专业,还可以考虑补充有关人机界面设计和程序格式方面的内容。要补充的内容看似很多,其实,只要在讲授例题的时候调整一下方式方法,就可以使学生在潜移默化中掌握这些内容。<br> 异常处理是所有补充内容中最不容易实现的部分。因为一般情况下,scanf出现在课程的初期,而异常处理则出现在课程的中期或者后期。按照完全沉浸法解决这个问题的一种策略是教师编写具有异常处理功能的输入函数myScanf,替代原来输入函数scanf,供学生使用。到后面讲述异常处理的时候,再剖析myScanf的设计。这样的好处是既培养了学生处理异常情况的习惯,又教会了学生处理异常的常见方法。可谓“一举两得”。<br> 为了便于交流,下面简单介绍一下myScanf的设计思路。在C语言中,最为常用的输入函数就是scanf,它主要包括3个组成部分:作为第1个参数的格式字符串部分,作为后续参数的地址列表,以及该函数的返回值。地址列表按顺序提供了存储各输入数据的存储单元的地址;格式字符串部分是程序员明确定义的输入数据的顺序、数据类型、个数等信息。可以把scanf函数的执行过程描述为:操作者通过键盘输入数据,程序按照格式字符串分解输入的数据,并把它转换成一个相应的值,最后再按照地址列表中的地址存储;重复前面的分解、转换和存储过程,直到格式字符串为空。当分解出的数据非法时,scanf函数将终止运行。返回值描述的是正确接收和存储的数据个数。初学者在使用scanf函数时,问题主要包括:<br> </p> <p> <p>(1) 缺少或者不会给出提示信息<br> (2) 编写程序时,格式字符串中格式转换说明符与后面的地址在数据类型、个数、顺序方面不统一<br> (3) 运行程序时,输入的数据与格式字符串不匹配,造成不能正常接收部分数据<br> (4) 运行前面scanf时多输入的数据会影响后面输入函数读取数据<br> myScanf围绕着上述问题展开。由于根据地址很难判断出数据类型,此外,按阶段教学时,数据类型也非常单一,因此在myScanf函数中可以不处理有关格式转换说明符与后面地址的数据类型是否匹配的问题。<br> 据此,设计myScanf函数的流程图如图1所示。教学中,可在此基础之上根据学生实际情况增减功能。<br> <br> 4结束语<br> <br> 诚然,提高学生程序设计能力绝对不是靠一门“C语言”就能够做到的,但对于非计算机专业的学生来讲,由于后续的相关课程非常少,该课程的学习效果将直接影响到他们的程序设计能力,因此笔者认为有必要仔细研究在不开设后续课程的基础上,如何调整以C语言为代表的语言课程的教学方法。<br> 在近几年的教学中,笔者尝试在不增加学时的情况下,调整了教学顺序,用符合上述规范的例题替换了原来过于简单的例题,同时也要求学生按此规范编写程序、完成实验。从作业、实验情况等反馈信息来看,学生的程序设计能力明显提高,取得了比较好的教学效果。 <br> <br> 参考资料:<br> [1] 雷学生,胡多. C语言程序设计教学方法探讨[J]. 计算机教育,2006,(6).<br> [2] K&R. The C Programming Language[M]. 北京:清华大学出版社.<br> [3] Bjarne Stroustrup. C++程序设计语言(特别版影印本)[M]. 北京:高等教育出版社.<br> [4] Richard C. Detmer. 80X86汇编语言与计算机体系结构[M]. 北京:机械工业出版社.<br> [5] Bradley L. Jones, Peter Aitken. 21天学通C语言(第6版)[M]. 北京:人民邮电
摘要:本文通过发放调查问卷的方式,分析引起IT新生不适应大学生活的一些因素,并针对这些因素,探讨了IT新生如何适应大学生活的一些措施,提出几点可行性的建议,为帮助下一届新生更快适应大学的学习与生活提供参考。<br> 关键词<br>本文来自:计算机毕业网 :调查问卷;措施;建议<br> <br> 1引言<br> <br> 新生刚进大学时,原先升学的愿望已实现,新的目标尚未找到,难免陷入暂时的迷茫,同时,也感觉到大学与中学有着截然不同的生活、学习方式,需要尽快转变角色,适应大学生活,并在一年级时能否确立起合适的学习目标,制定出切实可行的人生规划,学会正确的学习方法。这些,都对学生的后继发展起到举足轻重的影响。<br> <br> 2调查研究方法<br> <br> 本文从以下几个方面出发设计了调查问卷的内容,并向所在的计算分院06级同学发放400份调查问卷,做了针对性的抽样调查。回收332份调查问卷,回收率83%,因此,此次调查结果是有效的。调查的内容包括:<br> 1) 大学的学习、生活,与中学的学习、生活之间的不同点;<br> 2) 大一新生如何适应大学的学习及生活;<br> 3) 大一新生应如何安排利用自己的学习、娱乐时间。<br> <br> 3调查结果分析<br> <br> 从以上统计结果可以看出:大多数的同学认为大学与中学在学习、生活上不同,主要体现在大学课程时间的安排和自主性学习。首先,大学里所学知识是由基础课、专业基础课和专业课组成的,循序渐进,环环相扣,前面任何一环没有学好都将会影响到后面课程的进行。另外,学生在校期间还要在外语上通过四、六级考试和计算机通过水平测试,学习的任务并不轻松。其次,对于以基础知识灌输和人文精神培养为主要特征的大学学习来说,不仅上课所学的要靠自觉去消化吸收,整个知识体系也要靠自己去补充完善。所以,除了专业学习外,应自我涉猎课外知识,使自己丰富起来。29.82%的同学认为高中与大学相比,高中的生活更适应自己。因为在中学时,有些生活琐事依靠父母亲友的帮助,进入大学后,衣食住行等个人生活都由自己处理安排,自主、自立、自律更是大学生活的主旋律。<br> 指导新生走出迷茫,作好个人规划是让新生适应大学学习、生活的有效方式。许多学生以考上大学为唯一的学习目标,一旦目标实现,容易产生松懈心理,难以及时树立起进一步的学习目标,造成了考上大学前后的“动机落差”。此外,高中阶段很多学生兴趣狭窄,爱好很少,一门心思考大学,没有形成特长。一旦进入大学,就把主要精力放在迫切发展自己的爱好特长上,而对学习却逐渐失去了兴趣。因此,刚进大学的新生应让他们从高考胜利的满足和陶醉中清醒过来,认识到大学是人生成才、成就事业的一个新起点。根据学校教学的客观现实和自己的实际,制定出个人在学业、思想道德、心理发育等素质培养方面的奋斗目标和行动方略,以增强进取的内动力,为再创大学阶段的人生辉煌打下良好的基础。<br> 自律方面,新生最需要注意的有锻炼并提升自身能力,自觉学习,接触社会,搞好寝室关系与室友和睦相处,谈恋爱,以及娱乐的安排。<br> 1) 积极参加课余班团和实践活动,展现自我,提升自我,培养自我,积累工作经验。<br> 2) 要学会合理安排自己的学习、娱乐、休息时间。<br> 3) 室友之间、同学之间多加了解,熟悉互相的生活习惯、性格,为以后的相处打下基础。<br> 4) 大学新生大多不能正确把握恋爱标准,如43%的同学反映谈恋爱对学业的影响是负面的。过早恋爱不利于新生顺利地适应大学生活和学习。<br> 5) 从数据中反映出,有一部分同学不能跟上大学的脚步,借玩网络游戏,通宵来逃避现实,反抗现实。同时,这也反映出这24%的同学对大学生活感到迷茫。<br> 另外,有62.65%的同学曾在碰到难学的课程时灰心过,他们反映,此时最希望得到诸如老师的关怀、指导,与老师更多的交流等。对于自己所学的专业,很多同学反映他们不太了解,概念很模糊,因此学习的目标性也不明确。<br> 新生对于人生规划问题也出现两极分化,部分同学由于对大学生活的不适应,连带反应出的迷茫、消极情绪,十分不利于个人的成长、成才。对于已有了明确的人生规划的同学,他们已初步适应了大学生活,但计划的付诸实施显得更为重要。<br> <br> 4建议及措施<br> <br> 首先,通过讲座,帮助进入大学的新生认识到大学为培养专门人才服务,以培养各类高级专门人才为目标。其次,校方引导新生积极主动地去适应新的环境。如:引导新生合理安排自由的生活及生活空间,珍惜拥有的学习机会,及时了解图书馆、语音室、阅览室的开放时间,适度参加一些社团活动,多听有意义的学术报告及讲座,充实他们的生活并注意加强自我控制能力。<br> 学生不仅要消化理解课堂上学习的内容,而且还要适量阅读相关方面的书籍和文献资料,以适应时代和科技的发展。大学不再是像中学那样老师追着学生,而是要学生主动求教老师;大量的时间需要自己去安排,而不是被老师占有;要学会研究性学习,善于发现和提出问题,即要会主动的去学习,而不是被动的。<br> 再者,指导新生合理规划大学四年,如:在节假日参加一些与自己的职业目标相关的实习,增加自己的能力,培养自己对职业规划的直观了解。新生在生活、学习方面要善于挖掘和发展自己的优势;当遇到困难时,解决这些问题主要靠自己,要有自强自立意识;同时,在自己无法解决时,要学会主动向老师和同学寻求帮助。最后,对于新生的谈恋爱和娱乐安排,学校可以通过讲座,报告会等引导学生正确对待,也建议引导新生以学为主以玩为辅,并且要有目的的玩,玩出“价值”来。<br> 大一新生在一年级时,要对自己的人生做好规划,并围绕规划制定切实可行的学习计划,阶段性的目标,独立生活,自觉学习,为美好的人生奠基。 <br> </p> <p> </p> <p>
</p>
摘要:本文介绍了北航软件学院独特的实践教学体系,并介绍了在实际教学中所取得的可喜成效。<br> 关键词<br>本文来自:计算机毕业网 :软件工程;实践体系;3P能力<br> <br> 1引言<br> <br> 软件工程专业学生的培养,在学科教育与培养面向市场需求的人才方面存在着事实上的矛盾。市场要求的软件人才要距离当前成熟的热门技术不能太远;而学科教育在于铸就学生的软件专业素质。在学时有限的情况下,两者不易兼得。根据软件工程专业教学所面临的挑战,学院将软件工程实践教学体系的改革作为突破口,成立了由教学规划、管理和相关实践课程主讲教师组成的实践教学课题组,系统地对实践课程、重要的实践环节、实习基地建设等进行规划,制定了一套较为完整的实践教学实施计划,形成了“一个目标、两种途径、三大环节、四级台阶,3P能力训练为核心以及多渠道的措施保证”为特色的实践教学体系。<br> <br> 2实践教学体系的内容与规划<br> <br> 在跟踪与研究计算机科学与技术学科教程、软件工程学科教程、软件工程知识体系(SWEBOK)的基础上,借鉴国内外软件人才培养模式的经验与成果,依托北航计算机学科优势,针对软件学院的办学模式和实际情况,我们给出了如图1所示的实践教学体系框架图。<br> “一个目标”:即培养的学生应具有较强的软件工程专业基础、宽阔的知识面,富有创业和创新激情,并具有务实进取精神、实践能力,能适应社会需求的变化,具有良好的科技和人文素质,熟练的外语运用能力,规范的软件开发和项目组织能力、富有国际视野、竞争意识和团队合作精神,又能适应未来软件技术变化发展的需要,成为的德、智、体全面发展的软件工程技术人才。一句话可概括为“强实践、强工程、强外语应用能力”。<br> <br> 图1实践教学体系框架图<br> <br> “两种途径”:即为了使学生能够有机会近距离了解社会、增长见识、开阔视野,积极开拓两种途径:一是“请进来”,即邀请国内外著名专家和工程师,到学校访问交流,给学生上课,开设讲座,召开座谈会、招聘会等;二是“送出去”:即选送学生到国内知名IT公司实习或到国外公司进行实训工作、交流学习等。<br> “三大环节”:即强化实践教学的三种主要形式——与理论课程配套的实践教学环节(课程作业或实验)、集中式实习环节(暑期课程设计、专项实习)和综合性实习环节(生产实习、毕业设计)。<br> “四级台阶”:即分解大学四年实践教学的具体目标,要求每位学生一年要上一级实践台阶,每级台阶包含明确的所必须掌握的应知应会的实践教学内容,实践能力层次提高的四级台阶如图2所示。<br> “3P能力训练”:即将对学生书面表达(Paper-<br> work)、口头表达(Presentation)、动手实践(Practice)的训练贯穿整个实践教学过程始终。<br> “多渠道的措施保证”:即从制度保障、师资队伍建设、高年级学生担任助教、校内实习基地建设、学生第二课堂(课外的各种协会、我校的大学生科研训练计划SRTP、冯如杯课外科技活动、学科竞赛)、引进专业认证(目前引入了二门微软的MCP认证课程)、构建面向创新的实践教学信息管理平台(目前已投入运行)等多个方面保证目标的实现。<br> <br> 图2实践能力层次提高的四级台阶<br> <br> 3实践教学体系的实施<br> <br> 3.1以学期为单位分解实践教学体系目标,进一步规范课程实践的教学要求和内容<br> 根据本科生课程体系与实践教学体系的规划,设计每门专业理论课程所要求的实践目标、实践案例、实践内容、所要求掌握的主要工程文档和熟悉的程序文件以及常用工具;同时分析每门实践课程的覆盖和衔接,探求内容和案例规范化,对于未覆盖到的技能,设计出一、二、三年级暑期社会实践与专项实践的教学内容,并通过综合性实习环节得以综合运用——即精心设计“三大环节”,力争通过这些环节实践教学的训练,覆盖软件工程专业要求本科生掌握的知识领域,并掌握相关方面的工具软件和工程文档的技能,提高动手能力和实践能力。对于教学实践中涉及到相应的过程与文档,要求学生按照北航软件学院质量体系文件(参见3.2内容)的相关规定开发与编写文件,如图3所示。<br> 在上述实践教学体系统一的规划下,大部分课程实验、课程设计及实践环节可以构成一个统一的体系,各课程所覆盖的知识体系与实践技能互相衔接;力图通过四年的培养,使学生在实践技能上一年上一个台阶,由“具有个人基本的程序设计能力”达到“综合应用”的水平。除培养专业技能外(四年代码行累积编写在10000行以上),还有意识地培养学生的工程化思想,将工程化文档的训练贯穿在实践中,同时加入了有关职业道德、协同工作能力及沟通能力等方面的内容,以期学生毕业时素质与能力能够达到企业的用人需求。<br> <br> <br> 图3 以学期为单位的实践教学体系内容分解图(部分)<br> <br> 3.2围绕实践教学体系目标,制定实践质量体系管理文件<br> 为保证实践教学体系规划的有力实施,针对当前我国软件行业中普遍存在的工程型文档相对薄弱的现状,我们认为学生应该从开始就接受工程型文档的阅读与写作能力的训练,尤其是英文文档的阅读与写作能力。因此,结合ISO9001质量体系,并参考CMM2级、3级的要求,我们建立了一整套软件学院实践质量体系文件,层次结构如图4所示,其中第二层与第三层的程序文件与文档模板力争覆盖软件开发过程的主要环节。第二层的程序文件包括软件开发程序、评审程序、软件测试指南、配置管理指南、实习管理程序和毕设管理程序等,作为教师和学生在实践教学中的程序性和过程活动的规范性指导文件。第三层模板则尽量涵盖程序文件中所用到的各种文档模板与编写规范等供学生编写文档时参考使用。为加强真实性与指导性,在质量体系文件中还收录了一些软件公司的实例项目的部分文档,如图4所示。<br> <br> 由于实践教学的骨干教师们都参与了质量体系文件的制定与编写,因此教师在理念上接受并认同质量体系文件,从而在实践教学环节中能够有意识地遵循执行,通过不同学期、不同课程实践教学内容对文件的覆盖(参见图3),使学生们在实践过程中也逐渐熟悉并掌握了工程文档的书写规范与标准。<br> 3.3校内与校外实习相结合,打造学生实训与实习基地<br> 课堂教学要服务于满足市场和企业对人才的素质和能力不断增长的需求,一个有效的途径是加强和安排去学生进入企业实习。然而我国的软件企业大部分处于初创和成长期,目标和学校人才培养的目标不很一致,有时还存在时间上的冲突和认识上的矛盾。鉴于这样的现实,我们一方面积极开拓企业的实习渠道,给同学提供充分的选择,同时制定了“有自主核心软件产品、企业规模百人以上、距离学校近的”企业优先推荐,并规范实习派出条件、过程管理、学生和企业指导教师职责等内容,并每年实习企业进行评估,淘汰效果不好的企业,奖励效果好的企业,促进企业和小学的良性互动,不断积累好企业实习案例和巩固好的企业实习成果。另一方面,充分利用校内优质办学资源、结合学院信息化工作的需求开拓学生的校内实习基地,以弥补企业实习的不足,学院在学生实习安排上更主
动。学院信息化实习基地是一个很成功的例子,学生在几位担任实践教学的青年教师的带领下先后完成了学院网站、办公管理、教务管理、文挡管理中心、教师讲义和学生作业上传和下载服务,答辩管理、招生和报名管理等等,两次在学校机关部处和院系的信息化建设评比中名列第一名,这些成果也成为学院实践教学信息管理平台的重要组成部分。<br> </p> <p> <p>在校内校外实习相结合打造学生实训与实习基地的同时,通过与厂家及企业共建等方式,引进一些实践教学设备与主流系统及应用软件,积极促进学院实验室的建设,建立与实践教学体系中所要求的软件开发支持环境,如数据库、配置管理库、BUG跟踪与处理系统等。同时安装行业内常用的开发环境与开发工具,为学生创造一个良好的开发与应用平台。为了将来就业的适用性,开设新技术新工具的演示课,建立国产软件体验中心。大力支持学生的第二课堂(课外的各种协会、北航大学生科研训练计划、冯如杯课外科技活动、学科竞赛)活动。<br> 3.43P能力训练贯窜实践教学过程始终<br> 在多年的人才培养过程中,我们深刻体会对学生的口头表达能力(Presentation)、书面表达能力(Paperwork)和自主动手实践能力(Practice)培养的重要性与必要性。我们积极倡导授课教师将这三种能力的训练和培养贯穿在教学的整个过程中,我们坚信如果学生这三方面的能力经过四年的大学学习获得了长足的提高,其就业竞争力将大大增强,并受用终身。<br> 口头表达能力是一个人的思维能力、沟通能力、性格以及风度等个人素质的体现。在计算机实践教学中所强调的口头表达能力的训练主要是提高学生语言的逻辑性、准确性、简练性和目的感,将自己的设计思想、观点在有限的时间内,运用最生动、最易被人所接受的有效的表达方式传递给听者,对听者产生最理想的影响效果。<br> 书面表达能力是将自己的实践思想、思路、方案、步骤、内容、成果和效果,运用文字表达出来,使其系统化、科学化、条理化的一种能力。书面表达是口头表达的补充,更看重学生的专业知识的掌握。在实践教学的每个环节,我们都制定了一整套文档规范和模板,供同学学习参考,平时的大作业、课程设计等都有严格的文档格式要求。在注重格式要求的同时,不断对同学在书面表达方面的技巧、方法进行指导、组织同学们进行交流。反复的训练,促使每一位同学在书面表达方面的提高。<br> 自主动手实践能力是在学生具备一定的实践意识前提下,以一定的学科知识为基础,以实践任务为内容,自觉主动地运用一定的操作方法和技能,发现和解决实际问题的能力。在大学四年中,根据培养方案的要求,每位同学需要具有10000行(相当)的编程量,每位学生在平
编译技术的发展极大地提高了软件开发的效率,深刻地影响着软件开发方法的变革,推动着计算机应用不断地向社会的方方面面延伸,已经成为计算机科学中发展最迅速、最成熟的一个重要分支。国防科学技术大学计算机学院的科研以巨型机研制为主要特色,自从20世纪60年代开始编译技术的研究工作以来,编译技术一直是计算机学院的一个重要研究方向。<br> <br> 1 编译原理课程建设实践<br> <br> 1.1 结合科研优势,深化教学改革<br> 课程的教学以培养学生的知识、能力和素质为目标,突出教学内容的基础性和实践性。在课程教学内容改革方面,贯彻知识、能力、素质辩证统一的思想,结合学术界前沿性研究成果,特别是结合学院在型号任务的编译器的研制中取得的最新成果,不断充实、更新教学内容,帮助学生了解本领域的前沿及最新发展动态,培养学生的科研意识和素养。<br> <br> 1. 2建设系列课程,注重知识融合<br> 课程小组长期跟踪、研究、借鉴国外相关教材和教育计划,不断充实编译原理课程的内容。同时,加强系列课程之间横向、纵向联系与分工的研究,开设了一些配套课程与选修课程。此外,还根据系统软件、程序设计和软件工程等相关系列课程的发展和变化,更新并完善课程实验方案。<br> <br> 1.3形式内容呼应,丰富教学手段<br> 课程采取了丰富的教学手段以培养学生综合运用知识的能力:课堂教学坚持采取讨论式、启发式教学方法,改变“满堂灌”的教学方式:通过设计综合实验,为学生提供综合运用知识、培养科研素质的机会;综合实验的验收采取演示、讲解和答辩相结合方式,使学生的科研能力和人文素质得到全方位的锻炼。课程还建立了课程教学的专门网站(http://sei.nudt <br> 1.4加强实验环境建设,不断完善编译原理实验体系<br> 目前,该课程使用计算机学院投资500万元建设的现代化教学实验室,实验环境良好
展开阅读全文