前言:想要写出一篇令人眼前一亮的文章吗?我们特意为您整理了5篇课程开发和课程设计的关系范文,相信会为您的写作带来帮助,发现更多的写作思路和灵感。
【关键字】课程设计,软件工程技术,应用,问题
With the deepening of our reform and opening to outside world, we have achieved a great deal in economic development. Meanwhile, our country's education are enjoying rapid growth. In school education, especially in guiding students to curriculum design, we are often used software engineering technology. And also we are feel technology in software engineering curriculum design and the application status is constantly increasing. So the author analyses the application of technology in software engineering curriculum design and analysis of relevant problems, combining with his supervision experience and research.
Key words
Curriculum design, software engineering, application, problems
中图分类号: G423 文献标识码: A 文章编号:
一.前言
软件工程是计算机科学与技术本科专业一门重要的专业课。一般在软件工程课程结束后,会安排一些时间让学生做软件工程课程设计。软件工程课程设计的内容是让学生运用软件工程的知识设计一个应用软件系统,并写出相关的设计文档材料。在进行课程设计的时候,我们会经常应用到软件工程技术,例如图形的绘制等,都需要借助软件工程技术。结合当下学生在进行课程设计中存在的一系列问题,有必要加强软件工程技术在课程设计中的应用,提高课程设计的质量和效率。
二.课程设计中存在的问题
1.不重视可行性分析和需求分析
有学生认为在软件的生存期中,写程序(coding)最重要,因此,对软件工程中的其他阶段不重视,甚至在软件开发过程中,一边写程序,一边了解需求,程序完成了需求才清楚这是很危险的,万一有的需求事先不知道,而在编制程序的过程中才发现,而在已经编制的程序上不容易实现,就要重新改写程序,或在已编好的程序上打补打,破坏程序的结构,给程序的运行和维护带来极大的困难,作者在指导课程设计中看到不重视可行性分析和需求分析的课程设计很容易陷入困境,实际的开发进度往往比预期进度慢,有时候为了赶进度,学生就采取权宜之计,不惜损害软件的质量.
2.软件设计呈无序状态
软件设计一般要求进行概要设计、详细设计,以及必须的模块设计,才能进行编码,而课程设计中大部分同学的软件开发跨越了概要设计、详细设计以及必须的模块设计,直接进行编码,这种无序的软件设计只能带来人员组织的混乱、功能代码的重复开发,并导致系统最后可集成性差.
3.系统的使用说明书不正规、不完善
软件系统质量的优劣主要取决于用户的评价.目前,大多数课程设计做的软件虽然都采用了直观易学的图形窗口界面和菜单驱动技术,大大方便用户使用,但由于课程设计系统用户类型多样,理解的程度不尽相同,除一般的操作帮助外,解释清晰、内容全面的数据字典和使用手册是必不可少的.否则用户感到使用起来很不便,觉得难于操作.
4.系统开发过程中文档不完备
软件工程要求系统开发过程中的文档必须和所开发的软件完全一致,要清楚地说明系统开发到某一阶段时已经做了什么,下一步应该做什么,以及算法的精确描述或出处等,以便课程设计小组成员之间进行有效的交流,同时这些文档也是备忘录,对系统的维护和更新意义重大.不合格、不完备的文档给开发人员内部的工作交流带来了诸多不便.更严重的是如果没有准确的文档,诸如修改系统中的错误、改进和增添新功能、移植到其它软件环境等这些工作将非常难做.
三.软件工程技术在课程设计中的应用及其相关问题分析
1.合理选择课程设计的题目
由于该课程设计与软件工程课程内容密切相关,选题工作可以在软件工程课程开始讲授时布置下去,让学生有充足的时间思考,思考成熟后,在指导教师帮助下,将课程设计题目确定下来。然后学生一边学习软件工程课程 内容 ,一边着手收集课程设计所需的有关资料,做好课程设计的准备工作 。
课程设计题 目所涉及的问题规模和难度应该比较小。因为课程设计不同于课程设计,加上课程设计安排的时间比较少,学生投入的精力也有限,所以要控制规模和难度。指导教师在帮助学生选择题目时,可以选择学生比较熟悉的问题,如图书资料管理系统、学生成绩管理系统、人力资源管理系统等等,或者选择学生很快就能熟悉的一些问题 。
2.摆正程序编写工作在软件工程中的位置
学生在做软件工程课程设计之前,已经做过一些课程设计。比如在学习C、C++或 Java之后,利用 C、C++或Java所做的课程设计 。那些课程设计内容是使用高级语言设计和编写小软件 ,在那些课程设计中,程序编写是一项非常重要的工作,因为那些课程设计是以熟练应用某高级语言为目的。而在软件工程课程设计中,编写程序工作与需求分析、总体设计和详细设计等工作相比较,重要程度降低了。因为软件工程课程设计不是以熟练运用某高级语言为目的,而是以熟悉和运用软件工程知识为目的。实际上,按照开发软件的过程,当需求分析、总体设计和详细设计等开发过程完成后,用哪种高级语言来实现软件系统已经不是重要问题了。
学生往往认为程序编写工作重要,而认为需求分析、总体设计和详细设计等工作无关紧要,这是没有领会软件工程思想的表现。当确定课程设计题目后 ,有些学生不认真作需求分析、总体设计和详细设计等工作,匆匆忙忙开始编写程序,这种行为与软件工程课程设计的目的不相符。
指导教师要引导学生明确软件工程课程设计的目的,使学生清楚程序编写工作与其他软件开发工作的关系,让学生摆正编写程序工作在软件工程课程设计中的位置;告诉学生不能只重视编写程序工作而轻视其他工作;更不能不经过需求分析、总体设计和详细设计等阶段而直接开始程序编写工作。历史上,软件危机产生的原因之一就是错误地认为开发软件就是编写程序、程序就是软件,而忽视了程序编写之外的其他各项软件开发工作 。现在要通过做软件工程课程设计引导学生摆正程序编写工作的位置,用软件工程理论指导实践,防止过去的错误再出现。
3.熟悉常用技术和工具
按照软件工程课程设计的要求,学生在课程设计结束时,要完成全部的软件设计开发任务,不但要交出一个能运行的软件,还要交出设计过程中所形成的文档材料,包括需求分析材料、总体设计材料、详细设计材料、测试材料等。要做好这些文档材料,需要在课程设计中引导学生熟悉软件工程中常用技术和工具的使用方法 。
例如,在制作需求分析材料时,涉及到实体关系图、数据流图、状态转换图、IPO 图的使用;在制作总体设计材料时,涉及到模块化技术和层次结构图的使用;在制作详细设计材料时,涉及到传统流程图、盒图、PAD图、判定表、判定树的使用;在制作测试材料时,涉及到白盒技术、黑盒技术的使用。如果采用面向对象方法进行系统分析和设计,则要涉及到 UML 中的用例图、类和对象图、顺序图、活动图、协作图、构件图、部署图的使用。
上面提到的一些常用的技术和工具,在软件工程授课过程中,教师虽然讲过,但由于没有真正使用过,所以学生不熟悉。指导教师要引导学生利用课程设计来熟悉这些常用技术和工具。因为学生毕业后,既要会做程序编写工作,也要会做需求分析、总体设计、详细设计、测试等工作,熟悉这些常用技术和工具的使用方法,并且认真完成课程设计各项文档材料的制作 ,可以为毕业后从事相关的软件开发工作奠定良好的基础 。
四.结束语
综上所述,软件工程技术在课程设计中占据着十分重要的地位,并且其应用也是十分广泛的。因此,应该加强对软件工程技术的应用研究,加大其在课程设计中的应用范围和频率。
参考文献:
[1]王延青; 李海峰; 林森; 朱素霞; 倪泽辉 软件工程系列课程设计的分组及选题策略框架计算机教育2008-04-25期刊
[2]庞希愚; 王成 在课程设计中培养软件人才工程素质的研究与实践中国科教创新导刊2012-08-01期刊
[3]廖江福; 王宗跃 软件工程专业课程设计中的双语教学集美大学学报(教育科学版)2012-07-28期刊
1.自我探索方面
人-职匹配理论是基于特质因素论而发展的生涯理论,特质因素论的最大成功之处在于开发了一整套用于发现个人特质的测评工具,包括能力倾向测试、兴趣量表和价值观问卷等多个大类。通常在现有的生涯规划课堂上最常用到的测评包括基于霍兰德兴趣分类理论的自我职业兴趣量表、基于舒伯职业价值观理论的价值观量表等。为了提高学生的参与感,除了直接在课堂上使用量表之外,根据这些理论设计的如“兴趣岛幻游”、“价值观拍卖”等课堂活动也被广泛采用。然而,这些活动的最大问题在于,无法要求个体超越自身经历来进行自我判断。如果问一个现代人:“你喜欢吃大象肉吗?”答案一定是:“不知道。”原因很简单,几乎没有现代人吃过大象肉,所以当然不知道是否喜欢。“兴趣岛幻游”中描述的六个度假岛屿和“价值观拍卖”中罗列的类似“取之不尽的银行卡”,对于大部分选课学生来说就是所谓的“大象肉”,完全超越他们的实际经验,也就难以作出类似“好或坏”、“喜欢或不喜欢”、“合适或不合适”的判断。即使测评或课堂活动最后给出了兴趣偏好或价值取向偏好的结果,这个结果对于学生来说也会因为缺乏切身的经验体会而没有实际意义。
2.职业探索方面
现有的课程设计中职业探索主要围绕职业分类理论和职业探索方法展开。这个部分的困境在于:如何在2~4个课时内将浩瀚如海的职业世界完整地展示给学生,即着手点或突破口在何处?以学生所学专业为起点,要求学生在所谓“专业对口”的范围内探索职业世界,是通常的做法。这个思路确实帮助学生找到了突破口,但问题在于:首先,专业和职业的关系不是一对一或一对多的简单线性关系,而是纵横交错的多重复杂关系,一次活动或几次课显然无法有所深入;其次,不容回避的是,许多学生在高考进行专业选择时经历的并不是真正意义上的理性决策,因而对于自己的专业缺乏认同,在这种情况下以“专业对口”为着力点很大程度上变成了无用功。
3.自我探索与职业探索的关系
在目前很多高校的课堂上,先讲授自我探索,然后再讲授职业探索,至于自我探索的结果与职业探索的结果之间有何关联,课堂教学并不会有所涉及。这种教学安排的结果将自我探索与职业探索割裂开来,不利于学生深入地认识自我和了解职业。自我探索与职业探索在教学中出现“两张皮”的情况,根本原因依然在于课程的设计脱离了学生的实际经验。通常来讲,课程设计的理论取向包括基于学科知识体系的学术理性主义取向、基于学生兴趣与需求的人本主义取向,以及基于社会文化需求的社会重建主义取向等多种。现有生涯规划课程的设计,在自我探索与职业探索的模块,遵循的是知识体系的内在逻辑,以特质因素论和职业分类理论为主要的理论基础,根据这部分理论的内在逻辑来组织课堂材料,而忽视了理论与授课对象的经验和需求如何有机结合。
4.职业决策方面
现有课程的职业决策部分主要讲授一种或多种决策理论,在此基础上教会学生利用一种或多种决策方法进行职业决策,其中涉及的决策方法包括平衡单法、SWOT分析法等。这个过程遇到的最大困难在于如何帮助学生确定目标。因为任何决策都是针对目标而言的,没有目标而空谈决策,只能使学习停留在理论层面。然而,由于学生在自我探索和职业探索部分没能通过课程整合自身的经验,在此时要确定生涯目标就比较困难。大部分学生此时的状态是:对自身的生涯规划似乎“知道”了些什么,但到底这些“知道”是否正确,以及有了这些“知道”,生涯目标该如何确定,依然模糊。而要帮助学生确定目标,至少要在课程设计中回答以下几个重要问题:(1)要确定长远目标还是短期目标?如果是长远目标,到底以多长时间为限?(2)是要确定一个目标还是多个目标?如果是确定多个目标,如何厘清多个目标之间的关系?(3)确定的目标如何应对未来的不确定性?如果未来发生改变,是改变目标还是坚持目标?就目前生涯规划课程的设计和实施来看,以上问题都没有得到很好的解答。
二、高校生涯规划课程设计的解决思路
1.坚持课程形式的生涯教育
生涯教育的困难源于生涯规划具有高度的个性化特征,而课程教育采用的是一对多的基本模式(一个老师面对多个学生),因此必然带来难以满足全部个性化需求的问题。然而,在目前国内职业化的辅导人员缺乏,而大学生人数众多且普遍缺少相关生涯知识的情况下,课程教学无疑在降低成本、解决共性问题方面具有绝对的优势。同时,从国外经验来看,以课程的形式促进大学生生涯发展一直为发达国家众多生涯发展专家所重视。从国外课程实施效果来看,生涯规划课程可以促进大学生生涯意识的觉醒,有助于生涯探索和生涯管理能力的提高,帮助学生实现从学生到职场人的顺利转变。
2.梳理课程设计的理论基础
理论基础难以适应现代生涯发展的需求是现有生涯规划课程设计问题的最根本原因,因此,在对生涯规划课程进行重新设计时,首先需要重新梳理生涯规划理论。如前所述,现有生涯规划课程设计以学科知识的内在逻辑为理论取向,而人-职匹配理论因其简单的线性思维而脱离真实生涯发展的现实状况,所以寻找更适合的理论基础,综合学科知识体系、学生兴趣与需求以及社会文化需求的多种取向,是解决目前课程设计问题的当务之急。克朗伯兹汲取了班杜拉社会学习理论的精华,提出了生涯决定社会学习理论。这一理论植根于强化理论和古典行为主义,强调个人的学习经验、社会环境因素及偶然事件在生涯发展中的重要作用。20世纪90年代,在克朗伯兹理论的基础上,有专家提出了社会认知生涯理论,进一步将生涯决策的动态过程进行整合,系统性地思考了个人的遗传因素、社会因素、学习经验(特别是自我效能感)、结果预期和个人目标之间的互动关系。社会学习理论特别强调社会影响因素与学习经验,对环境因素的不确定性及生涯主体的自主性给予了极大的关注,恰好填补了人-职匹配理论的空白,因而更贴合真实生涯的现实状况,对生涯规划课程的设计更具启发性。
3.摆脱课程设计目标模式的束缚
课程设计模式大致有目标模式、过程模式和实践模式三种。现有生涯规划课程设计主要采取目标模式。目标模式课程设计的主要精神在于“目标取向”的理念,一切以课程目标作为选择活动、组织与时间安排等相关设计活动的指向,并据此进一步形成详细明确的目标,转化成学习经验,最后加以评鉴。目标模式的课程设计是一个单向的过程,单纯利用目标模式进行课程设计,会因为缺少反馈而难以及时发现课程实施中的问题。同时,因为课程组织均围绕目标展开,当课程目标设定有误或课程组织与课程目标存在脱节时,课程设计的整个环节将陷入无功而返的僵局。从目前高校开设的生涯规划课程来看,通过协助学生自我探索、生涯探索、拟订生涯规划和作出生涯决策以促进学生的生涯成熟和潜能开发,是被一致认可的目标。这与《要求》中设定的目标具有一致性。然而,具体到不同学校、不同专业的学生,“生涯成熟”、“潜能开发”到何程度?“自我探索”、“生涯探索”如何进行?“生涯规划”、“生涯决策”怎样操作?这些都是目标设定中需要回答的问题。同时,由问题分析我们可以看到,目前的生涯规划课程真正达到的目标是向学生传授了生涯规划的知识,而与设定的促进学生生涯成熟与潜能开发的目标存在着较为严重的脱节情况,即课程内容并没有到达预设的目标。显然,要弥补目标模式带来的课程设计问题,引入新的设计思路尤为必要。过程模式的课程设计强调的不是教育的内容,而是教育的方式和教育的过程,十分重视学习者的主动学习和教师的专业思考。实践模式的课程设计根源于文化分析,其基本假定是以个别的学校及其教师作为课程发展的焦点,即“学校本位课程发展”,被学者评价为促进学校真正改变的最有效的方式。强调教育方式和过程、开发学校本位甚至院系本位课程,应该成为生涯规划课程开发的可循之路。
4.强调学生经验的课程设计取向
学科知识体系的课程设计取向,最大的缺点是忽视学生的经验与兴趣,这在现有生涯规划课程中显现出的弊端尤为突出。从课程目标来看,生涯规划课程应该是一门既有知识的传授,也有技能的训练,还有态度、观念的培养的课程,是集理论、实务和经验为一体的综合课程。要真正实现目前课程的既定目标,必须增强课程内容的针对性与实效性,跳出课程内容仅仅局限于学科知识介绍的框框,加强对学生经验的研究与引导。据此,围绕生涯规划的核心,课程的内容组织要使用学生身边的材料,以贴近他们的生活;关注学生自身的经验,帮助他们对自身的经验进行梳理、整合,形成正确的自我认识;为学生创造机会,形成属于他们的有益于身心发展的新经验,拓展自我观察的视角。唯有如此,才能使课程从以教师教授为中心转变为以学生学习为中心,从而保证课程目标的实现。
5.加强课程评价的研究与实践
摘要:本文探讨了我院编译技术可扩展式课程设计改革中的编译技术与工程的关系、可扩展式课程设计改革指导思想与内容、实施方案和评价体系。
关键词:编译技术;可扩展式课程设计;软件工程
中图分类号:G642
文献标识码:A
编译技术是计算机及其相关专业一门重要的核心课程,是学习计算机软件的重要课程。从实际工作需要来看,仅靠教学计划安排的课内实验时间是不够的,课内的实验是侧重于对某一方面知识的学习,在解决实际问题时,可能涉及并运用多个方面的知识,具有较强的综合性,这就需要进行一些综合性的设计练习,来提高分析和解决实际应用问题的能力。为了帮助广大同学对编译过程有更好的掌握,提高运用编译技术和有关形式语言理论和方法解决实际问题的能力,需要对编译过程及涉及到的编译技术进行系统的实践训练。
编译技术课程设计的目的是进一步培养学生编译器设计的思想,加深对编译技术和应用程序的理解,针对编译过程的重点和难点内容进行编程,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。
1问题的提出
长期以来,许多学校在开设此课时,虽然开设了实验课及相应的课程设计,但只是对编译理论中的某些算法单纯地实现,缺少或根本没有实际背景,存在着以下问题:
(1) 在现行的教材中,大部分都是从编译技术本身的角度来思考的,为的只是让学生掌握编译的基本理论与思想,学生易感觉太抽象;
(2) 重理论轻实践,将语法技巧理论的讲解作为主要部分,与实际工程联系少,缺乏活力,学生易产生“学而无用”的思想;
(3) 与实际工程鸿沟大,学生易产生惧怕思想。
为了有效地解决这些问题,结合工程应用实际,我们提出了编译技术可扩展式课程设计的思路。
2编译技术与工程的关系
第一个编译程序的出现是在20世纪50年代早期,多数早期的编译工作是将算术公式翻译成机器代码,奠定了对高级语言编译系统的研究和开发的基础。20世纪50年代中期出现了FORTRAN等一批高级语言,相应的一批编译系统开发成功。随着编译技术的发展和社会对编译程序需求的不断增长,20世纪50年代末有人开始研究编译程序的自动生成工具,提出并研制编译程序的编译程序。它的功能是以任一语言的词法规则、语法规则和语义解释出发,自动产生该语言的编译程序。目前很多自动生成工具已广泛使用,如词法分析程序的生成系统LEX,语法分析程序的生成系统YACC等。20世纪60年代起,不断有人使用自展技术来构造编译程序。自展的主要特征是用被编译的语言来书写该语言自身的编译程序。1971年,PASCAL的编译程序用自展技术生成后,其影响就越来越大[1][2]。编译技术与工程的关系如表1所示。
表1编译技术与工程的关系
随着并行技术和并行语言的发展,处理并行语言的并行编译技术,将串行程序转换成并行程序的自动并行编译技术也正在深入研究之中。另外嵌入式应用迅速增长的需求,推动了交叉编译技术的发展,还有系统芯片设计方法和关键EDA技术的研究,也带动了专用语言VHDL等及其编译技术的不断深化。
3可扩展式课程设计改革指导思想与内容
编译技术课程设计教学是工程类本科教学中的重要环节,具有很强的综合性和实践性,组织实施好课程设计教学,已成为教学改革的重要课题之一。与一般本科院校相比,我们应当更加注重技术层面的提升,培养学生具有更强的技术操作水平和解决实际问题的能力;和高职高专相比,又应该有更宽、更深一些的专业理论基础,以培养有较强的创新能力和实践能力,能适应实际工作需要的高级应用型人才。因此编译技术课程设计教学应充分考虑到社会对人才的全方位要求以及为学生未来的可持续发展奠定良好的基础[3]。
课程设计改革的重要特征之一就是面向社会,面向市场,面向生产,编译技术课程设计要具有一定的实用性、可行性。编译技术课程设计题目的选择直接影响到学生完成的情况和教学效果,对提高学生的能力大有裨益。学生参与课程设计,首先就要开始参与课程设计的选题,以教师确定的指导为前提,强调学生在课程设计中的主体地位。让学生们明确自己是这个实践活动的主体,从领会课程设计的目的、任务,到理解课程设计的步骤、方法和注意事项,因此确定课程设计的题目必须让学生唱主角,消除学生们的依赖心理,发挥他们的主动性和创造性,学生通过查阅资料、调查等多途径接触社会实际提出题目,在教师的参与指导下结合课程理论进行可行性分析讨论,筛选出适合于课程设计的题目。这样的课题结合了社会实际,考虑到学生的实际能力,结合了编译技术课程理论,结合了学生的兴趣,学生的积极性在课程设计中将获得的充分的激发和保护,既不会因课题枯燥无味而淡漠,也不会因难度较大而畏缩不前。编译技术可扩展式课程设计改革内容如表2所示。
编译技术可扩展式课程设计的特点是以编译技术理论与编译实验为基础,结合实际工程和科研的需要,由学生提出合乎自己实际能力的课程设计的课题,并尽力发挥其创造力,向工程方向扩展。
4可扩展式课程设计施实方案
4.1设计内容具有开创性和实用性
就设计内容而言,让学生们感到既有一定的难度,又有相当的兴趣,许多学生都是积极主动地探讨解决问题的途径,从而打破了以往学生总是为最后的成绩而做实验的被动局面,具有十分重要的创新意义。在向学生布置任务时就有意识地将实际科研中需要完成的一些内容落实下去,使学生的工作成果得以充分的利用,就这一点来说,可以认为课程设计的内容具有较好的实用性。在时间上,依据可扩展式课程设计实际,专门时间为1个星期,之后根据设计扩展的情况,延长2~3个星期,甚至还可以之后扩展为毕业设计。
4.2设计小组采取优化组合的方法
在设计前,将全班学生按平时主干课程的成绩分为上中下三个等级,然后每一个小组中三个人刚好可以按不同等级各分配一人,以成绩较好的学生为小组组长,负责小组内的工作,小组中每个人都可以按自己的设计思想完成同一任务,在最后整体连接时,可选择各组中较好的程序。这样既保证了最后的程序质量,同时又使同学之间可以互相探讨,取长补短,效果较好。
4.3选用合适的激励机制
为把编译技术课程设计做好,我们选用了以下激励机制:其一是合理的成绩分布,让真正做出了东西的人得到较高的成绩;其二是引入竞赛机制,对优秀者进行奖励;其三是以适当的资金进行资助,以达到其实用的目的。
5可扩展式课程设计评价体系
编译技术可扩展式课程设计评价体系注重过程考核,通过过程的监控手段实现教学目标,原则上多种方式并举,如下所述。
5.1形成式考核
与传统考核模式的区别在于:形成式考核的过程贯穿于整个教学过程;考核的形式是多样化的;考核的内容除知识点外,还包含学生学习过程中的表现,学生完成课程任务过程中表现出来的分析与解决问题的能力等多方面,是对学生的全方位的考察,是一种更科学的评价体系。
5.2答辩形式进行考核
实践的目的是培养学生综合应用所学知识解决问题的能力,因此考核的重点应该放在对学生把握问题、分析问题以及解决问题等诸多方面的能力上面。实践证明,通过答辩能充分反映学生的全面素质,同时,通过答辩过程中学生对问题的回答,也能较为准确与全面地了解学生对知识点的掌握情况。
5.3软件系统评价方式进行考核
对于工程型课程,教学的目的是让学生最终能开发出一套能满足实际需要的、规范的软件系统,最好的考核方式就是评价学生所开发的软件系统。因为这类作品不是能在1~2小时内能完成的。这种考核方式可大大发挥学生的积极性和主动性。实践证明不少学生的软件系统几乎达到了实用产品的程度。我们要相信学生的创造力。
编译技术可扩展式课程设计结合以上几种方式对学生进行综合考核,从以知识考核为中心转向以能力考核为中心,以一纸报告为评价标准转变为以过程评价为标准。从整体设计结果来看,大部分学生的思维方式是多样化的,编程能力是可开发的,如果我们能充分调动他们的积极性,一定会使课程设计变得具有实际意义和可观的教学效果。
6结束语
通过编译技术课程设计的实践,我们总结出的经验是:编译技术课程设计要具有可扩展性,向工程方向扩展,要尽量鼓励学生勇于探索新思想,注重培养每个学生的理论联系实际的能力和独立工作的能力。经过教学实践证明,编译技术课程设计的改革是圆满成功的,是指导教师、实验室教师和学生共同努力的结果。只要认真研究,勇于创新,不断改进,就一定能够将编译技术课程的设计搞得更好。
参考文献
[1] 胡燕京,李彩霞,周子琛,罗海宁. 编译技术研究与逆向工程实践[J]. 现代电子技术,2007,(16):99-102.
[2] 张红霞,王宝库,陈郭成. 编译方法课程设计的改革实践[J]. 东北大学学报,2000,(2):117-118.
The Extensible Curriculum Design Reform for Compiler Technology
TANG Shi-xi
(YanCheng Normal UniversityInformation Science & Technology College, YanCheng, China)
关键词:课程建设;课程设计;计算机软件
作者简介:张艳(1976-),女,河南南阳人,上海理工大学光电信息与计算机工程学院,讲师。(上海 200093)
中图分类号:G642.0 文献标识码:A 文章编号:1007-0079(2013)05-0096-01
计算机是一门技术性、工程性和应用性很强的学科,教育部高等学校计算机科学与技术教学指导委员会的发展战略研究报告中也指出:计算机专业的人才应该被分为科学型、工程型、应用型三类,而绝大多数应该是工程型和应用型的。许多高校注重学生专业能力的培养,纷纷开设实践类课程以满足信息社会对实用型人才的需求。因此,如何建设实践类课程无疑是摆在每位一线专业教师面前的重要课题。本文以“应用软件课程设计”课程的建设为主要探讨对象,介绍了该课程的设置意义、教学方法和实施细则,希望能对计算机专业实践类课程的建设和教学以及学生的就业有所帮助。
一、课程设置的重要意义
在大学里,设置一门课程,不能只关注这门课程所含的内容,更要考虑本科教育培养学生基本专业能力、可持续发展能力等这些本质性的问题。计算机学科问题求解的基本思路是“问题形式化描述计算机化”,以抽象、理论、设计为其学科形态。按照计算机科学与技术专业本科生的培养目标,到学生毕业时应具备计算思维;算法设计与分析;程序设计与实现系统的认知、分析、开发与应用等四大基本能力。
“应用软件课程设计”课程面向大三的学生开设,在计算机科学与技术专业四年本科教学中,是以前期的“数据结构”、“计算方法”、“离散数学”、“软件系统”(包括编译原理,操作系统)、“软件工程”、“程序设计”、“数据库原理”以及“计算机网络与通信”等课程为基础的一门软件开发技术综合应用的专业课程。该课程让学生综合运用专业知识,通过动手实践,以团队协作的方式根据软件工程的原理选择难度适中的课题,完成网络环境下基于B/S架构的综合应用软件的系统设计与实现任务。课程设置的目的就是通过本课程的系统学习与实训,达到全面提升学生综合应用软件的实际开发能力和团队合作能力,以解决传统教学中理论学习与工程应用相脱节、单门课程孤立地学习与缺乏正确运用学科体系的理念来指导学生实现综合技术全面应用的突出问题,以期有效地实现计算机科学与技术专业本科学生的培养目标。
课程开设近10年的实践证明,学生综合运用计算机专业基础知识,科学设计、开发软件,合理进行软件开发的能力得到全方位的、实战型的锻炼,不仅实现了专业理论知识与实践有效地相互结合,而且很好地锻炼了学生的动手实践能力和团队协作能力,为日后的择业起到很好的铺垫作用。
二、“应用软件课程设计”的教学内容
“应用软件课程设计”主要以曹渠江教授编写的《综合运用软件设计》一书为教材,辅助以课程网站和网络上的各类学习资源,要求学生利用软件工程、面向对象程序设计的思想,根据课程项目任务和功能完成课题的需求分析;制定课程项目详细的时间进度规范;利用面向对象程序设计、计算机网络、数据库原理、多媒体技术等相关知识来进行数据库设计与开发;熟悉和掌握网络应用的开发环境,分析课题中技术难点并进行技术攻关;根据制定的时间进度计划和需求分析,进行网络环境下基于B/S架构的系统软件模块的编写、开发与整合;对整个项目所有模块进行代码集成测试、软件产品完善;最后提交课程设计个人报告、课程设计小组报告以及完整程序。整个课程总学时为64学时,主要以机房实践为主,通过演示软件、答辩的形式公开、公平地评定成绩。
三、应用软件课程设计的实施方法
1.本课程的实施原则
实践类课程不同于其他计算机专业课程,主要以实践为主,这就比较难控制进度和公正地评价学习成绩,因此笔者制定了如下实施原则:
由教师提供网上新闻管理系统、网上宠物商店、网上公文流转系统、药品管理系统、继续教育管理系统、网上用户投诉系统、在线同学录、企业仓库管理系统、班级相册管理系统、在线学籍管理系统、网上聊天室、客户关系管理系统等难度适中的十几个项目,对于每个项目都讲明设计要求和要求实现的基本功能;按照自愿原则,四到六个同学组成一个项目小组,推选出一位组长。对于没被组合的同学,由教师统一安排,每组配备一位有项目开发与项目管理经验的研究生为指导教师,负责学生的上机辅导、课外答疑、技术咨询与指导;每组由组长填报所有成员的个人信息,以便师生之间紧密联系;每组组长代表小组全体成员与指导教师商定每周一次的辅导、提问与答疑的时间,并互通联络信息;教师每周安排两次上机,每次4个学时。最初的3周(12学时)进行理论授课,主要讲课程基本要求和安排以及软件工程、软件开发工具和方法的基本知识;设立课程公共电子邮箱,上传所有课程资料、进度安排和学生要提交的各个阶段的文档模板,每位学生必须根据给定的工作模板与课程要求,在不同时间节点完成个人与小组的初期、中期、末期三个时期的阶段报告和最终的课程设计报告;最后进行大组公开演示和答辩,全体指导教师根据答辩情况、提交的报告质量、平时上机表现与平时的检查情况集体打分,综合评定出每位学生的最终成绩。
2.本课程的教学安排
整个课程在实际教学过程中,按照16周的总体时间共分为以下5个阶段。
(1)课程设计第一阶段(3周):认真学习教材和阅读课题任务说明书,根据软件工程的理论和选定项目任务完成课题的需求分析;制定本课题的实施方案,完成个人角色任务分配等各类文档和开发规范;确定课题技术难点及其攻关措施;熟悉和掌握.NET的开发环境、后台数据库开发工具以及与课题相关的开发工具。在本阶段结束时,向指导教师提交课程设计个人及小组的初期报告。
(2)课程设计第二阶段(4周):根据制定的时间进度计划和需求分析,进行系统数据库的实现及应用软件的初步模块编写与开发。在本阶段结束时,向指导教师提交课程设计个人与小组的中期报告以及个人阶段性开发的程序源码。
(3)课程设计第三阶段(4周):本阶段是项目开发的实质性阶段,对整个项目所有模块进行开发并进行代码集成测试、完善整个软件产品。在本阶段结束时,向指导教师提交课程设计末期的个人和小组的报告。
(4)课程设计第四阶段(3周):完成全部代码的开发工作,检查并汇总本课题小组成果,课题小组完成项目开发总结报告,个人完成各自的课程设计个人报告。在本阶段结束时,向指导教师提交课程设计个人与小组的报告以及小组的完整的、可供运行的代码文档。
(5)最后是课程设计综合评价阶段(2周):对本课题设计项目综合评价,最后进行大组公开演示和答辩,检查程序运行效果;全体指导教师根据答辩情况、提交的报告质量与平时的上机情况集体打分,综合评定出每位学生的最终成绩,力求公平、公正。
另外,在课程结束后会召开师生座谈会,集中讲评、总结课程的教学、学习情况,征求学生对课程和教学方面的建议和意见,同时给学生指出专业学习的努力方向,学生给教师提出今后课程需改进的地方,使教与学相互促进从而不断完善该课程。
四、结论
“应用软件课程设计”在上海理工大学已经开设10年,是上海理工大学精品课程与上海市教委重点课程建设项目,它很好地体现了计算机专业课程的系统性、完整性、科学性和原理性,有效锻炼了学生的动手实践、软件开发和团队协作能力,对提高学生的专业能力和专业素质起到了关键作用。任课教师在教学实践中付出了很大的努力,不断完善课程的教学模式和评价手段,积累了大量经验,该课程多次受到学生的好评,很多已就业的学生反馈的信息表明:该课程对学生专业素养的培养和从学校到职场的衔接起到了很好的作用,为计算机专业的实践教学探索出一条切实可行的道路。
参考文献:
关键词:计算机专业 程序设计 课程群
中图分类号:TP3 文献标识码:A 文章编号:1672-3791(2013)06(a)-0163-02
1 程序设计课程群中存在的问题
1.1 现有情况
目前大多数高校针对计算机开设的以C语言为基础的程序设计类课程有:C/C++语言程序设计、数据结构、面向对象程序设计等。不少高校采用以课堂教学为主,实验教学为辅,再配合课程设计的教学模式。分析程序设计课程群的教学现状,可以发现在程序设计课程群中主要存在以下几个问题(图1)。
1.1.1 规程程序化
课程定位和课程目标不够明确。旧的人才培养模式对应用型人才培养模式仍然有一定的影响,程序设计类课程教学大纲不能满足应用型人才培养的目标。课程定位和目标中未能明确规定课程教学要达到的效果。在课程教学和人才培养目标关系的认识上存在偏差。
1.1.2 课程体系松散缺乏连贯
程序设计类的课程在知识结构和教学结构上缺乏一条明确的主线,结构松散,不能前后连贯。教师教授各自为战,没有形成很好的向上递进关系,造成学一门是一门,到处是树叶,而形不成树枝和树干。
1.1.3 教学内容抽象难懂,教学方法单一
程序设计语言的教学以语法教学为主线,很多情况下采用了在课堂中讲语法、上机调程序的教学模式。课堂举例往往针对语言的某个概念进行简单编码,即对实际程序设计过程进行了简化,忽略了问题分析、算法设计和程序测试与调试等重要过程。在程序设计教学中少有贯穿软件工程的思想,难以做到重点介绍解决问题的方法和思路,把重点放在问题分析与算法设计上。因此,目前在教学中普遍存在着一种现象:学生上课能听懂,但害怕写程序,碰到实际问题时无从下手。往往是经过一个学期的学习,还是不会编写程序,反映了程序设计能力的不足,当然更谈不上实际的应用开发了。
1.1.4 课程的实践效果不理想
对课程实践重要性的重视依然不够,实际知识运用的训练较少,实践学时不足,学生没有足够的时间进行训练,同时,上机内容多是验证性的,不能有效调动学生的积极性和创造性。
1.1.5 考核方式过于单一
课程考核方式仍然采用笔试方式,许多考试的笔试基本上是考语法,为了提高应试能力,导致程序设计的教学把注意力放到了语法的细节上,忽视了学生的实际程序设计能力的培养,有部分课程虽然初步探索采用上机考核,而考核内容局容局限于课本知识,未能考核学生编程能力和综合实践能力。
鉴于上述问题,有必要改革现有程序设计课程的教学内容和教学模式,为培养学生的程序设计能力、应用开发能力探索出切实可行的思路和办法。
2 程序设计课程群建设与研究的内容:
2.1 现有情况
从教学研究和改革角度讲,程序设计课程并不是孤立的“某门”课程,而是一个整体。这个整体既包括单一程序设计语言的个性,也包括程序设计方法和语言特征的共性,所以,宜将不同程序设计语言课程组成课程群进行研究,合理地将相关语言工具统一起来,形成一个相对完善的课程体系。程序设计课程群建设与研究的内容有以下几点。
第一,研究课程群中各门课程的科学设置以及研究课程群中各门课程的内涵与外延。程序设计系列课程旨在培养学生面向对象程序设计的“抽象”和“设计”能力,积累丰富的编程经验,熟悉相关编程语言、工具和平台,做到基本功扎实,实践能力强,触类旁通,善于综合运用所学的知识积极主动解决问题。以“C语言程序设计”和“C语言课程设计”为公共基础的程序逻辑训练;以“数据结构”为核心的程序设计方法培养与程序抽象能力培养;以“C++程序设计”贯穿面向对象程序设计新理念;并在此基础上开设“Windows程序设计”“Java程序设计”“.Net程序设计”“嵌入式程序设计”“计算机图形学”和“三维建模”等选修课程。
第二,从教与学的两个角度,研究从C语言结构化程序设计到VC++面向对象程序设计的思想和方法的转化与衔接,这种转化与衔接的难度、焦点以及降低这种转化与衔接难度的措施与方法。研究程序设计课程群中各门课程的教学手段和教学方法,做到理论课与上机实践课并重、教师指导与学生独立实践同步,并且以学生独立实践为主的教学方法。采取“时间集中、人员集中、小班指导、项目趋动”的方式进行课程设计,修订、完善课程设计要求。
第三,研究程序设计课程群中各门课程的考试内容和考试方法。
第四,研究程序设计课程群的教师队伍的建设与培养。
第五,不断跟踪研究程序设计课程群的教学与软件产业人才市场的需求关系。
第六,如何借助“挑战杯”“全国信息技术大赛”“蓝桥杯”“ACM程序设计大赛”等平台培养学生创新能力。这些大赛均是有影响力的大赛,竞赛题目大多是实际工程应用中遇到的问题,将大赛的一些基础实验和算法设计实验题目改编成适合学生使用的题目,学生可以通过这些平台来学习和分析问题,然后再进行设计。通过这个过程不仅学生可以提高自己的学习能力,教师也可以即时掌握学生对课堂知识的理解和掌握程度。
3 程序设计课程群建设与研究的方法
课程群建设是专业建设的一部分,计算机专业人才培养方案应瞄准专业定位,与行业现状和发展相适应,才能明确知识点、课程和课程群的具体内容。同时,课程群建设应当注重课程的知识重组、知识融合,是对单独课程的教学大纲、实验大纲等教学内容的重新设计。从计算机应用软件人员的基本知识结构要求出发,本文提出的程序设计课程群应当以“程序设计”为核心,注重实践与方法,走“实践—抽象—设计—再实践”的路子,尊重客观的学习规律,注重学习兴趣的培养,在不断实践的过程中体会程序设计的方法,加深对程序设计理论的理解。本文提出建设课程群的方法如下。
第一,从现有的人才培养方案(教学计划)来研究课程群中各门课程的科学设置。现有的课程科目包括“高级语言程序设计”、“数据结构”、算法设计与分析、“面向对象的程序设计”、实用软件开发工具(如“Visual Basic”、.NET)等。以此为基础,达到“点—线—面—体,即主要知识点—主干课(线)—课程群(面)—课程群体系的课程群构建思路和构建框架进行研究,达到目标明确、层次分明、定位正确、强化基础、拓宽专业知识面的应用型人才培养的要求。第二,教师授课“一条龙”的教学方法研究。如研究“高级语言程序设计”(一般语言为C语言),再到“数据结构”“算法设计与分析”“面向对象的程序设计”(目前我们学院以C++为主,在2011届学生中增加了VC++),一直到“实用软件开发工具”的教学模式,通过这种“一条龙”的教学方法和教学实践来研究从c语言结构化程序设计到VC++面向对象程序设计的转化与衔接。第三,改变教学方法,进行项目驱动式教学,培养学生程序设计思维。要达到程序设计能力的培养目标,必须改变传统的教学方法,不能采用满堂灌和老师教学生学的模式.需要培养学生的编程思想和自主创新能力,培养学生的编程技巧。教师在教学过程中坚持强化学生的抽象思维能力和设计(动手)能力的培养,从教学过程的一点一滴人手,逐步引导学生建立创造性学习和创造性工作的意识,以达到培养创新人才的目的。第四,采用课程实验、课程设计、综合毕业设计(生产实习)相结合的实验模式,强化学生动手能力、程序设计兴趣与能力的培养。特别是毕业设计能以项目开发带动实践,从实战的角度进行真正的编程训练。课程设计采取“时间集中、人员集中、小班指导、项目趋动”的方式进行强化培训,在教师指导下,学生独立或分组完成应用项目的设计与编程。课程设计的指导教师采取逐年更新、滚动发展的方式更新各课程设计的文档(课程设计任务书),与时俱进,以IT行业软件开发需求为导向,改进课程设计的内容与指导方式。第五,研究理论考试和上机实践考试的成绩比例关系(目前我们学校采用的理论70%和实践30%的比例关系),改变传统的考试模式,采用上机考核方式(上机考试系统正在实施过程中)。传统的笔试考试,不能体现学生的编程能力。第六,通过与软件公司等软件企业相结合,以走出去、请进来的方式不断跟踪研究程序设计课程群的教学与软件产业人才市场的需求关系。同时借助“挑战杯”“全国信息技术大赛”“蓝桥杯”“ACM程序设计大赛”等平台培养学生创新能力。
4 结语
软件开发与设计是现代计算机技术中非常重要的应用领域。程序设计课程群的培养目标是培养高水平的软件设计开发人才,培养学生的程序设计能力和编码能力。我们分析了程序设计课程群的教学现状,指出了程序设计课程群在教学过程中存在的问题。通过问题分析及教学过程的经验总结,给出了程序设计课程群建设与研究的基本思路:明确培养目标,并将目标细化至课程章节;采用项目驱动为主的教学模式。辅以各种先进教学手段,培养学生程序设计能力;加强实践教学过程,培养学生的实际动手能力;加强教材建设,编写适于学生实际情况的项目驱动模式的教材;加强师资培养,提高教师的程序设计能力和教学能力;改革传统考试方式为上机考核。
参考文献
[1] 徐克奇.程序设计实践与分析课程建设的改革与探索[J].计算机教育,2009,6:63-66.
[2] 马伟锋,雷运发,孙晓勇.应用型软件人才培养方案的关键问题研究[J].浙江科技学院学报,2009(21):69-71.