时间:2022-11-15 19:58:59
开篇:写作不仅是一种记录,更是一种创造,它让我们能够捕捉那些稍纵即逝的灵感,将它们永久地定格在纸上。下面是小编精心整理的12篇软件工程课程设计总结,希望这些内容能成为您创作过程中的良师益友,陪伴您不断探索和进步。
关键词:软件工程 教学改革
“软件工程”是一门理论与实践并重的基础课程,在教学实施方面存在较大的难度。现有的软件工程课程存在着体系不统一、定位不明确、知识与现实脱离等问题,课程内容比较庞杂和抽象,教学实践环节薄弱。因此,如何使教学内容先进、讲授生动实际、实践效果良好,一直是软件工程课程教学需要解决的难点问题。
1.软件工程课程教学改革现状
普通高校传统的实验教学过于强调理论知识的积累,这限制了学生个性的发展、技能的培养和创新素质的形成。其课程设置与实践教学内容都严重滞后,实践教学学时占总学时也很少;在实践教学内容方面对理论内容进行验证的实践教学环节占较大比例,而有利于培养应用能力的综合性、设计性实验等实践性教学比例偏少;在实践教学安排上仍采取先理论,后实践的顺序来确定实践教学环节。特别是对实践教学内容、方法及过程与创新性应用型软件人才的培养目标是否相适应等问题的研究还相当不够。具体体现在:
(1)实践教学体系设置不够完善,缺乏对实践教学的过程管理,没有建立配套的质量监控与评价体系。
(2)对实践教学的认识不到位,存在着重理论,轻实践;重课内,轻课外的倾向,缺乏对实践教学内容的总体设计,实践教学的内容及形式陈旧。
(3)实践教学教学方法单一,仍旧采用以教师为主以灌输为主的教学方法,使学生的主观能动性、动手能力和创新精神的培养受到了很大的限制。
(4)不重视工程化思想的培养,普遍缺少对学生工程能力和职业素质的训练,没有很好利用先进的实践教学管理平台跟踪管理学生实践项目。
(5)实验设备和计算机专业教师严重不足,目前的实验室设备与管理模式已很难满足实践教学的要求,缺乏具备行业工程领域背景和国际化背景的高水平创新实践教学团队。
2.改革教学方式
在计算机科学与技术专业的四个专业方向中“软件工程”课程都是重要的专业必修课,该课程的教学效果直接影响到专业的发展,因此有必要从课堂教学、实验教学、实践教学这三个环节入手探索“软件工程”课程的一种新的教学模式。
2.1案例辅助教学
“软件工程”课程主要内容涉及指导软件开发的原理、方法、工具。若脱离了软件开发实践,这些原理、方法、工具会变得枯燥、难懂。在“软件工程”课程教学中引入案例辅助教学能有效地提高教学质量。课程中的每个重要知识点都应配备若干相关案例。在整个课程的教学中应有1到2个贯穿始终的综合案例。综合案例应为一个较为实际的软件系统的开发过程,包括问题定义、可行性研究、需求分析、总体设计、详细设计、编码、测试。综合案例中应包含各开发阶段中涉及的任务、技术、方法及工具。学生应在课余时间认真阅读案例,并进行分析,老师同步在课堂上讲授案例,然后学生在实验课中,按照案例中的步骤重视案例中的系统开发过程,最后总结归纳。
2.2实训式实验
实训式实验是通过实例演示及模拟、课堂练习、课后作业这三个环节使学生通过实验训练很好地掌握相关技术及方法。实训式实验包含如下三个环节:
(1)实例演示及模拟
每个实验,教师应先讲解实验步骤及要求。之后教师讲解并演示一个案例,在此过程中学生同步模拟每个实验步骤。教师做一步,学生跟一步,若有学生出现问题,教师及实验员应及时辅导使其能跟上大家的进度。
(2)课堂练习
案例讲解演示之后,教师应布置1到2个类似练习题学生参照前面所讲解的案例,按步骤完成这些练习。学生练习过程中教师应全程指导,实验课结束时学生应将实验结果以电子邮件形式发给教师,并书写实验报告。
(3)课后作业
实验课结束时,教师应布置一个相关作业,学生在课下参照教师讲解的实例及课堂练习完成作业,以巩固相关知识。
2.3综合实践
“软件工程”课程的教学中应注重综合实践环节的建设。综合实践环节包括以下三个方面:
(1)“软件工程”课程设计
“软件工程”课程应设置两周左右的课程设计。课程设计的目标是让学生体验软件开发的全过程,且学会与他人合作,培养团队精神。课程设计过程中,学生分成若干小组,每个小组选择一个项目,该项目的规模应与课程综合案例的规模类似。每个小组应完成项目的问题定义、可行性研究、需求分析、总体设计、详细设计这些阶段。各个小组由组长负责组织、分工、控制进度等,对小组成员的最终课程设计成绩有一定的分数浮动调整权;组长带领全组顺利完成任务,总评可加一定分数。小组完成项目之后,应提交项目开发各阶段文档及课程设计报告。
(2)与其它课程的课程设计相结合
计算机专业的很多课程(如数据库原理、信息系统开发、数据结构、C语言等)的课程设计都与软件开发相关,可将这些课程的课程设计作为“软件工程”课程的辅助课程设计。在这些相关课程的课程设计中,可通过恰当地选择设计题目,将软件工程的原理、方法、工具应用于这些课程设计中,使学生体会到软件工程方法与各种软件开发的关系。
(3)与毕业设计相结合
计算机专业的毕业设计主要是进行实际的软件开发。目前毕业设计中学生一般面临全新的题目,设计过程中学生既要分析研究系统又要熟悉开发工具,这样很多学生会觉得头绪太多,忙不过来,最终不能完成一个理想的系统。鉴于此可将毕业设计作为“软件工程”课程设计的延续,延用课程设计中的分组,每个小组延用课程设计中的题目。由于课程设计时间较短,课程设计时各小组只进行了粗略并且简化的项目开发,在毕业设计的半年中,各小组可在课程设计的基础上进一步完善扩充已有成果,按照软件工程的步骤最终得到比较理想的系统。
参考文献:
关键词: 软件工程课程教学 问题 对策
一、引言
软件工程是建立在计算机科学基础上、指导计算机软件开发和维护的工程学科。本课程已成为计算机及信息学科相关专业最重要的专业基础课之一,在计算机科学专业和软件工程专业的人才培养上发挥着非常重要的作用。
软件工程是一门研究研究软件开发与维护的普遍原理和技术的工程学科,其研究的范围非常广泛,包括技术方法、工具和管理的等多个方面,软件项目的过程、组织和管理涉及面广,理论性、技术性、工程性都很强。软件工程自身的抽象性与应用性都很强,在目前教与学的双向过程中存在不少问题,致使教学效果很不理想。如何提高“软件工程”的教学水平和学生的学习效果,是国内外学者广泛探讨的话题。我从软件工程教学中存在的问题出发,在更新教学内容、激发学生的学习兴趣、改进教学方法与手段、加强实践环节、改革考试方式等方面提出了一些具体的建议。
二、目前教学中存在的问题
1.教学内容陈旧。
近年来,软件工程中的WEB应用开发技术、软件重用技术、原型开发方法、软件构件、集成化CASE工具与环境等领域取得了显著的进展,而国内各高校使用的教材,因编写时间的限制,在先进技术的跟进、知识结构、内容取材及实践环节等方面或多或少存在缺陷,有的甚至还停留在对面向过程的结构化方法上,却忽略了目前更适用更流行的面向对象方法,有的教材连项目组织、软件成熟度、软件构架、项目风险等十分重要的内容都未给予足够的论述。同时,软件工程作为一门正在飞速发展的学科,目前大部分教材难以及时、全面、准确地反映当前一些新方法新技术和新工具。
2.教学方法不当。
目前有些高校仍然把软件工程列为纯理论课程,教学的工具就是一张嘴、一支粉笔和几乎是教课书内容翻版的教学课件,使得学生往往是被动地接受知识,非常地枯燥乏味,很难激发学习兴趣。另外软件工程课程的教学内容是针对较大规模的软件项目开发而设计的,十分庞杂,涉及面非常广,很多知识建立在实践经验基础之上,这种“填鸭式”的教学方法,对于尚未踏入社会、没有项目经验的学生而言,很难理解该课程的精髓,很容易对该课程产生虚无缥缈的感觉,使整个教学过程流于形式,该课程变成需要死记硬背的课程,学生在学习完课程后将一无所获。
3.学生学习中存在的问题。
在传统的教学过程中,软件工程往往是一门独立的理论性课,学生对软件工程的抽象理论容易感到枯燥乏味。这门课不涉及具体软件项目,不怎么涉及软件算法,没什么逻辑推理,不像程序设计课程那样能带给学生智力上的,激发学生的学习兴趣和热情。不少学生认为软件工程就是一些条条框框,由于缺乏实践经验,缺乏合作开发软件的感性体会,他们在学习过程中难以理解软件工程的精髓,很难在头脑中将软件工程的抽象理论和实际联系起来,因此较难对这门课程产生学习兴趣。
4.教学实践环节薄弱。
软件工程的理论并不是空洞的理论,它的许多理论及规范均来自于实际需要和前人的经验总结,它的目标是实实在在地做出一个满足用户要求的系统出来,这是一个很具体的实践过程。通过学习,学生应该具备从事工程实践的技能,包括软件项目的系统分析、编写文档、源码设计与控制、使用工具等基本技能。因此,教师需要将基本概念、原理和实现技术与具体的软件项目相结合,以实例增进学生理解,以实践锻炼学生的工程能力。然而,在当前的教学中,普遍存在理论教学与具体实践脱节的现象,有时甚至缺乏进行教学实践的场所与环境,这样势必造成学生无法真正理解软件工程的精髓,更难以做到学以致用。
三、软件工程教学改革建议
以上分析了当前软件工程课程在教学中存在的一些问题。随着教学改革的不断深入,软件工程的教学改革在迫在眉睫。下面我就软件工程课程的教学改革谈一些建议。
1.更新教学内容。
在教学实践中,应该结合软件工程的发展和国内外软件企业的人才需求现状,不断更新教学内容,更要注重一些新方法新技术的讲授。例如,关于软件工程方法学,重点讲授面向对象方法学,略讲传统的结构化方法,注重面向对象方法在内的一些新方法新技术,让学生尽快熟悉和掌握软件重用、快速原型、集成化CASE环境等,同时要保持教学内容对先进技术的跟进,介绍一些目前已经推出或比较成熟的新方法,如:基于组件的方法、面向Agent方法、敏捷软件方法等。而对一些没有长久生命力的,并且在今后的项目实践中又很少用到的知识,尽量少讲,这样既有助于开拓学生的视野和培养创新意识与开发能力,又能使他们步入工作岗位的时候而不落伍。
2.提高学生的学习兴趣。
“兴趣是最好的老师”,是学生求知欲的源泉,是思维发展的动力。教师应从教材实际出发,讲究教学方法,激发出学生对本课程的学习兴趣,这对于教学效果的保障具有重要的意义。“软件工程”包含了较多的理论内容,且大多数学生都是第一次接触,是一门理论联系实际的综合性很强的课程。所以教师应通过多媒体动画等教学手段生动地剖析基本概念和基本原理,并以基本概念和基本原理贯穿软件工程知识体系的方式组织教学内容,让学生深入理解基本概念和基本原理背后的深刻内涵,并让学生系统地掌握各知识点之间的逻辑关系。要鼓励学生主动地提出问题、分析问题、解决问题,激发学生的主动学习兴趣。
课堂讨论也是一个提高学生学习兴趣的有效途径。教师在每堂课讲完之后应该给学生留出5分钟时间,要求学生通过讨论对所学知识进行总结归纳,然后进行评价。评价方式可以是学生相互交换自己总结的内容并进行讨论,最后由教师补充、纠正和提炼知识点。这种方法不仅能提高学生总结归纳能力,而且能激发出学生的学习兴趣,使学生主动地参与到教学当中。
3.加强实践和工程训练,提高学生的实践能力。
软件工程是一门实践性很强的课程,实践环节能使学生对整门课程中的方法、技术、工具等有亲身的体验和系统理论知识的梳理,对整个教学质量的检验具有举足轻重的作用。抓好实践环节,对培养新型的合格的软件人才具有十分重要的意义。因此在努力提高课程教学质量的同时,还应该加强实践环节的管理。
软件工程的实践以课程设计为主,教师可根据学生的能力,设计一套完整的课程设计方案。课程设计的目标是通过在课程实践的一系列环节中,如需求分析、设计、编码和测试,让学生提高其综合运用软件工程的方法、技术、工具、过程进行软件开发和软件项目管理的能力,并培养其团队协作的精神。
课程设计要求完成的项目必须具有一定的规模和复杂性,教师可将学生划分为6―8人的项目小组,项目组成员相互合作共同来完成一个项目。各项目小组应严格按软件工程各阶段的要求来完成该项目,在项目开发的各关键阶段(可行性研究、需求分析、总体设计、详细设计、测试和项目开发总结),各小组都要进行报告,由老师和其他小组现场提问,最后教师给出点评,这种阶段评审有利于各小组开发进度和质量的保障。
在课程设计结束时,每个项目组应提交软件产品和规范的软件开发文档(项目开发计划、需求说明书、总体设计说明书、详细设计说明书、测试分析报告和项目开发总结报告等)。课程设计完成后必须进行现场答辩,在答辩过程中,不仅对学生进行评分,而且指出学生的不足,提出改进的意见和建议。通过现场答辩的方式可以让学生进一步明确今后需要改进的方向,使自身在分析问题、解决问题、交流沟通、团队协作、谈判沟通、适应发展等方面的能力获得较大的提高。
4.教学方式与教学手段的改革。
软件工程的原理、方法、技术若不与实际项目结合,学生往往难以有深刻的体会。因此,为增强授课效果,提高学生学习的积极性,课堂讲授应引入项目式教学法。教师可设计一个完整的、规模适中、难易适度的软件项目,在讲授软件工程基本知识点时结合该项目进行重点讲解,即以该项目作为贯穿整个软件工程授课的主线。
为了提高课程教学质量,激发学生的学习兴趣,不仅可以采用多媒体教学方式,而且可以建立软件工程课程的教学网站。软件工程课程网站中不仅有该课程的介绍,而且有大量的教学资源(多媒体课件、实验指导、自测题、试卷库、常用软件工程新技术介绍、新工具介绍和演示、有价值的参考书籍和网址等),学生还可在网站上提出自己在学习过程中遇到问题或者对本课程的教学好的建议,教师或其他学生则可进行回答或共同探讨,为广大师生学习、交流、提高提供很好的途径。
5.考核方式的改革
很多高校软件工程课程传统的考核方式以期末书面理论考试为主,但软件工程是一门实践性非常强的课程,原有的考核方式使学生不注重实践能力的提高,倾向于被动地接受理论知识,学习缺乏兴趣和主动性,只是在考试前突击复习来应付考试。理论考试成绩不是重点,主要是看学生能否在软件开发过程中贯彻软件工程学的思想和方法。因此,要加大实践考核的比重,如课堂出勤占10%;课堂表现占10%,为力避学生考前突击现象,本课程在平时课堂教学中采取课堂提问方式或者进行一些基础理论的测验,帮助学生循序渐进地巩固基础知识点;课程设计占40%;期末考试占40%。采用以上考评方法,学生们将非常重视课堂上的发言,以及知识的运用和创新,主动学习的积极性将会大大地提高。
总而言之,要改进软件工程的课程教学,除了要遵循教育学的普遍规律、合理安排好课程内容外,还要培养学生的学习兴趣,重视理论与实践的结合。
参考文献:
[1]张海藩.软件工程导论(第五版)[M].北京:清华大学出版社,2008.
[2]曹薇.高职院校软件工程课程改革探析[J].高教论坛,2008,(02).
[3]陈丽萍,张芳.软件工程教学方法探讨[J].教学园地,2009.3.
浙江大学计算机学院在专业课程中实施课程设计(project)已有10多年的历史,积累了丰富的经验和资料。为全面总结专业课程设计的建设经验,推广建设成果,学院特别组织相关课程的骨干任课教师编写了一部以课程设计内容为主的“高等院校计算机专业课程综合实验系列规划教材”,并于2007年下半年起由浙江大学出版社陆续出版。
该系列教材的作者不仅具有丰富的教学经验,也具有丰富的科研经验,是浙江大学计算机科学与技术学院和软件学院的教学核心力量。这支队伍目前已经获得了四门国家精品课程(C语言程序设计基础及实验、操作系统、嵌入式系统、计算机辅助工业设计)以及六门省部级精品课程,出版了几十部教材。该系列教材涵盖了计算机和软件专业绝大部分专业必修课程和部分选修课程,是一部比较完整的专业课程设计系列教材,也是国内首部由研究型大学计算机学科独立组织编写的专业课程设计系列教材。
系列教材由《C程序设计基础课程设计》、《软件工程课程设计》、《数据结构课程设计》、《数值分析课程设计》、《编译原理课程设计》、《逻辑与计算机设计基础实验教程与课程设计》、《操作系统课程设计》、《数据库课程设计》、《Java程序设计课程设计》、《面向对象程序设计课程设计》、《计算机组成课程设计》、《计算机体系结构课程设计》、《计算机图形学课程设计》等十三门课程的综合实验教材所组成。
下面举例介绍其中几本教材的主要内容及特点。
《C程序设计基础课程设计》:在分析C语言高级编程技术的基础上,通过对“通讯录”、“计算器”、“俄罗斯方块”等3个完整案例的解析,指导读者按照软件工程的生命周期开发过程,从问题分析、设计、编码到测试,循序渐进地完成大型程序的开发。教材还提供了9个大型程序训练的题目及简要分析,供读者练习。本教材还针对教学需要,提供了可参考的实施过程说明、开发文档模版、考核方法和评价标准,特别强调学生团队合作精神的培养。
《数据结构课程设计》:针对堆栈、树、图、排序、哈希查找、算法设计等方面的内容提供了8个课程设计案例,分别从基本知识回顾、设计题目、设计分析、设计实现、测试方法、评分要点等几个方面进行分析。教材还提供了8个课程设计习题,并对实现要点进行了简要的分析。
《计算机组成课程设计》:要求实验者用硬件描述语言(Verilog HDL)设计单元电路、功能部件和指令条数有限而功能较齐全的单时与多时钟CPU。在计算机功能单元仿真模拟正确后, 实验者能把自己设计的结果写入到Spartan-3 Starter Kit Board开发板的FPGA可编程芯片上, 并能直接实验自己的设计(芯片)是否达到预期目标。实验设计由浅入深, 内容丰富。
《数据库课程设计》:以图书管理系统的开发为例,从需求分析开始,到数据库设计、数据库应用和应用开发等过程。其中应用开发的环境和工具包括MySQL数据库和ODBC接口技术,以及SQL Server和JDBC等。本书侧重于介绍“怎么做”和做的过程,而非原理性和全面性的阐述。
《软件工程课程设计》:主要围绕软件工程的基本知识点,通过详细分析一套典型的实际案例――银行系统的开发,指导学生应用软件工程生命周期的理论以及使用相应工具完成实际项目的开发。同时提供了一系列练习项目,供者进一步练习。
《编译原理课程设计》:主要围绕设计、实现一个简单的程序设计语言SPL(Simple Pascal Language)及其编译器;涵盖了编译原理的词法分析、语法分析、中间代码生成、代码优化和目标代码生成等各阶段的内容。通过对该语言编译器的分析,使学生们对编译原理有一个形象、直观和透彻的认识和感受,以便更深入了解和掌握编译原理的内容和实现方法,进而提高分析问题与解决问题的能力。
关键词:高校教学;计算机软件工程;课程改革
1前言
我国的各大高校开设计算机这一学科,主要目的就是为社会培养能够熟练应用计算机的专项人才.在高校的学习过程中,学生能够掌握理论知识以及一些基本的技能.而计算机专业必学的软件工程这门课程,能够拓宽学生的视野,帮助学生从多角度思考问题,因为这门课程的综合性很强.但是随着时代的进步,课程教学却没有与时俱进,这难免会影响学生的学习,所以为了给社会培养更多专业人才,应该与时俱进改革计算机课程.接下来先阐述软件工程的含义及特点.
2软件工程的含义及特点
2.1软件工程含义
SE是软件工程的简称,软件工程这门学科主要研究的就是如何用工程化的办法来搭建或者运营维护高质量的软件的.软件工程这门课程涉及到了很多方面,比如:数据库、设计语言模式等;而且在当下该种软件运用在很多地方,即我们日常用的电子邮件、经常玩的游戏等都用到了该种软件,另外在工作中常常也会用到该软件.对于此软件的合理运用,不仅能够提高工作效率,还能间接的提高工作的质量.所以在大学计算机专业中设置软件工程这一课程是至关重要的.
2.2软件工程特点
软件工程这门课程自身具备很多的特点,而比较突出的有三个:①比较抽象,之所以说具有抽象性,是因为软件工程这门学科所讲授的原理技术等都必须置于具体的工程项目上,并没有披露单个项目的一些信息资源,所以说是抽象的.另外在校学生的知识水平并没有达到学习软件工程理论的高度,或者说两者间存在很大的间隙.而会出现这种情况,是因为要想学好软件工程这门课程,那么必须投入实践投入到工作项目中,在做项目的过程中理解软件工程的原理,只有这样学到的知识才会更加印象深刻.②总结前期工程项目.软件工程非常擅于总结,而总结的内容是前期大型软件开发成功或者失败的例子,对于成功的例子,罗列出好的地方并证明实践的过程;而对于失败的例子,则找出错误点,警醒后来的研究者.另外,软件工程常常指导大型的且相对比较复杂的软件,这样容易发挥其价值展现其功能,而对于小型的项目进行指导不易发挥其意义.③能够展现软件开发的整个过程.众所周知软件的生命周期包含很多阶段,比如:对于问题的定义、进行可行性研究、对需求进行分析、设计、维护等.但是每个阶段的成果并不会立竿见影的影响工程项目也不会在本阶段体现,所以要想把软件工程的技术方法原理等熟练的运用到实际工作过程中,那么必须要进行深度学习,透彻了解每个阶段的特点,并将每个阶段联系起来.以上就是软件工程的含义及特点.
3软件工程课程教学改革策略
3.1着手营造良好的学习环境
软件工程这门学科涉及的学科领域比较广泛,而且知识体系也比较错综复杂,再加上计算机这门学科更新的速度飞速,所以说要想在短暂的课堂上对其进行全面讲述,相对来说比较困难.而要想改善这一情况,那么学生就应该具有主动学习的意识,应该意识到自身是认知的主体,要积极主动地去探索学习,进而拓展知识层面;此时的老师要充当指导者的角色,并要努力为学生营造良好的学习环境,而在营造学习环境的过程中,可以采取以下几种形式:其一,建设教学网站.目前我国的互联网技术比较发达,所以高校计算机教师为了能够给学生构建高效的学习环境,可以把网络技术给充分的利用起来,比如:可以建设教学网站,并在此网站上利用超链接的形式来学习跟此学科有关的知识.再者,利用网络技术开设网站具有两个显著的优势,即知识更新速度快以及能够包含大容量的信息,基于这两个优势,能够辅助学生更好的对软件工程这门学科进行自主的学习.除此之外,建立网站也能够给学生提供交流沟通的平台,在此平台上学生可以畅所欲言的跟教师进行探索,学生间也可以彼此切磋,进而充分地调动学生自主学习的热情.其二,加强校企合作.软件工程是一门实践性比较强的课程,要想学好这门课程仅仅依靠课上认真听讲是远远不够的,必须要动手实践.所以各大高校为了促使学生更好的学习,应该时刻洞悉该行业的动态并给学生提供实践的地方.而要想实现这一目标,目前最可取的办法是:各大高线应寻找实力雄厚的软件公司进行合作,并通过合作的公司来获取该行业发生的风吹草动,进而有方向的变革教学内容以适应时展.另外,也可以邀请合作企业有名的软件工程师来校给学习做演讲,让学生进一步了解软件工程这一行业的目前状况以及发展前景等,并现场指导学生,进而提高学生学习的积极性.还有在寒暑假期间,学校可以组织学生去合作企业实习,提高学生的动手能力.
3.2创新改革考核体系
由上面我们可以得知:软件工程这门学科本身就具有很强的实践性,所以学校、任课教师在设置考核体系时,要认识到本门学科的特点,制定合理的考核体系.比如:软件工程这门课程偏重实践,所以在考核时要重点考察学生的动手实践能力,而不是重点关注对这门学科的理论考察.另外,教师也应意识到制定考核制度不单单是为了检验学生对此门课程的了解掌握程度,更是为了督促学生对此课程的学习以及提高学习的热情.所以为了实现这一目标,就应该创新改革考核体系,鄙弃传统的通过一张试卷定成绩以及评价一切的标准,而是重视学生应用能力的考核,毕竟当今社会需要的不是纸上谈兵之人.而现阶段能够良好使用的方案是:平时作业+课堂表现+案例分析+笔试+实践,这五个模块所占的比例,每个学校可以根据本校情况而定,之所以要提倡这种考核方式,是因为这种方式能够有效改善学生对知识死记硬背的情况,进而转向实践与应用;再者也可以调动学生的积极性,所以各大高校一定要根据实际情况创新变革考核体系.
3.3要科学合理的安排实践环节
软件工程这门课程实践性、综合性很强,所以不能跟其它的课程一概而论,而是应独辟蹊径结合具体的项目或者实际应用展开教学,只有这样才能真正的促进学生的进步.而在我国大多高校在软件工程的课堂上,一般会把课程设计安排在授课结束后,这样不利于学生巩固已学的知识.所以要想改变这一情形,应重新合理安排课程设计,比如可以在不影响授课进度的同时搜集一些资料或者提早指导学生设计课程题目,进而达到既听课又实践的目的,这样一来也能及时的消化课上的内容并把其运用到实际的应用中.以上的这一实践环节是小打小闹,等到课程结束后就需要大动干戈了,也就是集中的组织学生进行课程设计,并在这一阶段也要完成对上一阶段的总结并记录在案.在进行课程设计的时候,为了能够取得良好的效果,在实施时最好采取小组合作的形式,小组成员不能过多也不能太少,应保持在6个人左右,并给每个人安排在这个团队中扮演的角色以及承担的主要责任.等做完以上工作后,指导教师应该虚拟一些项目分配给不同的小组,并给其提出具体要达到的目标以及要求,通过这一虚拟的实践项目能够启发学生的思维,使其获得更好的发展.另外在实践的过程中也应注意:在整个过程中教师扮演的是指导者的角色,所以不要过多的干涉学生应让其独立的完成,等学生遇到无法解决的问题时教师再适当的点拨指点迷津.由此可知:采用双管齐下的教学方式,即一边授课一边指导学生设计课程题目,能够很好的解决实践与理论相脱节的问题,进而更好的促进学生的学习同时也能够使课程设计达到事半功倍的效果.
3.4创新并尝试多种教学手段
高校计算机中的软件工程这门课程,涉及的内容广泛复杂且相关技术理论也很多,再加上实践性很强,对于刚接触此课程的学生来说是有一定难度.如果此时学生的意志不坚定,就极有可能会被枯燥乏味的学习所击退,进而放弃对其的学习.所以为了避免这一现状的出现,教师就应该创新并尝试多种教学手段,进而激发学生学习的兴趣,毕竟兴趣是最好的老师.比如在日常的教学过程中,教师可以充分采用以下两种教学手段进行授课:其一,在板书授课的过程中合理运用CAI.随着科技的发展,CAI技术也越来越趋于完善并运用在社会的各个领域中,再加上CAI具有诸多优势,比如:运行速度很快、可容纳的信息、内容多,把其运用到软件工程的课程中,能够很好解决软件工程这门课程课时少但内容颇多的难题.另外,把CAI技术运用到软件工程课程的教学过程中,也能够吸引学生的目光引起其兴趣,虽然这种新兴的教学设计手段可以通过视、听觉来充分的调动学生的兴趣,但是也不能完全放弃传统板书的教学方式,因为这种方式能够时刻的观察学生的课堂反应,反应良好则接着深入;反应不好则询问学生哪里不懂,等学生掌握后再进行下一步,这样的教学手段能够兼顾班里的每一位学生.由此可知:上述提到的这两种教学手段各有各的优势,所以在软件工程课程的课堂上应该根据本堂课所讲授的内容合理的选择授课手段,进而营造良好的课堂氛围,达到教学目的.其二,可以尝试场景模拟的教学手段.在高校计算机专业中开设的软件工程这一课程,要想实现其价值那么就应把其放在具体的实践过程中,如果仅让学生一味地学习理论知识技术而不付诸实践无异于纸上谈兵、缘木求鱼.但是只在课堂上通过口述的方式给学生讲解实际的项目也不能起到很好的效果,因为大多数学生并没有真正的接触过项目实践,也就不能感同身受,反而会觉得教师所讲授的内容夸大其实.所以为了避免以上这一情况的出现,教师在授课的过程中可以根据课程内容适当的给学生虚拟场景,虽然不能一比一的完全还原实际项目,但是在授课的过程中可以模拟实际项目的简单场景,通过师生合作的方式来完成这一项目,并在完成项目的过程中可以把课堂上讲授的理论技术运用其中,这样一来不仅能够巩固课堂上学习的理论技术,还能激发学生自主学习的兴趣.可谓一举两得.所以为了培养真正的有用人才,就应该在授课的过程中合理利用多种教学手段,给其营造良好课堂氛围,进而激发学生学习的兴趣,达到提高学生综合能力的目的.
4结束语
由上述内容可知:要想改革高校计算机教学中的软件工程课程,那么就应该在透彻了解其基础上进行,毕竟知己知彼方能百胜不殆.而软件工程这门课程显著的特点就是实践性超强,所以在改革软件工程课程时就应该围绕这一特点开展,只有这样才能设计出适合学生学习的课程,才能真正的促进学生的进步.而在以上篇幅中,本人主要研究了高校计算机教学中软件工程课程的改革,希望对大家有所帮助.
参考文献:
〔1〕蒋辉.软件工程与高职计算机软件专业[J].中国科学教育,2015(10).
〔2〕孙涌.现代软件工程[M].北京:希望电子出版社,2012.
〔3〕陆惠恩.软件工程基础[M].北京:人民邮电出版社,2015.
关键词:双语教学;软件工程;计算机专业;独立学院
中图分类号:G642 文献标识码:A
1引言
由于软件国际化和本地化研发、国际交流和学习先进计算机开发技术的需要,英语在IT行业的地位越来越重要。重点和一般本科院校的计算机专业普遍开设双语课程,以达到提高学生的英语应用能力的目标。
软件工程学科涵盖软件开发、维护和管理的基本概念、基本原理、开发软件项目的工程化方法和技术以及开发过程中应遵循的流程、准则、标准和规范等。因此,在软件工程课程实施双语教学,能够有效地规范课程、革新教法、重新定位培养目标和改善教学效果,实现计算机软件专业人才培养进入国际化轨道。
目前,大多数独立学院都开设了计算机专业,独立学院的人才培养基本目标是培养创新应用型本科人才,因此,在独立专业教学中开展双语教学是大势所趋。独立学院计算机专业学生的英语水平与重点或者一般本科院校学生的相比有较大差距,开展双语教学时面临一些新问题。
某独立学院在2007年春季学期对2004级计算机专业软件工程课程进行双语教学改革,总结经验教训后,决定在2008年春季学期对2005级计算机专业软件工程课程恢复普通教学。本文介绍了具体情况。
2教学目标
软件工程课程教学的主要目的是使学生通过课程学习掌握开发高质量软件的方法、有效管理软件开发活动并为参加大型软件开发项目打下坚实的理论基础。课程教学
包含课堂教学、实验教学和课程设计三个环节。课堂教学侧重于讲授软件工程的相关原理和概念;实验教学要求学生了解并掌握常用软件开发工具;课程设计主要通过适当规模的软件系统的需求分析、设计、实现、测试与部署,培养学生软件工程实践能力、遵循软件工程规范撰写软件开发文档的能力、团队协作精神和软件项目管理能力。
3教学实施
3.1基本情况
该学院计算机专业2004级和2005级学生人数、通过大学英语四级考试人数和第一次问卷调查时学生对双语教学持赞成态度的比率、Java与数据结构课程的平均成绩见表1。另外,2004级和2005级分别有24%和20%的学生在软件工程课程开课前参加了IT培训机构举办的软件设计培训。笔者此前担任这两个年级Java、数据结构课程的教学,试卷难度和知识覆盖情况基本保持一致。
上述基本情况表明两个年级学生的平均水平不显著。
3.2双语教学
课堂教学选用Ian Sommerville编著《Software Engineering》(Eighth Edition),参考教材为该教材的中译版。课程实验与设计教学采用自制的讲义。
该学院计算机专业人才培养计划规定,软件工程课程课堂教学是40学时、实验课时16学时、课程设计40学时(2周×5×8)。2008年春季学期的软件工程教学依然沿用该教学计划。2004级和2005级软件工程课堂教学均采用案例教学法,课程实验内容与课程设计的课题要求基本相同。
开展双语教学前,我们得到学院教务管理部门的大力支持,但未与学生协商。开课时,学生曾不愿意领发学院订购的《软件工程》教材,原因是学生担心教材看不懂和主讲老师会中途放弃该教材而换用其他教材。经过细致的解释工作,80%的学生领购该教材,20%的学生购买中译本。
在教学过程中,及时根据学生反馈调整教学形式。因多数学生感觉不适应“英语讲授+英文教案”形式,第9~20学时,调整成“汉语讲授+英文教案”形式;第21~34学时,调整成“汉语讲授+英文教案(中文对照)”形式;第35~3时,以小组为单位,学生报告自学教材部分章节。第40学时,点评学生自学情况和课程总复习。作业以中文或英文方式完成。
3.3普通教学
计算机专业课程教学中,专业课程教育应当是主线,“双语教学”只是给学生提供一个应用英语的机会,英语只是一个载体,实质还是应当培养学生掌握计算机专业的知识和技能。根据2005级计算机专业学生的基本情况和2004级双语教学的经验,我校2005级软件工程课程教学是采取普通教学形式。
教材采用《软件工程理论、方法与实践》(孙家广主编)。课堂教学课时安排和实验教学内容与2004级的基本相同,课程设计教材选用韩万江主编的《软件工程案例教程》。
3.4教学效果评价与分析
以两个年级工程课程的笔试成绩为依据,评价双语教学与普通教学的教学效果。自制试卷时,确保两个年级的试卷覆盖知识点和难度相同。被考察知识点分布、课时分配、平均成绩( , 表示第 个学生的成绩)和均方差( )见表2。第一列A~J分别表示概述、软件过程、需求工程、面向对象基础、面向对象分析、面向对象设计、软件实现、软件测试、项目管理各章和课程设计。“总计”行依次是总学时、总分、2004级和2005级的平均成绩、均方差。
表2中2005级的平均考试成绩比2004级的高,且均方差比2004级的小。显然,采取普通教学方式教学效果更好。
课程结束时进行第二次问卷调查(表3)。由表3可知:2004级使用英语教材的学生因为英语基础差,大部分精力浪费在对教材中的英语词句的理解上,平均每次课的复习时间比2005级学生多花费0.76小时;在回答对双语教学是否支持问题时,2004级计算机专业60%的学生赞成在专业课程教学中采取双语教学形式,比2005级的高。表明2004级学生在经历过双语教学后,清楚地认识到专业英语方面的差距,具有提高英语水平的强烈需求;两个年级有超过70%的2004级学生建议提前C/C++和Java语言程序设计等课程开展双语教学;近六成的学生建议“计算机导论”进行双语教学。2005级课程设计的教学效果好的主要原因是,他们能够在课余根据课程指导设计教材,进行自主学习。
4解决方案
独立学院确定在计算机专业课进行双语教学时需要重视如下问题:
(1) 应该对初次开设双语课程的学生进行双语教学的实质、教学形式以及意义等宣传,让学生从思想上与老师保持一致,这才有可能在教学过程中达到教学相长。
(2) 应尽力避免学生将主要精力浪费在对英语语句的学习方面。在双语教学前,需对学生进行英语水平调查,如果学生普遍英语水平不高,建议慎重考虑选择双语教学。
(3) 在开展计算机专业课程(如软件工程等)双语教学之前,建议在“计算机导论”、“C/C++”或“Java程序设计”等先导课程中先开展双语教学,并在第一学年第二学期开设专业英语选修课,以提高学生的专业英语阅读和应用水平。
(4) 应根据学生的实际英语水平灵活选择“汉语讲授+英语教材+中、英文作业”、“汉、英讲授+英语教材+中英文作业”或者“英语讲授+英语教材+英文作业”等形式。
关键词:实践性教学;软件设计;课程改革;计算机专业;项目实训
中图分类号:G642
文献标识码:B
文章编号:1672-5913(2008)02-0082-04
0引言
从1956年哈尔滨工业大学率先开办“计算装置与仪器”专业算起,到现在普遍采用的“计算机科学与技术”专业,计算机专业教育在中国的大学里已经走过了50年的历程。70%以上的本科学校开设了计算机专业,在校学生近30万[1],其规模居所有本科专业的首位。加上专科、高职、中职在内,其数量还要大得多。计算机专业人才在信息化建设过程起着举足轻重的作用。然而,企业面对十里挑一的大好形势,却经常会找不到合适的人才,造成这种局面的主要原因是学校培养与单位需要存在一定的脱节现象,主要表现为重理论轻实践,动手能力差,因而改革实践环节提高学生的操作技能成为高校计算机类专业的必经之路。
1软件设计类课程实践性教学的内涵
实践性教学是指为配合理论教学,培养学生分析问题和解决问题的能力,加强专业训练和锻炼学生实践能力而设置的教学环节,通常有两种落实途径:一是随堂实践,即课程作业、实验、上机操作等;二是集中实践,即社会调查、各类实习及见习、课程设计以及毕业论文或毕业设计。教学计划中规定的作业、实验、实习等环节和集中实践环节是学生必修的内容,在课程和专业学习中具有突出的地位。不同专业的实践性教学方式,教学管理和考核办法也不相同,但都是以专业培养目标作为前提。对于计算机(包括软件工程)专业的软件设计类课程,其教学目的就是培养合格的软件工程师,适应软件设计和项目管理岗位的需要。
1.1软件工程师岗位需求
任何一个软件企业,开发团队都需要这样三类人才:一是既懂技术又懂管理的软件人才即系统分析师(高级),二是软件工程师(中级),三是程序员(初级),这三类人员在软件企业的正常比例应该是呈金字塔结构,根据国际经验,高、中、初级软件专业人才的比例应基本维持在1:4:8。通常系统分析师由研究生承担,软件工程师由本科生承担,程序员则由大专生以及专门培训机构的学员完成。如图1所示。
从图1可以看出,计算机专业的本科生对应软件工程师岗位,在软件开发团队中处于中间层,优秀者可以上升到系统分析员层次。同时,软件工程师也要兼任程序员角色,因为不少软件企业规模较小,难以按照软件工程的规范细化分工,需要能做分析、能写代码、能做实施甚至用户培训的“多面手”。作为高校,必须充分考虑这种情况,以培养软件工程师为主线,也要提高系统分析能力,同时还应该加强代码编写的训练。
1.2软件设计类课程实践性教学的内涵
软件设计类课程主要包括计算机语言类、开发类、设计类、制作类和工程类课程,共同的特点都是经过系统学习,既能够按照规范独立设计小型软件,组成团队后又能够设计出具有实用价值的中大型软件。
软件设计类课程实践性教学标目的是培养学生两个方面的能力:即独立编程能力和项目合作开发能力。一方面,能够利用所学语言和平台设计小型软件,同时能够按照项目分工,在项目经理(负责人)的统一安排下,在技术上服从既定的设计方案完成模块的开发,并做好相应的文档。良好的责任心、解决问题的独立编程能力和分工合作制的团结协作精神是必须重点培养的内容。软件设计类课程实践性教学的内涵如图2所示:
2软件设计类课程实践性教学的组织
按照软件设计类课程实践性教学的内涵,一般应包括3个环节:课堂实验实训、课程设计、项目实践,分阶段实施。其具体安排如图3所示:
2.1课堂实验实训环节
如果一门课程的教学任务规定在一个学期内完成,课堂实验实训环节应该安排在学期的前半部分进行,以讲授语法、数据类型、常用类库、开发平台为主。学生所学知识和编程技术有限,难以形成完整的程序思路,实践环节只能是练习基本功单独完成,以每一次堂或者每一个章节为单位安排学生进行相关的训练,以熟练掌握语法的基本用法,为后一阶段的课程设计做准备。老师指导时,要注意培养学生良好的编程习惯,包括标识符的规范化命名、注释语句的广泛运用、编程语句的缩进格式、帮助文档的使用方法,逐渐形成编程思想。
为了配合实践性教学,教材的选择也十分关键,最好是采用基于案例教学法或者项目驱动教学法的教材,这种教材往往会通过一些典型的实例或企业项目组织内容,大部分章节的主题相对集中,围绕项目展开讲述,特别适合于实践性教学。如果采用实践性较弱的教材,老师需要自行补充一些实习实训内容让学生当场消化吸收。
2.2课程设计环节
这一阶段十分关键,完全模拟软件企业的开发流程组成小组共同完成一个中小型项目的设计,一般安排在后半学期进行。这时要求学生停止其它课程的学习,每天八小时工作制,甚至晚上可以加班加点,专心设计项目,其最终成果包括软件和文档以及用户操作手册。以每班30人为例,可以考虑分为5个小组,每组6人,每个小组安排组长(项目负责人或称项目经理)一人,组长的职责是:组织成员实地项目调研、模块划分与任务分工、接口的确定、进度的监督与协调、集成测试等,组长直接接受指导老师的安排。鉴于组长在在项目设计过程所处的重要地位,老师在确定组长时,至少考虑三个方面:一是组织能力,二是专业技能的基本功,三是责任心。
这一过程通常安排两周到三周集中在校内机房(实训中心)进行,老师每天针对总体要求及当天的任务进行讲解,然后分小组实施。选择课题时,不宜太复杂,应尽可能让大多数课题组可以在规定的时间内做完。一般选取学生们比较熟悉的内容,如学生成绩管理系统、班级管理系统、教材管理系统、仓库管理系统、工资管理系统、就业反馈跟踪系统、水电费管理系统等,这些课题的要求大家都比较清楚,在校内即可进行客户调研和需求分析,同时也具有较强的推广价值,为将来的职业奠定基础。这时每个人同学都应该至少准备一本项目开发类指导书作为参考,因为涉及到数据库、界面、网络通信、硬件编程等方面的知识,仅仅靠教材还不够。
2.3项目实践环节
项目实践环节是学生到软件研发企业(校外实训基地)全程参与项目开发的过程,一般应安排在学期的最后一到两周或者利用假期顶岗实习,因为经过了课程设计,学生基本掌握了软件企业的开发流程和一般方法,进入软件公司后就能够较快地进入程序员角色,而不至于胆怯,也不会无所适从。完成本部分实践内容要做好以下三个方面的工作:
确定好项目指导老师:企业开发与在学校进行课程设计并不尽相同,软件公司具有自己的风格,往往更加愿意采用自己熟悉的开发工具,以达到客户的需求作为目标,并不一定会使用最新技术,这点与教学理念不同。理想的方案是由任课老师带队进入软件企业(校外实训基地),并选择目前正在开发的项目经理担任总负责人(校外实践指导老师),任课老师也参与项目实践并组织学生实施,因为一个优秀的项目经理不一定是优秀的老师,能做软件不见得会上课,项目负责人与任课老师共同配合更能发挥各自的优势,便于学生理解项目思想和相互沟通。经过简短的培训后,由模块责任人指导学生设计或者由学生独立完成,一切按照企业的开发规范进行。考虑到软件企业一次难以容纳过多实习生的特点,也可考虑将项目拿到学校来做,或者将项目经理请到学校现场指导,以节省时间和费用。
确定项目指导方法:开发应用项目没有现成的教材,需求分析、概要设计说明书、详细设计说明书、数据库和数据字典就是设计的依据,老师必须严格按照这些文档指导学生进行设计,定期检查学生的进度及过程,一旦发现偏差,及时纠正,将错误消灭在萌芽状态。
及时组织项目总结:每天规定一个时间,将同组学生集中起来,针对当天完成的任务进行总结,交流自己的想法,提出存在的问题,集体讨论,这样就能够做到日日有收获,天天有提高,从而锻炼自己的实战水平和组织经验。
3软件设计类课程实践性教学效果的考核
软件设计类课程实践性教学效果的考核也是一个较难把握的环节,既要考核学生的独立编程能力,也要考查其团队协作精神,同时还要考虑其组织能力、表达能力、文档编写能力、纪律性等内容。为了客观科学地评价学生的实际效果,最好是分阶段考核,各部分按照一定的比例综合得到总成绩,可以等级表示,也可以用分数反映。
在课堂实验实训阶段,可以由任课老师根据每一次操作任务的完成情况进行登记评分,重点考察其规范程度,对于具有创新性的作品,可以适当加分,并在全班展示,让设计者讲解思路,为其它同学提供启示。
课程设计阶段的考核由指导老师和项目组长组织学生共同进行,首先由组长汇报课题的设计思想、主要技术、任务分工等情况,并演示软件,大家可以相互提问。老师根据项目完成效果确定这个组的等级,然后由各位成员介绍自己所设计的模块,老师重点检查此模块的功能、难易程度、技术含量、界面美观等因素,再确定其成绩或者等级,这时还要充分考虑组长对成员在设计阶段各方面的综合表现。
项目实践阶段的考核由校外指导老师和校内老师组成考核小组,利用项目汇报加平时表现的形式评定,既要考察项目的完成情况,也要考察各位学生在企业实习期间的领悟能力、工作主动性、团队合作情况、算法的复杂性、程序的规范性等方面,其主要依据是提交的软件(包括源代码)以及各种文档。
实际上,对于实践性教学的考核可以采用灵活的方式进行,不拘一格,比如聘请行业专家、现场答辩、随机抽题、项目论文等形式,只要能够检查学生的真实技能即可。
4我们的实践
我们学校十分重视实践性教学,长期坚持强化学生的动手操作能力和实战水平、力争与企业零距离接轨的做法。为了提高程序设计类课程的实践性教学效果,主要采取了以下措施:
4.1严把教师关
教师是实践性教学效果的基本保证,学生的水平在一定程度上反映了教师的水平,既具有扎实的理论功底,也拥有丰富的项目经验是优秀教师的标准。一方面,我们积极将已有教师定期送到企业实地参加项目开发实践,积累经验,另一方面,不断从软件企业引进专业技术人才,将他们的成功案例带回学校,同时,每年组织专业教师进行实践性教学能力考核,通过考核者才能承担课程设计和项目实践的教学任务,并频发相应证书,作为教师晋升职称和评先评优的重要指标。
4.2实践性教学环节流程化
改革原来的学期一贯制,将一个学期分为两个阶段,前一阶段以学习基础理论为主,随堂考试,在学期的最后几个礼拜专门安排做课程设计,一般开设两门小课,专心实践,在项目指导老师的统一安排下,综合运用本学期所学的程序设计工具,结合前面所学内容,以项目小组的形式,完成一个小型软件的设计,成绩计入学生档案,完成者才能获得相应的学分。暑假或者寒假以及最后一个学期,老师分批带领学生前往校外实训基地或软件企业从事项目开发,作为社会实践或毕业设计的成绩,并要求撰写项目总结或论文。
4.3实验室环境企业化
聘请软件企业技术人员设计实验室(实训中心)建设方案,将原来的布局改造成软件研发中心或者工作室模式,服务器、网络设备、数据库完全仿真企业的环境,将开发流程和软件文档国家标准打印并悬挂在墙上,并购置专业书籍存放在实验室,让学生一旦进入实验室,就能迅速感受到真实的企业氛围,还能方便查阅相关资料。
4.4实践项目规范化
教师和软件企业合作开发一整套实践教材,采用项目驱动、案例教学作为主要方法,将常用软件项目的全部开发过程编写到教材中,源程序存放在服务器,供学生编程参考。每次课程设计或者项目实践后都要评比出优秀作品,将其全部程序及文档资料保存下来,供以后教学和低年级学生使用。
经过近几年学生的反馈情况,我们的改革收到了良好的效果,学生在校期间已经具备了一定的经验,走入社会即可迅速融入开发团队,胜任软件工程师职责,深受单位的好评,不少毕业生特别是原来担任过项目小组长的学生很快即可成为业务骨干或者项目经理。
5结束语
高校教学与行业脱节是普遍存在的现象,程序设计类课程实践性教学更是一个永恒的话题。所幸的是,学校和企业都充分意识到了这一点,各高校正在采取积极的举措消除这一段距离,企业已变得越来越务实,不断细化岗位职责。随着校企合作的深入,订单培养方式的持续,相信在不远的将来,这种差距会越来越小,直到完全消失,那时学校、企业、学生三方都能成为实实在在的受益者。
收稿日期:2007-10
参考文献:
[1]教育部计算机科学与技术专业教学指导分委员会. 中国计算机本科专业发展战略研究报告[OL]. , 2005,05.
作者简介:胡伏湘(1967-),男,湖南益阳人,副教授,博士研究生,专业带头人。主开方向是网络技术,信息工程。
通信地址:湖南 长沙市 雨花区 香樟路22号 长沙民政学院 软件学院,410004
课程设计能够培养训练学生综合运用知识解决复杂问题的能力,学科竞赛可以提升学生运用所学知识解决实际问题的综合实践能力。将学科竞赛的内容和形式引入到传统课程设计中,再从课程设计中选择优秀团队和作品进行进一步的培养,二者的有机结合,不但可以提高实践教学效果,激发学生的创新意识,增强创新能力,而且可以为参加科技竞赛打下坚实的基础。
关键词:
学科竞赛;课程设计;计算机学科;创新实践
大学生创新实践能力培养是高校人才培养中的重要工作之一[1],各高校师资和学生水平不同,培养目标也不完全相同,所采取的方法也各有千秋。西南交通大学曾采取制订创新人才培养计划、建设创新人才培养基地、培养造就教学创新团队等措施[2];武汉大学提出计算机学科拔尖创新人才小班制培养方法[3]。课程设计能够培养训练学生综合运用知识解决复杂问题的能力,学科竞赛可为优秀人才脱颖而出创造条件,沈阳工业大学计算机科学与技术专业采取了二者相结合的方法提高学生创新实践能力,取得了一定的效果。
一、计算机学科竞赛简介
近年来各个学科都陆续出现了不同类型的学科竞赛,和计算机学科相关的竞赛分为3类,分别是算法类、软件应用开发类和硬件开发类。其中算法类竞赛的典型代表是ACM国际大学生程序设计竞赛,可以提高学生的计算思维能力[4,5];软件应用开发类包括中国大学生计算机设计大赛、普通高等学校本科大学生移动应用开发大赛、全国大学生信息安全竞赛[6,7]、中国软件杯大学生软件设计大赛等;硬件开发类代表是全国大学生电子设计竞赛[8,9]。上述竞赛由国家教育部门、地方政府和相关公司多方主办,竞赛项目涉及本学科的研究热点和前沿技术,对提高学生实践能力并激发创新精神有很大的帮助。但由于多数学生缺少参赛经验,缺乏自信,导致学生积极性不高,参赛学生人数并不多,失去了提高自身能力的非常好的机会。如何将学科竞赛引入到日常教学中,让更多的学生受益,而不是仅局限于极少一部分学生,培养学生创新实践能力是值得探索的课题。
二、计算机专业的课程设计现状
课程设计是实践教学中的重要组成部分,是对理论教学的一个有益补充,是对学生进行的比较全面、系统的综合性工程设计训练,是培养学生实践动手能力、创新能力和综合素质的一个主要环节,不同的课程设计有不同的方法,例如中山大学提出计算机信息类综合实验课程设计方法[10],湖南大学提出基于ISP技术的嵌入式系统课程设计实施方法[11]。教育部高等学校计算机科学与技术专业教学指导分委员将计算机科学与技术一级学科本科专业分成四个方向,分别是计算机科学、计算机工程、软件工程和信息技术,对各个方向分别给出了6个课程设计范例[12],见表1。不同学校计算机科学与技术专业特点不一样,开设的课程设计也不完全相同,我校根据教学目标和学生特点从第2学期至第7学期各有一门作为单独课程开设的综合性课程设计,分别是计算机程序设计实践、计算机组成原理课程设计、操作系统课程设计、数据库与软件工程课程设计、算法课程设计及专业课程设计。传统的课程设计存在题目比较陈旧、学生合作意识差、成绩评定主要由教师决定等问题。
三、学科竞赛和课程设计融合方法
课程设计是学科竞赛的基础,学生只有掌握了相应课程知识,才能有机会参加学科竞赛,竞赛能够使学生进一步巩固所学知识,具有更多的创新思想。例如数据结构和算法课程设计与ACM国际大学生程序设计竞赛相互促进。下面以我校《数据库与软件工程课程设计》为例,说明学科竞赛与课程设计相融合提高学生实践创新能力的实施过程。该课程设计是学习完《数据库原理》和《软件工程》课程后实践性和综合性比较强的实践教学环节,要求学生能在3周时间内将理论知识加以综合运用,开发一个小型信息系统。
1.团队成员取长补短的优化组队原则。
计算机学科的竞赛通常以团队的方式组织,如果团队成员能充分发挥各自的优势,整体的力量将会更加强大。组长要负责总体协调,需要有良好的组织协调能力;技术人员要负责解决关键技术问题;文档编写人员要具有较好的文字表达能力;答辩人员要具有较好的语言表达能力。这样的组合方式可以使学生互相学习别人的长处,弥补自己的不足。所以在课程设计中我们也采取这种优化组队方式,学生根据自身情况自愿组合,教师考查各组学生情况后,再进行适当调整。
2.精选历届竞赛题目或自选创新题目。
题目确定有两种方式:一是从以往的计算机学科竞赛中挑选出符合课程培养目标和学生水平的竞赛题目;二是鼓励学生根据兴趣爱好自己确定题目,教师把关确认题目的合理性、实现的可行性和工作量等问题。要求每队一题,题目不能相同。
3.项目组给出切实可行的设计方案。
学生根据所选题目通过网络和书籍查找相关资料,结合所学理论知识对课题进行仔细分析,同时需要了解软件用户实际需求,可以把同学或教师当作用户,进行需求调研,在此基础上提出切实可行的实施方案,并进行方案论证,包括需求分析、总体设计、详细设计、测试方案等几个方面。
4.组间互评,论证设计方案的合理性与可行性。
每个小组以答辩的方式进行方案汇报,教师和其他小组成员一起对方案进行分析、评价和指导。组间的互评目的是调动学生的积极性,让其有主人的感觉,他们既是参赛者又是评委,这样大家可以取长补短,意见也更加全面。
5.以团队为单位的项目研发与测试。
即设计方案的具体实施阶段,根据设计方案进行编程和系统测试。教师定期为学生提供技术支持,和组内学生一起讨论,对学生出现的普遍问题,进行讲解,为学生提供解决问题的新思路。
6.以团队为单位的项目展示与组间评价。
学生完成整个项目后,各个小组将撰写项目报告,提交最终作品并进行答辩,接受包含指导教师在内的验收教师组和学生组间互评。这个环节主要考查学生对基础知识的掌握程度、项目研发水平、总结表达等能力,观察团对成员实践过程中在设计、编码、测试等方面的亮点。此过程主要强调以团队为单位的评价,按照科技竞赛比赛规则,通过比较各组作品以及答辩过程评出小组等级。
7.以个人为单位的组内成员互评、自评。
每个学生在小组内发挥的作用和大小不同,贡献也不同,课程设计最后的成绩也不同。小组成员要根据每个人的实际情况公正地给出每个成员(包括自己)在小组中的位置,清晰地意识到自己及他人在组中发挥的作用,互相了解优势和劣势。
8.选拔优秀学生团队和作品。
评选出优秀作品,在教师指导下进一步进行完善,准备参加计算机学科相关科技竞赛。
四、学科竞赛和课程设计融合成果
采取上述方法进行的学生培养,既可以使优秀团队脱颖而出,为参加上一级比赛做好准备,使其能在激烈的竞争中取得好成绩,提高学校参与竞赛的人数,提高获奖数量和等级,也可以使绝大多数普通学生在各个方面得以锻炼,提升专业能力,如方案设计能力、系统开发能力和集成调试能力等,提升非专业能力,如表达能力、文档撰写能力、PPT制作能力和组织能力等,并让其感觉到只要通过努力并做好充分的准备,竞赛的难度是没有那么大的,提高参赛的积极性和自信心。中国大学生计算机设计大赛由教育部高等学校计算机类专业教学指导委员会、软件工程专业教学指导委员会等联合主办,包括软件应用与开发类、软件服务外包类等小类,我校在2012年只报名参加了一项省赛,2013—2014年,我们将课程设计和中国大学生计算机设计大赛相结合,取得了如下成绩,如表2所示。可见学科竞赛和课程设计的融合,促进了参赛数量和获奖等级的提高。
五、结语
计算机学科竞赛和课程设计相融合的方法不仅改变了传统课程设计模式,而且改变了传统科技竞赛校内推荐方法。传统的推荐模式是学生接到竞赛通知后,自行组队参加比赛,存在的问题是竞赛准备时间短、作品不完善,另外没有经过训练的学生直接参加竞赛,对比赛的规则和要求没有经验,获奖的概率小,获奖的等级低。通过课程设计系统地创新性培养,提前选拔优秀团队并进一步重点培养代表学校参加校外竞赛,可增强学生的核心竞争力,提高学校的竞争力。在课程设计成绩评定时综合了组间评价、组内成员互评和自评,改变了传统的以教师为主导的评价方式,提高了学生学习的积极性,同时促进了组内和组间学生的交流合作。
作者:邵虹 崔文成 单位:沈阳工业大学信息科学与工程学院
参考文献:
[1]孙莉,朱国进,石秀金.计算机学科创新人才培养模式的研究与实践[J].计算机教育,2010,(7):15-18.
[2]杨燕,张翠芳,曾华燊.国家创新体系下计算机学科创新人才的培养[J].计算机教育,2009,(19):21-23.
[3]余琍,王丽娜,代永平.计算机学科拔尖创新人才小班制培养[J].计算机教育,2014,(15):31-33.
[4]杨松涛,李晶.ACM/ICPC程序设计竞赛中的计算思维培养[J].黑龙江高教研究,2014,(10):174-176.
[5]琚生根,廖勇,周刚,等.ACM竞赛与实验教学创新[J].实验技术与管理,2009,26(5):125-126,131.
[6]崔杰,仲红,石润华.依托信息安全竞赛培养大学生创新实践能力[J].计算机教育,2013,(7):92-94.
[7]李雪梅,曹晟,周世杰,等.以信息安全竞赛为平台培养学生创新能力[J].实验科学与技术,2012,10(6):320-322.
[8]刁鸣,王松武,李海波.大学生电子设计竞赛的实施与思考[J].实验技术与管理,2010,27(9):127-129.
[9]蒋力立,彭端,杜宇上.电子设计竞赛培训的探索与实践[J].实验科学与技术,2015,13(1):156-159.
[10]王变琴,刘树郁,许海州,等.计算机信息类综合实验课程设计与实践[J].实验技术与管理,2015,32(4):213-215.
关键词:任务驱动教学法;软件工程
中图分类号:G642文献标识码:A文章编号:1009-3044(2007)17-31474-01
The Application of Teaching Method Driven by Task in the Teaching of Software Engineering
LI Hai-hua
(Changchun Taxation College, Changchun 130117, China)
Abstract:The paper studies the application of teaching method driven by task in the teaching of software engineering. For teaching character of much theory, abstract content etc, applying to teaching method driven by task in software engineering teaching can make students initiative studying. Student can more master teaching content by understanding task, thereby primely improve teaching effect.
Key words:teaching method driven by task; Software Engineering
1 软件工程学的教学特点及难点
软件工程学是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。开发软件的过程不是简单的编写程序,不是简单的若干人编写的多段程序的组合。软件开发过程融合了计算机科学、数学、管理科学、心理学、社会学等学科的知识。开发过程中,你不仅仅要考虑程序的优劣,更要考虑程序与软件的区别,软件与软件产品的区别,软件软件产品的市场前景,如何去更好的与人交流,等等。
由于软件工程课涉及的面很广,因此,仅仅54课时只能是入门教育。讲授的重点不是某些技术细节,而是通过过程、方法、工具等几个层次的讲解教会学生软件工程学的思想和方法,使学生学会从系统的、工程的角度来看待软件开发过程,并能将所学的知识主动应用在实际的软件项目开发中。
通常,在上软件工程课程的学生几乎没有软件开发的经验,对于一些涉及管理学、心理学的课程内容更是不知所已然。因此,给授课带来一定的难度。学生普遍的反应是,软件工程课理论太多,内容太抽象,不好理解,感觉枯燥乏味。这就要求教师在讲授时,要多举实例,使讲解尽可能生动。但是,即使如此,学生可能依然是一种被动学习的状态,很难体会到软件工程学的层次性和实用性。那么如何来提高学生对课程的理解,提高学生的学习热情呢?
一般来说,学生在学期末的课程设计中通常会取得比较好的学习效果,原因是,有课程设计任务驱动学生去主动完成课程设计。同样,教学过程也可以采用如下的步骤:先由教师提出一个任务,从而引导学生去主动思考如何完成任务,然后教师讲解完成任务的方法,最后归纳结论。由此,笔者认为任务驱动教学法可能是解决这个问题的一个途径。
2 任务驱动教学法介绍
所谓任务驱动教学模式,是教师把教学内容设计成一个或多个具体的任务。让学生通过完成一个个具体的任务,掌握教学内容,达到教学目标。它是一种以学生主动学习,教师加以引导的一种教学方法,它打破了传统教学方法中注重学习的循序渐进和积累的老套路,不再按照教学内容的从易到难的顺序,而是以完成一个任务作为驱动来进行教学,完成教学任务。
任务驱动教学法的优势在于:
2.1 使学生更易掌握教学内容
采用任务驱动教学模式进行教学,教师教学和学生学习都是围绕如何完成这个具体的任务进行。教师教学思路清晰,学生学习目的明确,更容易掌握学习内容。
2.2 提高学生的主动参与意识
采用任务驱动教学模式,每节课教师都要求学生完成一个具体任务,学生在思想上就有紧迫感,在教师讲解过程中,就不再是被动地接受。
2.3 提高学生发现问题、解决问题和综合应用能力
采用任务驱动教学,学生的学习过程是围绕完成一个具体任务进行的,这个具体任务将教学内容融合在一起,这使得学生在完成任务的过程中,即是学习教学内容的过程,也是综合应用教学内容的过程。
2.4 培养学生注重掌握方法的意识和创新意识
采用任务驱动教学,有利于培养学生注重掌握方法的意识和创新意识。在布置任务后,教师不限定实现任务的方法和思路及完成作品的形式和内容,仅仅是提供完成任务所需的素材,这就为学生发挥想象力和自由创作留有充分的余地。
3 如何在软件工程教学中应用任务驱动教学法
那么如何在软件工程的教学中使用任务驱动教学法呢? 任务驱动教学方法大致可分为五个阶段。第一阶段是教师引导期,第二阶段是学生操作应用期,第三阶段是交流讨论期,第四阶段是巩固提高期,第五个阶段是总结期。
第一阶段,教师主要是提出具体任务和要求,并对如何完成这一任务作一些方法上的阐述。这一阶段的特点是:教师主要是方法上的指导,还可结合实际应用作一些启发性的提问,使学生知道从哪里入手做,以及从哪些方面可以作些变化。这一阶段的关键是教师引而不发,充分调动学生的操作欲望和好奇心。
第二阶段,以学生具体操作为主。在教师引导后,很多学生已经跃跃欲试了。这时候,教师应留给学生充足的操作时间,让学生大胆去试,使他们在使用中体会、感受和领悟。这期间,学生会遇到一些问题。对学生存在的共性问题,可由教师统一示范,集体解决;对个别学生的个别问题可作单独辅导。这是学生消化和吸收知识的阶段,是学生由不会到会,由初识到熟练掌握的阶段,也是学生充分调动各种感官,发挥各种能力的阶段,时间上可占整个教学进度的一半左右,在教学进程中是一个紧张的期。
第三阶段进入交流讨论期,主要是教师查漏补缺,讲解一些共同的难点和重点,并触类旁通给出大量应用实例,进一步加深学生对所学知识的理解。这一阶段特点是教师点评为辅,尽可能开展一些热门问题的讨论,还可以进行作品欣赏或方法交流,让学生在思路上能否得到一些启发,看一看其它同学是如何完成该任务的,在方法上和自己有什么不同。这一阶段的特点是:集思广益,开拓思路,鼓励创新。在教学节奏上给学生一个放松的时间。
第四阶段进入巩固创新期。学生在看了别人的作品或方法之后,又会涌起再度尝试的欲望,在这一个阶段,学生进一步巩固所掌握的知识,同时在得到启发后作一些调整和创新,进一步使掌握的知识熟练应用,同时提高创作水平。
第五阶段是总结期。采用任务驱动教学模式,由于教师主要是在方法上进行引导,学生主要时间花在动手摸索上。这就存在学习能力不同的同学,在同一节课内所掌握的知识多少也不同,容易造成学生成绩两极分化和教学知识点的疏漏。针对这些问题,就要求教师在采用任务驱动模式进行教学的同时,要加强课堂小结和知识点的回顾,使学习能力差的同学或操作有疏漏的同学能通过教师的总结和回顾,跟上教师的教学进度,全面掌握知识点,达到教师的教学要求。
下面通过一个实际的例子来说明在软件工程教学中如何应用任务驱动教学法。比如在讲述结构化分析和设计时,按任务驱动教学模式不是单纯地介绍问题定义、可行性研究等阶段的概念、过程和方法,而是将所有内容设计为“开发工资支付系统”这一具体的任务,教师通过讲解工资支付系统的开发过程让学生掌握教学内容。首先,教师可以先演示一套开发完成的工资支付系统给同学。同学们看到这套系统,头脑里对有一个初步的完整的印象。这时候,教师再分析这个系统的问题定义、项目目标、项目规模、初步设想、可行性研究、需求分析等等。通过教师的分析,学生对如何澄清系统规模和目标、如何研究现有系统、如何导出高层逻辑模型、如何导出供选择的方案、如何画系统数据流图、如何写文档初稿等过程有了直观的认识。然后教师可以接着使用该系统分析结果,作为结构化设计阶段的任务继续介绍该系统的设计过程。而且由于教师备课时教师事先做过一遍,对学生难以理解或容易出错的地方容易把握,重点难点突出。这样教学,不论教师教还是学生学,整个教学过程都显得条理清楚、层次分明、顺理成章。当然,由于软件工程的内容较抽象,学生不容易知道怎么下手,因此,教师在教学过程中应注意多提问题启发和引导学生,把教学内容充分贯穿到实际的任务中。总之,采用任务驱动模式教学,有利于学生掌握学习内容,提高多方面能力。
4 结束语
从上面对任务驱动教学法的介绍可以看出,任务驱动教学法符合软件工程教学的层次性和实用性,按照由表及里、逐层深入的学习途径,使学生可以循序渐进地学习软件工程学的知识和技能。最大可能地降低学生依赖教师的心理,使学习由被动变主动。在这个过程中,学生会不断地获得成就感,更大地激发起求知欲望,从而培养出独立探索、勇于开拓进取的自学能力。必须承认,软件过程是持续改进的过程,软件工程学的内容也在随着实践的深入而不断完善,因此,培养学生主动学习、自我学习的能力是软件工程教学的一个重要目标。
但是,这里要特别强调的是:任务驱动教学法的关键是把好“任务”设计关。“任务”直接影响教学效果,因此,“任务”设计、编排非常关键。这就要求教师在采用任务驱动法进行软件工程教学时要特别注意“任务”的设计。
参考文献:
[1] 李锋, 孙莉. 任务驱动式方法在离散数学教学中的运用[J]. 计算机教育, 2006.3:27-29.
摘要:为加强学生软件设计能力,本文对计算机专业软件设计能力培养模式进行了探索与实践,对教学内容优化,构建新型四层递进式课程体系;强化实践能力培养,构建立体化实践教学体系,在提高计算机专业学生的软件设计开发能力上取得了比较明显的效果。
关键词:软件设计能力;内容优化;实践教学
一、优化教学内容,构建新型课程体系
1.优化教学内容。计算机软件技术应用领域广泛,知识更新快,实践性强,既要求扎实而广博的理论基础又要求良好的实践动手和自我学习能力。针对这一特点,以计算机科学与技术本科人才培养方案为基础,以基本素质和工程能力培养为主线,以面向信息领域市场、面向区域经济建设为需求,坚持“基础、应用、实践”的原则,突出软件开发与设计的能力培养,在专业教学中强调理论与实践并重,知识、能力和素质协调发展,对教学内容进行了大幅优化设计。在基础能力方面优化了程序设计基础课程,新增了算法分析与设计、面向对象分析与设计课程;在软件设计高级理论方面优化了软件工程课程,新增了软件测试与质量保证、软件体系结构与中间件技术课程;在综合实践应用方面新增了Java程序设计、系统集成与项目管理、xml与电子服务课程。通过一系列教学内容的改革和优化,兼顾了软件设计理论的深度、广度和实用性,更加符合以软件设计能力培养为核心的教学主线要求。2.构建新型四层递进式课程体系。软件设计和开发是计算机科学与技术专业本科人才能力培养的核心和基础。通过深度剖析计算机软件设计能力的培养特点,总结以往教学经验,以培养学生软件设计能力为核心,构建了从程序设计基础到软件开发综合实践的四层课程体系,每层都有相应课程群以及阶段性培养目标。(1)基础理论层。以计算机导论、操作系统、数据结构、编译原理、计算机组成原理为核心课程群,目标是奠定计算机系统的基础理论知识。(2)基础训练层。以程序设计基础、数据结构与算法等为核心的课程群,目标是打牢程序设计基本能力,并初步掌握面向对象软件设计方法。(3)高级理论层。以软件工程、软件测试与质量保证、软件体系结构与中间件技术为核心课程群,目标是系统掌握软件体系结构、软件设计开发和软件项目管理的理论知识,为高级应用实践打下坚实基础。(4)综合应用层。以系统集成与项目管理、xml与电子服务、Java程序设计为核心课程群,目标是面向应用,全面提高软件项目设计开发的综合能力。四个层次之间环环相扣、互为基础、由低到高、循序渐进,逐步培养学生良好的软件理论素养和扎实的设计开发功底,为国家和社会培养合格的IT人才。3.强化实践能力培养,构建立体化实践教学体系。良好的软件设计能力不仅需要深厚的理论基础,也需要较强的实践功底。鉴于计算机软件技术具有实践性强、知识更新快的特点,我们设计了立体化三层实践教学体系,包括基础训练层、综合训练层、实践应用层。(1)加强课内实践教学,培养学生基本编程应用能力。基础训练层是由程序设计基础、数据结构、Java程序设计、编译原理和操作系统等课程的课内实验组成。在课程实验设计中加大了综合设计类实验的比例,减少了基础验证性实验比例。其中基础验证性实验与课堂讲授同步,加深对某个知识点的理解,紧跟老师引导完成练习。综合设计类实验对多个知识点进行综合训练加深对课程内容的整体认识,还需要提交实验报告。注重综合设计能力的培养。综合训练层是由程序设计基础、数据结构和软件工程等课程的课程设计组成。通过设计小型综合项目,培养知识的综合运用能力。课程设计的实施分为开题、系统设计、编码实现、系统测试、系统评价与验收,提交课程设计报告。要求分组完成,最后答辩评分、评优。我们对课程设计考核进行了改革,制定了具体的课程设计考核制度与考核方法,将课程设计考核变为答辩方式考核,包括小组答辩和年级优秀课程设计答辩两个过程和层次进行。(2)引导课外实践,培养学生创新思维能力。实践应用层是由各类大学生竞赛活动、大学生SRP训练项目、大学生创新计划、毕业设计、教师的科研课题、工程实训和软件开发小组等各种形式的实践活动为依托。通过各类竞赛,激发学生对软件设计的兴趣和主动性,鼓励学生积极参与教师科研项目、大学生创新计划、大学生SRP训练项目和毕业设计,培养和锻炼软件设计开发能力。
二、小结
围绕计算机基础、程序设计基础主线展开教学,使学生能够具有扎实的基本功,为高层次人才和创新能力的培养打下坚实的基础。对相关的课程进行整合,形成课程群,突破学期、授课教师、课程各自独立的局限,实现总体设计、综合布局、交叉穿插、协同配合的新模式。
参考文献:
[1]谢中科,肖增良.程序设计系统化思维培养模式的探讨[J].计算机教育,2014
[2]戎玫,张广泉,王辉.强化实践创新能力突破软件人才瓶颈[J].实验室研究与探索,2013.
作者:高攀 郭理 单位:石河子大学信息科学与技术学院
【关键词】软件工程培养模式“理论+实训”模式
1引言
软件工程专业是一个实践性非常强的专业,其很多的专业课和专业选修课具有很强的实践性。这些课程,如《软件工程》、《软件质量保证与测试》、《基于CMMI的软件工程》、《群体软件工程-TSP》、《个体软件工程PSP》,老师讲授的时候觉得是在“空讲理论”,而对于没有任何软件工程实践经验的学生来说是像在听“天书”。但这些课程开设的成功与否直接影响到毕业生的质量、竞争力和未来发展,直接影响学校的教学质量和学校声誉。杭州电子科技大学在软件工程教学改革的过程中提出了“理论+实训”的培养模式,并搭建了实训平台,旨在促进和提高软件工程专业本科省的培养质量。
2 原有培养模式综述
IT技术改变了世界,软件已经无处不在。对于软件工程师的培养是各个国家IT教育的重中之重。如何培养合格的、优秀的软件工程师是教育界研究的热点。在软件工程专业的教育上,各个国家都在进行不懈的探索,其中比较流行的3个培养模式是:
对软件人才的培养,传统的软件人才培养模式类似于瀑布软件开发模型,即瀑布型软件人才培养模式。在我国高等院校软件工程专业的教学模式中,大学4年的培养周期一般是:公共基础课―〉专业基础课―〉专业理论课―〉毕业设计(论文)与实践。这种单向的、线性的培养模式,缺乏反馈与迭代,这种模式对产业和技术快速发展变化缺乏有效的弹性配合,与产业发展主线难以形成有机融合。
另外有人提出螺旋式软件人才培养模式,这种模式打破先基础后产业、先理论后实践的培养过程,建立理论、实践、工程的培养过程,整个过程以教学环节、实验教学环节、工厂实践环节形成能力培养的螺旋学习环节,见图1所示。螺旋式培养模式是一个比较理想的IT人才培养模式,但在具体的实践上却遇到了重重困难,其主要原因是:一是去企业实习必要性不强;二是软件人才培养的校企合作存在巨大困难;三是螺旋式培养模式过于重视工厂实践,不适合培养高水平的软件分析师和架构师;四是由于扩招,专业学生太多,全部安排去公司实习是不可能完成的任务。
从2000年起,麻省理工学院和瑞典皇家工学院等四所大学组成的跨国研究获得Knut and Alice Wallenberg基金会近2000万美元巨额资助,经过四年的探索研究,创立了 CDIO 工程教育理念。CDIO代表构思(Conceive)、设计(Design)、实现(Implement)和运作(Operate),它以产品研发到产品运行的生命周期为载体 ,让学生以主动的、实践的、课程之间有机联系的方式学习工程。CDIO培养大纲将工程毕业生的能力分为工程基础知识、个人能力、人际团队能力和工程系统能力四个层面,大纲要求以综合的培养方式使学生在这四个层面达到预定目标。迄今为止已有几十所世界著名大学加入了CDIO组织,按CDIO模式培养的学生深受社会与企业欢迎,取得了良好效果。
3 杭电软工的理论+实训的模式
杭州电子科技大学从1984年就开设计算机科学与技术专业(软件方向),2015年以IT特色进入浙江省重点建设的5所大学行列,在中国的IT教育领域具有举足轻重的地位。为了巩固及加强我校在培养高质量的软件工程专业人才方面的领先地位,以培养工程实用创新型人才为目标,前软件工程学院以先进的教育理念为指导,通过借鉴CMU/SEI软件工程类人才培养体系,与CDIO教育体系结合,在2010-2014期间进行《基于CMMI的软件工程》精品课程建设,构建了软件工程专业课程教学的“理论+实训”教学方法。
3.1 取得的成果
课程组进行立体化教材的建设和实践,自主开发了“一个网站,两个课件,三个平台”。彻底改革传统教学结构,实现了有效培养面向企业岗位技能的E-learning教育体系。构建起了一个相对完备的立体化课程体系,建设了一个“教师易教、学生乐学、技能实用”的多元立体化教材系统及内容丰富的网络资源系统。
为了满足国家卓越工程师中软件工程培养的需求,特别是对软件工程的实践部分,以微软的Windows Server 2008 R2、SQL Server 2008作为基础软件平台,对微软的SharePoint Service 3.0和Team Foundation Server 2010进行深度定制,开发了一套合适于团队项目开发实训、班级统一授课(普通专业课)实训的过程框架。该框架在授课过程中,可以根据不同专业课的需要进行个性化定制,目的是实现教与学的资源共享、知识共享、无障碍沟通。
学生在机房输入http://10.65.7.81/sites/portal/CMMI/default.aspx(目前该平台已经转移到“杭电云研究中心的”云平台上,网址改为http://),然后依据要求输入用户名和密码即可进入学院的实训平台。根据自己所学的课程,可以选择进入相关的课程网站,在课程网站上可以访问和下载相关的课程资料,同时也可以进入自己的班级课程网站或实训小组网站。
在4年的重点课程建设中,严格执行“《基于CMMI的软件工程》课程师资队伍培养计划”,培养了一个优秀的教学团队。教学队伍共12人,是一支知识结构、年龄结构、职称结构及学历结构比较合理的队伍。其中具有高级职称教师有6名,占总人数的50%,高级职称教师平均年龄为45岁,职称结构合理;课程组教师大部分年龄在40岁以下,均具有硕士以上学位,年龄结构学历结构合理。《基于CMMI的软件工程》课程组教师四年来多次参加CMU/SEI举办的培训,有3位教师拿到CMU/SEI认证证书;另外,课程组中有多位教师来自国内知名IT企业,具有丰富的软件开发经验。
四年来,课题组成员总共主持教学类项目5项;取得教学成果及荣誉2项;公开发表教改论文7篇;参加SEI及移动应用开发培训2次;出版了《基于CMMI的软件工程教程》、《基于CMMI的软件工程实训指导》、《案例教程实训指导》和《基于CMMI的软件工程及实训指导》等教材4部,其中《基于CMMI的软件及实训指导》为浙江省十一五重点建设项目教材。
2015年6月12日-19日期间我们利用“问卷星”问卷调查网络进行一次问卷调查,共收集了58份电子调查问卷。首先我们对同学们是否曾经使用过该实训系统进行调查分析,其中35个同学以前没有使用过该系统,23个已经使用该系统,对该系统具有一定的了解;然后对实训课程的总体评价是,27个对该系统评价等级为“优”,其它27个为“良”,4个“中”,如图2所示。
我们在问卷中设计了“你认为实训系统有哪些优点”的可多选问题,给出4个勾选项及2个随意填写项。4个勾选项目是:能满足系统实训要求、系统很实用、功能完整、说明书和系统是匹配。在这58份调查问卷中,同学反馈结果如图3所示。67.24%勾选了“实训系统能满足课程实训的要求”,51.72%的同学勾选了“系统很实用”。37.93%的同学勾选“功能完整”。22.41%的同学勾选“说明书和系统是匹配的”。可见同学们对本实训系统是相当满意的。
3.2 存在的问题
《基于CMMI的软件工程》在课题组多年的悉心建设下,尽管取得了一定的成绩,但仍存在一些课题有待改进,这主要表现在以下几个方面:
由于软件工程具有很强的实践性,课程的实训内容不但要巩固理论又要接实践的地气,这使得任课教师在确定实训案例的时候难以把握案例的难度和工作量,实训案例的吸引力和后续的可继续利用性也难以保证。部分实践材料参考了现有的公开资料,学生可以轻易搜寻到答案。所以确定新案例及案例库的建设是软件工程实训的一个重要的课题。目前市面上有很多的相关的图书,如李龙澍等老师编写的《软件工程课程设计》[3]及熊庆宇编写的《软件工程实训项目案例I》[3]及《软件工程实训项目案例II》[4]等可以做为重要的参考资料。
教学计划上规定的课外实训学时难以落地。以《基于CMMI的软件工程》课程的实训为例,实训内容涉及(1)熟悉开发环境、(2)组建项目小组、(3)项目立项、(4)需求收集、需求分析、(5)项目详细策划、(6)建立配置库、(7)系统设计、(8)系统实现与测试、(9)测试计划及测试用例、系统测试、(10)项目总结等10项内容。教学计划安排是32学时,但实际完成则需要76学时。这76个学时是按照项目小组的人数、在大家分工合理密切配合的前提条件下才能完成。32学时实训效果是可控的,必定有固定的场地,有老师的监督指导。而其余44课时的课外实训,由于没有固定的场地和环境,学生只有自找场地。本来在固定的场地固定的群组完成的实训,由于时间和场地的原因,同一项目组的同学如盘散沙,教师也是鞭长莫及,原本设立的项目小组组长也无力监督本小组的同学,导致实训时间和效果难以得到保证,学生无暇领会实践的过程在实践中的重要意义。
根据教学经验,《基于CMMI的软件工程》实践课程师生比不能超过1:40,即每40个学生配置一名辅导教师。但实际的授课过程中,受到课程教务安排和学生选课倾向的影响,往往大于这个比率,使得教学难度增加、实训效果很难达到良好的预期效果。
基于传统的一课一练的思路,我们对《软件工程》、《软件质量保证与测试》、《基于CMMI的软件工程》、《群体软件工程-TSP》、《个体软件工程PSP》等分别设置了实训内容,但实训内容有很多相同的部分,大多都是开发一个某某系统,需要完成相同的软件周期,其差别仅在于:(1)系统规模的大小及难度不同;(2)所关注的侧重点不同,如基于CMMI的软件工程关注过程文档,PSP关注与开发人员自身的相关内容。这些课程的实训共有的现象是:系统的开发成果粗糙,系统的架构、功能和界面等雷同,实训时间不足。未来可以通过课程间的整合,多门课程围绕一个实训案例开展联合实训。
现在“挑战杯”、“创业大赛”、“服务外包”等创业类竞赛种类繁多。那些有想法、学习成绩好、动手能力强的学生成了同学中的明星和老师眼中的红人。他们早早主动或被动的被一些项目导师给“求包”或“被包”了。在课程的实训中有些学生直接提出不参加工程实训的申请,理由也很简单及充分:“我们也在做类似的工作”;有些直接拿出自己的参赛题目直接要求“自我命题”,这类项目往往代码都有了,倒过来补写软件开发过程中的相关文档。
在2015年6月12日至19日的调查问卷中,我们同时也设计了“你认为系统有哪些缺点”的问项,希望从同学们那里听到意见、批评和建议。和问题3的设计一样,我们也是给出4个勾选项目及2个随意填写的项目。反馈的结果如图4所示。结果显示53.45%的同学对于“进入系统要输入很长的网址”这个缺点有强烈的共鸣;32.67%的同学认为说明书不清晰;6.9%的同学认为说明书和实际功能不匹配;32.76%的同学认为有些功能和实际不匹配。
我们在问卷调查中专门设置了一项“对于基于CMMI的课程实训,你的其它建议”来弥补格式化问卷的缺陷,让参与调查的同学对我们的实训系统提意见。虽说这是个可选回答项,但我们收到21个同学的反馈,占36%。同学们的回答基本上可归纳如下几个方向:关于系统功能,有4位同学反映:“实训系统有很多功能不完善、系统有点太过复杂、一些不必要的功能应该删去”;关于实训内容安排方面有3位同学建议:“多些实例讲解、多给一些前辈的实训经验和例子、可以用一些案例来分析,这样我们理解的更好!”;关于实训的组织方面有4位同学对于实训过程中的分组进行了吐槽,认为“应该合理安排实训时间及具体任务,应该重视如何分组,不然有些人忙死,有些人“打酱油””;最后关于实训中实践和理论进行融合方面有3位同学建议:实训也要注意加强理论指导,而不是直接“照葫芦画瓢”,不是只把模板DOWN下来,机械的填写内容后再UPLOAD上去。
4 结论和展望
软件工程专业教学实训平台为学生的实训搭建了坚实的基础,为杭电的软件工程人才培养做了很多的开端和铺垫。目前已经完成了“硬件”建设部分,现在已经进入了“软件”建设阶段,我们认为未来应该在此良好的“硬件基础”上,着力研究课程群的划分、各科内容的相互划分和协调,授课教师小组的建设及案例库建设等。
参考文献:
[1]李龙澍,郑斌.软件工程课程设计.北京:机械工业出版,2010.
[2]李超,卢军.螺旋式软件人才培养模式探索与实践.北京:科学出版社,2008.
摘要:民办高校面临着学生素质不高和对学习缺乏兴趣等问题,为了提高学生的学习效率和兴趣,文章以《C#程序设计基础》、《软件工程》等课程为例,进行了移动学习模式和相关学习资源的研究。根据移动学习的设计原则和计算机专业课的特点,构建适用于民办高校学生的移动学习方式和学习资源,提高了教学质量和学习效果。
关键词:民办高校;移动学习;教育技术;计算机专业课
1民办高校学生移动学习的调研及分析
智能终端在民办高校拥有庞大的用户群,已经逐渐成为移动学习的重要工具,移动学习方式也成为一种全新的可以广泛使用在教育中的学习方式[1]。对于民办高校的学生这个特殊群体,学生对新鲜事物具有较强的接受能力,思维比较灵活,相对于传统的教育方法,对于民办高校的学生来说,新鲜事物更能够激发起他们的学习兴趣,他们对移动学习充满了好奇,并且有一定的使用需求。目前,笔者所在学校已经完成无线网络更新,无线WIFI覆盖整个校园,为移动学习提供了硬件上的保障。在此基础上,为了获得学生对移动学习模式的真实想法,课题组向计算机专业不同年级的在校学生随机发放调查问卷,共发放问卷200份,回收170份。通过对170份问卷进行分析,对于日常学习中使用终端浏览和学习内容进行统计说明学生在日常生活和学习中,已经在有意无意的利用移动学习的方法,对于没有接触过的知识和实际的程序设计算法,都会通过移动学习终端获得相应的帮助。分析表明移动学习模式在大学生群体中存在较大的发展空间和较好的使用基础。
2移动学习方式和平台的结构研究
课题组研究基于移动终端的自主学习结构和方式,以计算机专业课程中的《C#程序设计》、《软件工程》、《数据结构》、《计算机网络》等课程为目标,对移动学习模式需求进行调查分析,为基于移动学习平台的选择和设计工作提供必要的参考依据。通过开展移动学习的学习方法以及模式的应用研究,选择《C#程序设计》和《软件工程》专业课程作为主要的研究课程,学生可以通过移动平台学习教师的理论教学视频、下载教学资源、获取学习任务、提出学习中遇到的问题、与同学和老师进行探讨等活动,对于那些程序设计的课程还可以模拟软件开发的完整过程,通过实践方式学习课程,加深理论基础知识以及方法学上的理解,提高了自身的系统设计、开发和团队协作能力;同时,很大程度上的自主和逼真性的模拟更能够增强学习的兴趣,全面的提高计算机专业学生系统研发的知识与能力[2]。课题组对移动学习模式的功能模块设计,包括学习模块、笔记模块、资料模块、测试模块和任务公告模块。其中模块与模块之间具有一定的相互关系,每一个模块具有独特的功能,学习者可以根据自己的兴趣、爱好选择相应的功能进行个性化学习。(1)学习模块:学生可以自助学习,通过QQ、微信、邮件服务等移动端服务程序与授课教师建立联系。也可以自由选择学习的内容进行学习,如学习第4章结构化分析部分的数据流图的绘制方法,通过平台获得该部分的主要学习内容,选择平台提供的课后习题进行学习,同时也可看到习题的答案,如果遇到不会的问题,可以选择向老师求助或者向同时咨询学习该部分的同学。(2)笔记模块:提供学习者对学习内容进行记录,学习者可以记录学习某一部分的当时心得和学习方法的总结。笔记可作为课后学习的总结,也可以进行交流使用,在期中和期末复习上占据主要的作用。同时,由于笔记模块记录当时学习和设计的心得方法,因此可以在后期各门课程的课程实训、毕业实习和毕业论文中起到至关重要的指导作用。(3)资料模块:管理与《C#程序设计》和《软件工程》课程相关的电子资源,包括各章节的PPT、微课学习的小视频、使用工具的下载包、以及教师学术成果、学生课程设计成果展示等。(4)测试模块:提供在线各个章节的内容测试,带有测试答案,完成后可以学习成果加以检验。(5)任务公告:提供《C#程序设计》和《软件工程》实验课的内容和实验指导公告,提供课程设计的任务、内容和分组规则,以及自由分组统计。学习者通过该公告模块获得任务并按要求完成任务。
3计算机专业课程开展移动学习实践研究
《C#程序设计》和《软件工程》教学主要目的,使学生通过学习计算机语言和软件工程的课程,在应用软件的设计、研发、维护和测试各方面得到提高,并且通过分组参与项目的实施,使自身成员协作的能力和团队的精神得到锻炼,即培养了学生应用软件开发的理论和工具综合运用能力,特别是软件的研发和与人合作能力。在研究过程中,设计研究了以学习参与者为核心,以资源为基础的移动学习结构模型。同时采取如下措施:(1)采用基础知识点的学习,《C#程序设计》的原理和类库的使用相对比较难于掌握,《软件工程》的理论和概念比较复杂,为了让学生能够将编程语言和软件知识更好的结合起来,掌握已经讲授的知识,教师通过平台的课堂每章知识点功能,向学生提供学习重点、难点和关键点内容,学生可以利用移动终端和学习平台,例如通过QQ、微信等复习知识,很大程度上提高了学生课后按照任务复习的概率,不需要复习教材和参考资料,只需要阅读学习任务书或项目书即可,传统学习方式发生的改变,也可以一定程度提高学生的学习效率。(2)采用基于团队的学习,《C#程序设计》和《软件工程》在阐述软件设计和开发的理论时,将软件生命周期从开始到淘汰分为7个阶段,每一部分都不可能只通过一个人完成,因此软件设计开发的中心思想主要说明,要具备较好的团队协作意识,项目合作小组是一个非常高效的提高团队合作能力方式。移动学习平台的服务端可以添加学生可选择的学习内容和课程设计题目,每个学生通过学习平台自由选择团队以企业固定资产管理系统小组为例,负责人可以为每个成员分配学习任务,指定哪个成员完成,完成时间是什么时候,项目组成员按照负责人要求,在规定时间内完成学习或设计任务,否则被认为任务延迟。学习组内也可以创建在线编辑文档,提供所有成员编辑功能。项目组内共享文件分类存放,对每个成员开放,每个成员可以自由的学习参考资料中的内容,如可以查看阶段测试中的试卷,在测试后可以查看标准答案。
4结束语
计算机专业课程采用移动学习模式,是将移动互联网技术与教育教学相结合。实际使用效果具有科学合理性,同时也是与时俱进的。根据采用该模式后的学习结果观察,提高了《C#程序设计》、《软件工程》等课程的教学效果。移动学习方式的应用,在一定程度上增加教师的工作量,教师不但要进行理论课程的讲解,实验实训课的实施,同时也要学习新的工具,使得教师应该不断的提高自身的业务水平,不断的学习新的教学方法和工具。教师在教学过程中需要多关注学生的实际使用情况,关注在使用该方法时出现的问题,积极引导学生利用移动学习平台学会自主学习。基于移动学习的模式在一定程度上培养了学生合作学习能力,同时提高学习成绩和学习兴趣,对于动手能力、适应能力和团队合作意识也有一定的促进作用。
关键词:软件工程;概念和术语;实例;实践
中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)06-10ppp-0c
Designing a Software Engineering Teaching Scheme
WEN Zhi-xiong,CHEN Zhen-ting
(Brief Introduction of Kunming Metallurgy College, Kunming 650033, China)
Abstract: This paper proposes a teaching scheme based on the idea of software engineering, which is teaching together with examples, attaching importance to convey the key concepts, persisting in engineering awareness cultivating and practice training during all the school period.
Key Words: Software Engineering; Concepts and terminology; Example; Practice
1 引言
高职软件技术专业培养目标是:“能够从事软件企业桌面应用开发、软件生产企业编码、系统支持、软件销售与应用开发、非IT企业事业单位信息化等工作。”
软件工程是专业培养方案核心课程之一,它是指导计算机软件开发与维护的一门工程学科。
计算机专业的学生毕业之后,无论从事软件开发、维护还是销售,都离不开软件工程的知识。可以说,软件工程概论课是他们参加工作后马上就要直接应用的一门专业课。
但是,由于下述原因:
(1)由于为了推进就业,各学校都采取最后一个学期进行毕业设计和就业实习的做法,所以,学制三年的高职,课堂学习时间两年半;作为国家紧缺人才培养工程的二年制软件技术专业,课堂学习时间一年半。而学习软件工程涉及的前驱课程比较多,学习时间紧。
(2)计算机高职学生对动手解决实际问题的能力较强,但对《软件工程》理论学习,普遍感到内容比较抽象,不易理解,学生学习的积极性很难调动起来。
因此,如果没有一整套科学、合理的教学方案设计,就不可能在短时间内,培养出具有较强工程能力的软件人才。
2 教学方案设计的依据
(1)在软件工程的理论学习中,有些概念、术语反复出现,它们对内容的理解起着至关重要的作用,所以,我们的教学要重视这些概念的传达。
(2)Jennifer Niederst Robbins在他的广受读者欢迎的著作《学习Web设计》一书中写到:“很多人通过读书和理解并修改存在的例子自学JavaScript”[1],等。所以,实例软件工程教学是一种好方法。
(3)L.G.Alexander在其编著的《新概念英语》教程中,就外语学习的基本原理,致教师和学生:“学习语言与学习乐器十分相似”。同样,“软件设计是一个创造性的过程。从书本上学不会设计,只能经过实践,通过对实际系统的研究和实践才能学会”[2]。所以,我们的软件工程教学要加强实践教学。
总之,通过重视关键概念、重点难点内容的讲解,实施实例教学以及加强实践环节,使学生成为教学的主体,通过自主学习来了解、掌握相关知识和技能。
3 教学方案设计
3.1 重视几个重要概念和术语的传达
在软件工程中有几个出现频率非常高的术语,理解掌握它们对促进学生的自我学习将起到一两拨千金的作用。
3.1.1 模型
(1)定义:模型就是为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书面描述。通常,模型由一组图形符号和组织这些符号的规则组成[3]。
(2)建立模型的一般步骤:1)客观、正确地调查和分析所要解决的问题;2)在明确问题的性质和关键所在后,根据知识进行归纳和总结;
(3)抽象地建立起求解问题的模型;4)考察和证实模型是否准确地反映了实际问题运行的规律。
结构化分析主要建立功能模型和数据模型。数据流图是建立功能模型的基础,实体-联系图是用于建立数据模型的图形。软件设计的目标是设计出所要开发的软件的模型,等等。
3.1.2 抽象
人类在认识复杂现象的过程中使用的最强有力的思维工具是抽象。人们在实践中认识到,在现实世界中一定事物、状态或过程之间总存在着某些相似的方面(共性)。把这些相似的方面集中和概括起来,暂时忽略它们之间的差异,这就是抽象。或者说抽象就是抽出事物的本质特性而暂时不考虑它们的细节,即在解决问题的过程中集中考虑与当前目标有关的方面,忽略与当前目标无关的方面。
软件工程中从软件定义到软件开发要经历多个阶段。在这个过程中每前进一步都可以看作是对软件解法的抽象层次的一次细化。抽象的最低层就是实现该软件的源程序代码。
3.1.3 逐步求精
逐步求精是一种求解问题的技术。Miller在他于1956年3月发表的著作"The Magical Number Seven, Plus or Minus Two: Some Limits on Our Capacity for Procession Information"中指出,一个人在任何时候只能将注意力集中到7+-2的信息块上。
1971年,Wirth在他的"Program Development by Stepwise Refinement"中首先提出了逐步求精的开发技术。他指出,逐步求精可以帮助工程师将精力集中到当前的开发阶段,而忽略其他细节问题。Miller规则是人类的智力限制,我们不可能战胜我们的自然本性,所以我们要与之共存,接受自身局限,并在这个前提下尽我们的最大努力。
所以,逐步求精是一种“为了求解重要问题而尽量推迟对细节进行考虑”的基本解题方法。
3.1.4 演绎、归纳
归纳和演绎是人们认识过程中的两种推理形式。归纳是从个别事实走向一般的结论、概念的思维方法。演绎法是从一般原理、概念走向个别结论的思维方法。
3.2 在校期间持续培养工程意识
针对学制短、时间紧的情况,在前驱的课程中就要让学生了解软件工程框架、熟悉模型元素。如在结构化程序设计课程教学中坚持用用流程图表达算法思想,在面向对象程序设计课程中,表达面向对象的思想时使用UML图和图素(基本图素如角色、用例、类、接口等);在对应的课程设计中,教师以软件工程框架(目标、过程和原则)来指导学生的设计,并要求同学使用相应的开发工具(如C,VC#.NET)来实现老师给出的(或与同学一道做出的)软件模型。总之,要求同学要具有按“图”(模型)施“工”(编码)的能力,为更深入地学习和今后从事软件工程打下良好的基础。