时间:2023-06-25 09:23:07
引言:寻求写作上的突破?我们特意为您精选了12篇软件开发基础知识范文,希望这些范文能够成为您写作时的参考,帮助您的文章更加丰富和深入。
计算机软件技术的开发和稳定的发展,也能够为社会的发展和信息的进步做出很大的贡献,也能够对经济的发展提供着不可或缺的力量。这也需要更多热衷于计算机软件的开发的人才做出更多的努力与贡献,也需要对计算机软件的开发有着深刻的认识与经验,这才是计算机的软件开发与发展重要的基础,只有不断地努力才能在计算机软件开发的活动中发挥更好更重要的作用,逐渐地深入到人们的日常生活中,也使得计算机更加有利于人们的生活。
1计算机软件开发概述
随着社会经济的不断发展与更新,计算机的技术也在不断发展,虽然发展的历史不长,但是已经取得了明显的进步,都在利用着计算机的有利的效果和一些方面,计算机的开发和更大的进步是现在现在需要解决的问题,软件的开发与进步也是对社会有着不可或缺的力量,目前计算机也大概能按照使用者的需要执行各种需要的任务,是计算机的核心系统CPU将电路分成两种状态通路和不通路,并且和数学中的二进制有效地联合起来并执行使用者给的任务和命令,要想有效地实行使用者也必须采用二进制的方法,这是人机交流方面的一个重大进步,但是计算机也有一些缺陷是我们必须解决的,所以也是亟待解决的问题,然而的计算机研究人员在原来二进制的基础上再进一步地发展了和研发了高级计算机语言,这个方法是通过英语简化语言的方式,准确而又方便地实现了计算机器与人类的各种信息的交流,也进一步的方便了人们的生活和日常的工作。而目前是主流的VF和VB这两种可视化的编程语言的出现,让计算机的软件技术又在人类的发展历史上有一个里程碑,也使得平时生活中对计算机软件的开发技术感兴趣和有着深刻了解的人也可以简单地能控和致力于这些技术的发展,时代是进步的,技术也是不断发展的,也由此快速而又逐步趋向简洁的发展可以看出当前的计算机软件正在朝着更加有利于人们的方向发展,技术开发也在朝着简单有利的方向进行着,这是目前有利的一方面,还是需要更多的计算机研究人员们的不断努力。
2存在的问题
2.1计算机软件开发的特点
计算机的技术也在不断地成熟,随之而来的是软件的开发也是相当热门的门业与行类,伴随着计算机技术的发展计算机的软件技术也在不断地更新中,计算机的软件开发技术也在不断地发展中,就在短短几十年的时间取得了很大的进步并且目前仍有特别大的发展空间,在迎合人们生活与工作等各个方面的需要。新的计算机软件技术也在更新交替出现,目前已经存在的计算机的软件技术也在进行着不断地更新,因此,也毫无疑问地可以看出来计算机软件最明显的一个特点就是不断地交替,不间断,有着持续性。虽然目前有很多的计算机软件,但是随着经济的发展和社会的需要,新的计算机的开发软件也总是在顺应着人们的要求不断出现,也总是有不同程度的创新和发展,而软件的创新也是一个不间断的持续的过程,需要加以想象力并且很好的研究,但是对于已经存在的计算机软件不应该摒弃它们的作用,应该对其加以改革和创新,保持持续不间断的更新,才可以保证自身的安全性和其中的稳定性,就比如常见的也经常利用的Windows操作系统,作为一种现在的软件系统它就会定期地隔一段时间进行更新也会对自己的不足进行系统的完善,并且也会一些更新的消息可以自动进行更新,这也是其中的优势所在,软件的开发业在各个领域的运用中扮演着越来越重要的作用。另外,计算机软件技术开发的特点也是不断地随着经济的发展和运用以及社会生活在不断更新,计算机软件系统具有很强的针对性,对日常生活的需要和工作的各个方面都具有很大的帮助,也是它能够独立地发展成一门学科的关键所在。计算机软件的基础框架构架对于目前来说计算机软件的开发与设计已经成为了一个系统性的工程,对于软件设计的各个环节已经形成了一些固定的模式,所以在计算机软件开发的过程中最为重要的就是它的基础框架的构造与设计,只有选择一个优秀的基础框架这样才能够保证计算机软件开发的后面一些程序的编写,系统的维护和技术的拓展有着更高的利益和方便之处。因此在计算机的基础软件开发中和平时的活动中,必须首先确定计算机软件的基本框架,确定需要的基本目标,更有利于研究人员的开发,也能够为后继工作的编写提供给我们更多的便利。一个重要的问题是需要必须提高软件工程中的速度。
2.2计算机软件开发的过程
计算机软件的基础构架完成就需要进行一些编写工作,对需求分析工作已经认真的完成,就要进入最重要的环节,对于计算机的软件系统的实际设计环节,目前在这个过程计算机软件的研发人员最经常使用的C语言的编程,主要是因为它是高级语言,这种高级语言的结构性和它的基本框架都比较突出,所以被很多编程的人员经常使用,目前在软件编辑领域也出现了很多VF等可视化的编辑语言,但是人们大多还是使用C语言,也是因为软件设计的特殊性。一个重要的问题是需要必须提高软件工程中的速度,速度对大部分人来说都是一个重要的问题。对于基础框架的设计与利用是必须严格遵循一定的逻辑关系,计算机软件的设计是利用特定的逻辑关系必须对软件的内容进行严格的定义,而研发人员所必需遵循的特定的逻辑关系就是计算机软件技术开发中的基础的框架构造,因为计算机的基本框架的构造不仅能够决定平时运用这些软件时运行的流程和运行计算机的方式流程和速度等,还会对未来软件的维护和在发展产生更重要的影响,但是对于计算机的软件开发的基础构架不能是封闭式的,如果是封闭式的就不会具备这些基本的扩展能力,还有一个问题就是由于在编写程序的时候一些软件的系统的本身就比较复杂,这就需要研究人员的共同完成,这也造成了这个软件本身系统的庞大性,所以有时候在实际的编写过程中,那些本身庞大的软件在进行编写操作的时候会被分割成好几个编辑模块,在这些被分成细小模块的基础上就必须确立一个主函数,利用这些主函数对这些细小的模块进行管理,就比如在计算机系统软件在进行操作某个程序的时候,主函数就会对这些分散的编辑模块进行统一的调用,这样才能实现各个模块统一协调的工作,使得整个系统能够完整有序地进行,同时也提高了计算机软件设计的工作效率,加快了工作时的速度,正是因为多人的分工合作,才能更大地加快计算机软件系统的开发与工作状况。
2.3计算机软件开发的测试与维护
对于计算机中软件系统可以说是整个计算机系统中最重要的管理系统,计算机的系统会根据软件的系统进行各种工作。而目前对于计算机软件的基本框架基础应用最广泛的有3层:表示层、逻辑层、和数据层三层结构组成的基础的构架,在现在的基础框架中软件表示层、逻辑层和数据层分别对应着计算机软件系统的人机交互界面,逻辑关系和计算机语言区。这样对一个软件有了基本的基础构架,在后期进行维护的时候才能不伤害其他系统,仍可以使其他系统有条不紊地进行。一个优秀的软件技术的基础构架能够极大地提升在计算机软件的应用的效率和运行的速度。而当前的计算机软件系统的针对性也越来越强,所以在后续运用方面进行运行管理时应该根据自身的结构基础进行调用,面对目前计算机软件的开发形势与方向,研究人员必须进行一定的讨论最后再根据需求者的应用设计不同的适合客户发展的方面。这样既可以保证工作的方向性,也可对后部计算机软件的维护发挥一些重要作用,也可方便研究人员的设计工作。这些软件在进行编写成功后是不能马上投入到工作的,需要进行调试,一些研究人员的跟随,因为在其中可能会出现一些漏洞。根据各个软件的不同调试方法要利用科学的方法调试,也有益于后期的维护工作。
3计算机软件开发过程中的问题
3.1确立好计算机软件的基本框架
对于一开始的确立的框架结构必须选择科学无误的框架,才能有利于后期的一些编写的进行,计算机软件的研究开发人员必须进行准确无误的研究讨论,最后才可以确定客户需要,所以对于第一步的框架构造应该认真选取方案。
3.2完善程序编写数据
计算机软件技术开发过程中对于程序的编写的工作,根据第一步框架结构能够无误地进行,编写工作的进行跟从主函数的分配才使得各个工作有条不紊地进行,所以确实主函数,研究人员应该正确地讨论主函数的选用,才能使得主函数有利的支配于编辑模块,各个工作人员的分工才能更好地进行,对编写工作也有很大的方便性。因此在计算机的基础软件开发中和平时的活动中,必须首先确定计算机软件的基本框架,确定需要的基本目标,更有利于研究人员的开发,所以说建立基本的框架基础是首要目标。应该满足客户的要求进行软件的编写工作,而目前在日常生活中最常用于生活的是C语言,C语言主要特点是它的结构明显的突出,它的基础框架也是特别优秀的,也能够为后继工作的编写提供给更多的便利。一个重要的问题是需要必须提高软件工程中的速度,速度对大部分人来说都是一个重要的问题
3.3做好软件最后调试
最后就是完成后对于计算机软件的调试工作了,软件不能立即投入到使用中,需要进行严格的调试并认真地改正,满足客服的需求,在后期进行维护的时候才能不伤害其他系统,仍可以使其他系统有条不紊地进行。一个优秀的软件技术的基础构架能够极大地提升在计算机软件的应用的效率和运行的速度。这也方便后期对这些软件漏洞的维护,需要对大部分的数据进行研究工作,以保证计算机软件的有效进行,也可以防止后期漏洞的产生,也可以加快软件自动更新的作用。
4结语
随着当代社会经济的发展,计算机软件的开发技术已经深入日常生活中,也大大方便了平时的生活,成为了不可或缺的力量,编写的过程可能有些许的复杂,但是只要研究人员深刻的投入,所有问题都是可以解决的。
参考文献
[1]金.规范化在计算机软件开发中的应用[J].物联网技术,2016,(01).
[2]董海,叶永利.计算机软件开发的JAVA编程语言分析[J].数字技术与应用,2016,(01).
[3]许葵元.浅谈计算机软件开发中的分层技术运用[J].数字技术与应用,2016,(01).
1研究背景及意义
培养既懂技术又懂管理的软件高级人才,是各软件学院追求的目标。对软件学院的学生来说,项目实践能力、自学创新能力、团队合作能力和交流表达能力是其职业生涯中所不可或缺的。如何开设学生在校期间的实践课程,对学生进行软件开发基本技能训练,使学生在学习了软件开发技术相关领域的理论知识后,能够充分地锻炼这些能力,顺利就业,并在此后的职业生涯中有所建树,各软件学院针对这些问题都在进行积极的改革与探索。
对于大多数软件学院,制定合理的、适用于软件开发技术快速发展的实践教学模式面临的问题主要有以下两点:
1) 学生实际掌握的软件开发技术水平参差不齐。新入学的工程硕士超过半数来自非计算机专业,这些学生具备相应的专业领域知识优势,但在软件开发技术所必需的软件基础知识方面却存在不足。
2) 软件开发技术包括语言、开发工具及其所使用的开发方法。同时还需要掌握与软件开发技术相关的专业基础知识,以及要了解所开发程序的实际运行平台。各层次、各方面的大量实用产品和技术的推出,以及软件工程硕士的学制短和学科基础差别大的现实都给学生入门学习和系统掌握软件开发领域的核心知识带来巨大困难。
因此,研究和探索一种以动手实践为主导、融合多门传统课程、符合软件工程思想的软件学院实践教学模式,将为软件工程相关知识的进一步学习,提供坚实的理论基础和技能保障。本课题的研究内容,将为软件工程硕士实践教学模式提供借鉴意义,同时,也可为软件相关专业高年级本科生的软件开发技术能力培养提供参考。
2研究内容及主要观点
2.1研究范围和研究目标
本文研究的实践内容和模式主要针对于新入学的工程硕士,是根据软件学院工程硕士入学时掌握的软件开发技术水平参差不齐,部分学生缺少开发设计软件所需要的基本编程能力、基础核心支撑课程知识点的实际情况提出的。我们希望通过大量的实例强化训练和有针对性的讨论辅导,为学生顺利学习、理解和掌握“专业方向领域的知识点”打下坚实基础,为提高学生分析问题、解决问题的能力提供技术平台支撑,具体目标如下:
1) 通过该实践课程的学习,向学生灌输高质量程序设计的观念,使学生具备实际的编程能力,具备学习新语言的基本素质。
2) 通过该实践课程的学习,使学生在熟练掌握语言技能的同时,深入理解算法、数据结构以及与平台(Windows和Linux)有关的进程和网络编程的基础知识,并能够自觉关心软件质量,包括软件的正确性、效率、易用性、可读性(可理解性)、可扩展性和可复用性等。
2.2主要观点
本实践课程强调学生的主体地位,教师的指导作用,采用讲座、小班讨论和实验相结合的方式进行。通过一门常用语言(C++)和两个常用平台(Windows和Linux),培养学生综合运用已学知识的能力,使其深入理解程序工作的本质,为以后解决各种大型实际问题打下坚实的实践基础。实践课程的基本构成是:9次×3小时讲座+6次×3小时实践讨论+实验。
实践内容按专题组织,以C++作为程序设计语言、以Linux/Windows为实践平台,共设置涵盖编译原理、数据结构和算法、操作系统和网络编程等核心基础课程在内的9个专题。每个专题的课程形式包括讲座、实验、实验报告和讨论课4个环节。实践内容的研究、确立和整合围绕以下指导思想进行:
1) 通过动手实践深入理解软件开发基础理论。
2) 提取核心知识点,压缩课时,消除各传统课程之间的隔阂,以适应软件工程硕士学制短和学科基础差别大的现实要求,讲座内容以“专题”进行。实践的题材包括练习、实验和典型案例分析等,实践的手段包括一读、二写、三总结。强调程序设计规范,确保技能的系统性和规范性。
设置讲座的目的是要把各专题核心知识点的来龙去脉介绍给学生,使学生对目前程序设计的关键技术和基础知识有个整体印象。因为虽然目前软件设计技术种类繁多,但究其本质,还是超不出软件工程的基本思想。学生在学校不可能完全熟悉每一项技术,但理解常见技术的应用背景和发展原由却是进行相关应用的前提。
设置实验的目的是让学生通过阅读经典代码和自己动手编程去深入理解程序的工作原理,并通过总结做到举一反三。在熟练掌握基本的编程技巧,学会规范化编程的同时,系统地掌握相关的基础理论知识。
设置讨论课的目的是要解决学生基础差别大,相当部分学生基础薄弱的问题,实现个性化教学和辅导。课程讨论分小组进行,每组10~15人,每专题每小组两小时。讨论课主要用来解决该小组学生在自学和实验过程中所遇到的疑难点,并通过讨论这些疑难点,有针对性地对该小组学习作出总结。
为了便于大家的学习和沟通,学院网站为实践课程设立专门的文档下载、上传区和讨论区。学生可以下载与实践相关的各种文档、案例、讲座内容以及经典参考书目;学生也可以通过上传区提交每周的作业,包括编程源代码和实验报告;学生还可以在该区域进行重点、难点的讨论,提出好的建议,便于课程的改进和课程内容的及时更新,做到与时俱进。
9次讲座内容如表1所示,6次实验课的内容如表2所示。
2.3实施原则
为了使实验课的实际效果落实到实处,学生真正能够从中获益,提高软件开发的基本技能,实践课程的执行和实施必须遵循如下4个原则:
1) 一种语言,两个平台,分专题训练[1]。
软件工程实践以C++为基础,因为相比目前流行的C、Java和C#,C++既是面向对象编程,又具有Java和C#不具备的指针和引用等和内存管理相关的比较直观的技术,同时C++在操作系统、设备驱动程序、视频游戏等领域相比上述语言也存在优势。两个平台为Windows或Linux。考虑该实践课程的主要目的是“学生的计算机领域核心的基础知识的掌握和提升”,知识面涉及编程语言、算法、数据结构、操作系统、编译原理和网络等各个方面,实践内容以“专题”进行,同时也要求实践指导老师具有丰富的项目实战经验。
2) 个性分块和统一指导相结合[1]。
所有学生根据具体基础条件分为15人左右一组,设立小组长。各小组根据自身条件,进行强制集中练习,从而保证上机和实践时间。每周各小组具体的训练内容由指导老师根据小组的具体情况分别指定。学生必须在完成老师指定的任务后才能自行决定训练内容。学生也可对指导老师提出学习内容变更建议,但须征得指导老师同意。
3) 分散训练与集中讨论相结合[1]。
学生在每周针对各小组举行的讨论会上可以提问相关问题。指导老师要回答相关问题并对学生上周的作业数量和质量进行评定,并根据小组所有学生的具体情况指定相互帮教的计划,布置下一周的练习内容。指导老师在学生的整个实践过程的作用是指导、监督并对其中的每一个环节进行考核打分,及时发现问题,及时总结解决,确保所有环节落到实处,不流于形式。
4) 坚持考核评审的原则。
考核采用平时成绩与期末笔试相结合的方式,其中平时成绩占总成绩的40%,笔试成绩占总成绩的60%。平时成绩由指导老师根据平时实际情况给出,主要依据是学生每周完成案例代码和实验报告的质量,笔试侧重于代码阅读、设计能力以及基础概念和原理的理解和掌握。
3结语
通过整合课程内容、强调学生自学和教师辅导相结合的方法,我们在有限的课时内达到了补习软件基础知识和学习面向系统软件开发技术的两个教学目标。学生的反馈调查显示本课程体系得到了学生的高度认可和肯定,取得了一定的成效。但是整个软件市场中依然存在着企业招不到合适的高级软件人才,毕业生就业难的供求矛盾,面对软件开发技术知识体系更新换代快的特点,如何培养能够适应市场发展,具有创新意识的高素质软件人才将一直是我们探索研究的重点。
参考文献:
[1] 覃文忠,万金友. 关于软件学院实施“项目驱动”教学模式的探索[J]. 计算机教育,2004(4):57-58.
[2] 南京大学软件学院工程硕士培养方案[S]. 南京:南京大学软件学院,2006.
[3] 北京大学软件与微电子学院工程硕士培养方案[S]. 北京:北京大学软件与微电子学院,2005.
[4] 张广军. 微软院校课程体系设计理念[R]. 北京:北京航空航天大学软件学院,2005.
[5] 北京航空航天大学软件学院软件工程硕士培养方案[S]. 北京:北京航空航天大学软件学院,2004.
[6] Michael L. Scott. Programming Language―Pragmatics[M]. 裘宗燕,译. 北京:电子工业出版社,2005.
[7] Randal E. Bryant. Computer Systems―A Programmer’s Perspective[M]. 龚奕利,译. 北京:中国电力出版社,2004.
[8] Kenneth C. Louden. Programming Language―Principles and Practice[M]. 黄林鹏,译. 北京:电子工业出版社,2004.
Exploration of Practice Model in Software College
SHEN Xue-ping, YUAN Cang-zhou, WANG Hua-feng
手机的软件开发需要语言知识与计算机基础知识。安卓需要Java基础,IOS需要OC基础。
计算机基本知识包括算发与数据结构、操作系统、数字逻辑等基础课。而软件工程专业与计算机科学与技术专业有完整的学习以上知识的方案。
介绍:
1、软件工程:
是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。
一、加强会计专业信息技术类课程建设的必要性
信息技术的发展与应用使得数据与信息的处理方式有了质的变化,会计数据与会计信息也不例外。信息社会对会计人才的要求,除了会计专业知识本身外,对计算机会计毕业论文的操作能力、数据库的应用能力、计算机网络的了解、信息系统的分析设计与实施等相关技术的掌握也有了较高的要求。因此,对会计人才的培养需要从两方面着手:一方面是会计学科知识能力的培养,另一方面是信息技术应用能力的培养。
二、现状与问题
1.会计专业设置信息技术类课程的基本模式。目前,会计专业设置信息技术类课程一般采用的模式是:计算机应用基础+会计应用软件介绍+会计电算化。计算机应用基础:不同的学校在会计专业的计算机应用基础系列课程上的设置可能不同,但均以提高学生的计算机基础知识为目标。会计应用软件介绍:讲授常见的几种会计软件。这门课程的开设可使学生了解常见的会计软件,增强实际操作能力。会计电算化:讲授会计电算化系统的分析、设计、开发、实施、维护与操作的基本原理,或是按财务会计的核算模式讲授会计电算化应用系统的程序设计。但在学生严重欠缺数据库和管理信息系统知识的情况下,讲解会计信息系统的分析、设计、开发与实施等,其效果是比较差的。
2.教学上的问题。
(1)信息技术类课程在教学上与会计专业知识完全分离。由于讲授信息技术类课程的教师大多是计算机专业科班出身,比较缺乏会计专业知识,在教学过程中难以将信息技术与会计知识融会贯通,导致学生难以认识到信息技术对本专业的重要性,并将信息技术与会计知识完全分离。
(2)会计专业课程不涉及信息技术知识。除会计电算化等极少数与信息技术有关的会计专业课程外,大多数会计专业课程不涉及信息技术知识。然而,大多数会计专业课程在信息技术环境下增加了许多新的内容,由于教师缺乏信息技术方面的知识,在课堂上不能补充讲授与信息技术有关的知识,从而使课程的内容比较陈旧,缺乏新观念、新思想、新理论。同时,这类课程的教材的更新速度也比较慢。
(3)实践环节上对信息技术的应用不够重视。在实验室建设方面,一般比较重视建立手工会计模拟实验室,而会计专业的计算机实验室的建设就比较落后,主要表现为计算机网络环境较差、硬件配置较低、软件版本陈旧、开发平台落后、系统更新速度缓慢等。课程设计方面也是重视手工操作而忽视计算机处理流程。
(4)教学手段落后。传统的“黑板"粉笔”的教学手段很难满足信息技术类课程教学的要求。会计软件的演示操作与使用、会计信息系统的案例分析、编程效果的体现、大量数据的分析等均需要在多媒体教室或实验室内完成才能增加上课的信息量,取得好的教学效果。
3.教材问题。目前,适合会计专业教学的信息技术类课程教材很少。有的课程不得已选用计算机专业类教材,在课时、教学内容、实验环节上都可能存在一些问题。有的会计专业的教材如会计电算化,在信息技术内容的安排上比较肤浅、落后,先进性、实用性比较差。与教材配套的教学软件较少,除了一些软件开发商提供的演示软件外,很少有专门的教学软件来支持教学。
4.教师队伍建设需要加强。目前,既精通会计专业知识又具有较强的信息技术应用能力的教师比较少。加强教师队伍建设是提高教学质量的一个非常重要的环节。会计专业与计算机专业的教师在教学中要相互配合,学校通过组织研究一些课题和开发一些软件项目,为教师提供一个沟通与交流的平台,使得原来两个不同专业的教师能通过课题的开发研究,相互学习、共同进步,并能共同承担起会计专业教学中信息技术类课程的建设与教学。
三、会计专业信息技术类课程的设置目标
会计专业信息技术类课程的设置,其目标非常重要。没有一个好的目标,就不可能组织好课程建设。每一个学校可以根据自己的专业定位与实际情况,确定会计专业信息技术类课程设置的目标。
重庆工学院的会计专业信息技术类课程的设置以提高学生以下几种应用能力为目标:计算机基础应用能力!会计软件操作使用能力!会计软件开发能力!会计信息系统分析设计能力!会计软件实施能力。
四、会计专业信息技术类课程的设置
1.计算机基础应用能力的培养。开设《计算机文化基础》、《高级语言程序设计》等课程培养学生的计算机基础应用能力。通过《计算机文化基础》的学习,学生能掌握计算机的基础知识,具有较强的文档处理能力与excel电子表格的制作能力;通过《高级语言程序设计》的学习,学生能具有一定的高级语言编程能力,能通过国家计算机二级考试。
2.会计软件操作使用能力的培养。开设《会计软件概论》课程,使学生掌握当前常见的会计软件的安装、操作流程与使用方法,同时结合已经学过的会计基础知识,更加深入理解相关的会计软件知识。《会计软件概论》学完以后,可视具体情况再增设《会计学基础课程设计》,将手工账务处理与计算机账务处理结合起来进行教学,让学生通过比较,切实感受手工账务处理流程与计算机账务处理流程的差别。
3.会计软件开发能力的培养。开设《会计软件开发技术》、《会计软件开发技术课程设计》等课程,培养学生的会计软件开发能力。
《会计软件开发技术》主要讲授与会计软件开发有关的信息技术,内容涵盖数据库技术、数据库建模技术、计算机网络技术以及较先进的数据库开发平台技术。该门课程的信息技术含量较高,涉及面较广,讲授难度比较大。
学生通过对该门课程的学习,掌握数据库系统的基本概念、数据模型、关系数据库理论基础、sql语句以及数据库设计的内容,这门课程重点讲授microsoft公司的sql server2000的基本操作与使用。同时,还需要重点介绍数据库的建模技术,主要讲授sybase公司的powerdesigner工具。这些工具的使用对培养学生的会计信息系统分析设计能力非常重要。在《会计软件开发技术》这门课程中,还需要结合信息系统常见的网络结构讲授计算机网络的基本知识。在掌握了较好的数据库基础知识的前提下,讲授windows程序设计的基本内容,为了使学生能尽快地进入角色,我们选取了powerbuilder开发工具。
4.会计信息系统分析设计能力的培养。开设《管理信息系统》、《会计信息系统分析与设计》等课程培养学生的会计信息系统分析设计能力。《管理信息系统》主要讲授管理信息系统有关的基本概念、方法、结构和功能。通过学习,加深学生对信息系统的理论认识,
--> 掌握信息系统的基础理论、信息系统的战略规划和开发方法、信息系统的系统分析设计与实施的基本内容,了解面向具体对象的系统开发方法以及信息系统的管理、决策支持系统、信息系统的发展和对未来的影响等理论。
《会计信息系统分析与设计》在《管理信息系统》课程的基础上,进一步讲授针对会计信息系统的分析与设计方法,内容涉及会计信息系统各个主要子系统的业务处理流程分析、数据处理流程分析、数据属性分析、数据字典的设计、数据的输入输出分析设计、系统物理配置方案设计等。
同时,结合《会计软件开发技术》课程的知识,利用powerdesigner工具对会计信息系统各个主要子系统的数据模型进行分析与设计,在sql server2000数据库中建立相应的数据表,利用powerbuilder工具进行输入输出的界面设计与编程。
5.会计软件实施能力的培养。开设《会计信息系统案例分析》课程,并在毕业设计过程中,挑选一些学生进行会计信息系统软件分析、设计、开发与实施方向的毕业设计,培养学生的会计软件实施能力。
《会计信息系统案例分析》不是讲解会计软件的特点与使用,而是通过精选会计软件案例,结合《会计信息系统分析与设计》和《会计软件开发技术》课程的知识,深入分析会计信息系统中的经典模块,主要包括分析数据处理流程图、数据字典的设计、系统输入输出设计特点、典型的源程序、模块测试等内容。同时结合案例,讲授其在企业中的实施过程与系统维护。
五、结束语
苹果软件开发的具体步骤如下:
硬件环境准备:苹果系列的电脑必须是雪豹以上版本的操作系统,购买Xcode软件。基础知识准备:苹果软件开发使用Objective-C语言,是苹果公司将标准C重新封装使用面向对象的思路进行的改进版本。开工:好的创意开始软件开发,工作在Xcode上进行。软件开发完成后在Xcode上进行虚拟测试,也可以在IPAD上进行实际测试。在IPAD上测试需要将IPAD绑定帐号,测试完成就可以。软件:测试好的软件到软件商店进行申报。首先注册开发者的证书,提供软件和相关说明,提供银行帐号。
(来源:文章屋网 )
苏州大学软件工程专业以计算机科学与技术学科为基础,强调软件开发的工程性,使学生在掌握计算机科学与技术方面知识和技能的基础上熟练掌握从事软件需求分析、软件设计、软件测试、软件维护和软件项目管理等工作所必需的基础知识、基本方法和基本技能,突出对学生专业知识和专业技能的培养,培养能够从事软件开发、测试、维护和软件项目管理的高级专门人才。
其主干课程有高等数学、大学物理、物理实验、线性代数、概率论与数理统计、程序设计语言、数据结构、离散数学、操作系统、编译技术、软件工程概论、统一建模语言、软件体系结构、软件需求和软件项目管理等。
(来源:文章屋网 )
1合作模式
.NET软件开发方向校企合作模式核心内容是以课程置换和融合的方式,将微软最新的.NET课程加入专业教学之中。由微软提供最新的与.NET相关课程的资源,授课采用“基础+专题”的形式,即各门课的大部分基础知识由通过培训的校内教师完成,每门课再开设若干专题,以微软培训讲师为主校内教师为辅共同完成。在实践教学方面,在校内建立微软实训室并由微软提供丰富的实训机会。学生通过对微软相关课程的学习,可以考取微软的相关证书,如微软认证技术专家(MCTS,分Web、Windows、分布式、SQL Server、BizTalk等方向),微软认证专业开发人员(MCPD),微软认证IT专家(MCITP),微软认证架构师(MCA)。目前侧重于MCTS的Web应用、Windows应用和数据库应用。从实践的情况来看,效果良好。计划扩展系统管理、信息管理、网络安全、信息安全等方向。
2培养方案
计算机应用型人才的培养,要首先培养高素质专
业技术分析、设计、开发、维护、应用、服务和管理人才,着重培养学生的工程素养,其次才是创新人才。
所谓工程素养,就是学生不仅要具备相应的技术,即专业知识,还要具备相应工程(行业、领域)的知识与经验,更重要的是要在理论等方面具备敏捷学习的能力。
本专业方向是与微软合作的.NET软件开发方向,目标是培养应用型工程科技人才,特别注重学生软件开发实践能力的培养。该专业的学生在学习阶段通过参加微软的认证考试还可获得相关的微软国际认证。其特色在于培养与国际接轨的多层次、实用型、复合型的软件领域专门人才。
2.1设计思想与原则
以“基础知识―应用能力―综合素质”为主线,即适度的基础知识+较强的实践/动手/应用能力+较好的综合素质,以市场对人才的需求为导向,以学以致用为原则,设计.NET软件开发方向培养方案。目标是要建立面向岗位技能的课程体系,引入来自于软件生产企业的项目作为案例教学和实训的内容,实施立体化的实践训练模式,构筑企业化的软件开发流程。
2.2知识结构分布
在整个培养方案中,专业基础课、专业方向课、专业选修课和专业实践教学环节共104个学分,占所有学分的60.5%,通识课程(主要集中在数学、英语和政治)50个学分,占29.1%;素质教育课程(注重文理渗透)18个学分,占10.4%。专业教育、通识教育与素质教育基本呈6∶3∶1的关系,如图1(a)所示。三者之间的学分能否按7∶2∶1的关系分布,是值得
进一步探讨的问题。专业基础课、专业方向课和专业选修课共88个学分,专业教育分布如图1(b)所示。这三者之间的学分可否按5∶3∶2的关系分布,也是值得进一步探讨的问题。另外,在专业教育中,专业实验/实践占44.2%,与专业理论教育基本呈5∶4的关系,如图1(c)所示。这样既突出应用型人才的培养,又突出综合素质的培养,且有良好的发展后劲,不至于只培养学生成为技能型的人才。
2.3各学期学分数统计
新培养方案各个学期的学分数统计如表1所示。该统计不包含各类实践教学与素质教育选修课,它们分散在各个学期,尤其是毕业实习与毕业设计(论文)主要分布在第7、8个学期。
为让休息近3个月的“高中毕业生”尽快熟悉大学生活,继续保持良好的学习习惯,尽早树立专业意识和接触专业知识,我们在第1个学期分别加大了普通教育课程(如英语和数学)的学时和专业基础课程的学时。第2个学期学分的减少,目的是为了让学生有更充分的时间去准备CET-4考试。让学生尽早通过CET-4,从而有利于学生减轻思想负担,有更多的时间投入专业知识学习。专业基础课集中在第3个学期,目的是让学生打好专业基础,提早从第4个学期开始进入专业方向课程的学习。在专业课程方面,大二、大三尤其注重学生专业能力的培养,在专业课的88个学分中,占到了68个学分,比例高达77.3%。
2.4理论、实验、实践课时统计与对比
新培养方案与以前的软件工程专业的培养方案在理论、实验、实践等方面的对比如表2所示。
从表2可以看出,改革后,所有专业课程的实验课时都有不同程度的增加,尤其是专业选修课的实验课时提高最多,达13%。主要原因是微软的课程重实训,理论与实验基本是1∶1的关系。
3专业课程体系
微软设计了一套以.NET平台软件开发作为技术主线、面向岗位技能的完整课程体系。该课程体系针对岗位技能要求将课程组织成模块,并规划出最佳学习路线,对学生的专业学习形成一个连续、一致的培养过程,引导学生系统地学习从而达到企业需要的岗位应用技能。
如何将微软的课程体系有机地融入到适合我们学院和学生特点的培养方案之中,是在设计新的微软软件开发方向的专业课程体系时所需要考虑的首要问题。可以根据文献[1-2]提出的独立学院培养大学生计算机应用型人才的参考课程体系模型和在文献[3]的基础上来设计新的专业课程体系。
3.1设计思想
以培养专业素养为核心,构建以“基础性、先进性、应用性”为特征的专业课程体系。新的课程体系要达到通过对学生实施连续、一致、多应用、不间断的专业能力培养,从而加强学生的专业素养,培养他们成为应用型工程科技人才的目的。新的课程体系要形成一条主线,防止单纯追求局部体系的完善。
整个课程体系按照“上手快、重实战;多应用、不间断”的思想,保证每个学期至少都有微软的课程,着重逐步提高学生的软件开发与设计能力和工程素养。具体做法是:
1) 以软件开发与设计为主线,全新设计该专业方向的课程体系。显著的特点是在原来的软件工程专业的课程体系基础上,删除所有与硬件相关的课程和其他与.NET软件开发关系不大的课程,并将重新调整后的微软课程体系有机地融入其中,同时增设与之配套的课程。
2) 引入微软.NET软件开发技能课程,培养学生软件开发的专业技术技能。这些课程突出相关开发工具环境的熟练应用,注重技能的实践性和应用性。
3) 引入微软的软件开发实践实训案例教学思想和课程,培养学生的专业工程技术和解决实际问题的经验。这些实践实训课程面向应用,强调软件开发过程的规范、协作、知识技能的综合运用和经验积累。
4) 对于微软的相关课程,同步配以案例项目的综合实践。帮助学生加深对所学技术知识的理解,把握.NET应用软件的程序框架,掌握软件开发过程中涉及的分析、设计、编码能力,培养学生的工程素养。
3.2第1~4学期内容
新的专业课程体系第1~4学期只包含专业基础课和专业方向课。具体课程分布如表3所示。
面向对象程序设计由原来的周8学时减为周5学时。语言类课程的教学,要轻语法,重设计与应用,即教学内容适当淡化语法细节,强调程序的总体结构、程序的构建、编译和运行调式过程、程序基本控制结构、程序模块思想(函数)、面向对象程序设计的基本思想。然后在此基础上开设C#程序设计和
.NET Framework程序设计,一则强化面向对象程序设计思想,同时引导学生逐步进入.NET程序设计课程。
有了语言的功底,尤其是有了运用语言进行程序设计的能力,学习数据结构就会事半功倍,加上算法设计与分析,就会相得益彰,为程序设计或者是软件开发打下良好的基础。另外,计算机组成原理之后上计算机操作系统,数据库基础之后上SQL Server数据库开发与实现,通过.NET Framework程序设计的承前启后作用,逐步引入数据访问技术-、Web应用开发-、基于.NET Framework的Windows应用开发,分成3个学期完成,见表4。这样课程之间既有很好的衔接,又能保证每门课程都有明确的专业技能培养目标。
3.3第5~7学期内容
新的专业课程体系第5~7学期包含专业基础课、专业方向课和专业选修课。具体课程分布如表4所示。专业方向课程既包含软件架构设计,同时包含对算法的设计与分析,在方向上分为Web、Windows应用、网络和测试,同时涵盖多媒体技术与图像处理。在第6个学期引入微软实训,第7个学期开设案例教学。
在新的课程体系中,有10门课程是属于微软的课程,同时新增了6门与整个课程体系配套的专业课程和1门新的实践课程(微软实训)。这17门专业课程占该专业方向所有专业课程的50%。
随着技术的更新换代,可以通过修改专业选修课的方法来保持专业方向的持续发展和与时俱进,而其他方面的课程则相对稳定。
要着力培养学生对这些知识的灵活运用,并用来解决实际问题。对于这些知识的考核,应当要改革传统的考核方式,轻笔试,重上机、实验、程序设计或者课程设计等。要他们参与到高年级同学的实践或者虚拟/实际的项目中,解决特定而具体的问题。
3.4实践教学
构建以“一体化、分阶段、多层次”为特征的实践教学体系。实践教学有多种形式,主要包括上机、实验、课程设计、专业实践、微软实训、毕业设计等环节。在专业基础课、专业方向课和专业选修课共88个学分中,实验课时占30个学分,比例为34.1%。加上实践教学环节与专业相关的16个学分,专业实践教学体系共46个学分,占整个培养方案172个学分的26.7%,达到了25%的要求。
鼓励对主干课程不仅要进行课内的上机或实验,还着重要学生进行课外的课程设计并占总成绩的较大比例。要抓好专业实践和微软实训两个关键的实践教学环节。
毕业设计(论文)是培养学生综合运用所学知识,分析和解决实际问题、加强工程素养、增强创新意识、提高独立工作能力的重要途径。为切实提高学生的实践动手能力和工程素养,实现把学生培养成应用型工程科技人才的目标,我们改革了毕业设计(论文)的内容和组织形式,时间可贯穿大学4年,集中在大三、大四。该环节的学分可由专业课题小论文、课程设计、作品、教研教改、社会调查、学科竞赛、科技发明(专利)及与专业相关的职业资格证书等组成。对选做毕业设计(论文)的学生实行准入制。在毕业设计(论文)过程中,要加强它的过程监督、提高它的水平与质量。
在实践教学过程中,要注重发现、培养优秀学生,把他们吸纳到教学、教研教改、科研和项目中来,形成以点带面辐射式的良好影响。
4结语
任何高校,其本质就是培育高等人才的摇篮。独立学院不要一味去强调与其他类型的学校(如高职院,一、二本公办学校等)的区别,也不要陷于自己是“另类”学校的泥潭。笔者认为独立学院要坚持“一个中心,两个基本点”的指导思想,即以教学研究为中心,以课堂、实验两个为基本点。
市场需求实践能力强的人才,应用型人才培养定
位不仅需要上手快,而且还需要能实战、后劲足的人才。提高就业竞争力,提高就业率和提高就业质量需要能用、好用的人才。目前学生就业是一个非常严峻的现实问题,但可以肯定,只要学生有过硬的技术水平,良好的工程素养和人文素养,那么就业肯定是不成问题的。所以我们要想方设法在整个大学4年中,对学生实施连续、一致、多应用、不间断的专业能力培养,从而加强学生的专业素养,培养他们成为应用型人才。
学校要深刻掌握独立学院学生的特点,结合独立学院的实际情况和未来发展需要,尤其要与所服务区域的改革发展紧密结合。对于中山学院来讲,就是要紧密围绕“珠江三角洲地区改革发展规划纲要(2008―2020年)”,在培养学生的理论知识与实践动手能力两个方面找到适合独立学院发展的平衡点。核心就是培养的学生要满足“三适应”的特点,即把学生培养成适应学生自身特点、适应市场、适应发展的应用型人才。
参考文献:
[1] 周艳明. 独立学院计算机专业参考课程体系[J]. 计算机教育,2008(20):66-69.
[2] 周艳明,傅瑜. 浅谈大学计算机应用型人才培养课程体系[C]∥全国高校软件工程专业教育年会组委会. 全国高校软件工程专业教育年会论文集(2007). 北京:高等教育出版社,2008:205-208.
[3] 教育部高等学校计算机科学与技术教学指导委员会. 高等学校计算机科学与技术专业发展战略研究报告暨专业规范(试行)[M]. 北京:高等教育出版社,2006:248-270.
A Course System of .NET Software Development Through School-enterprise Cooperation
ZHOU Yanming, FU Yu, LI Wensheng
摘 要:针对实践性较强的软件开发类课程教学中存在的问题,提出引入MOOC翻转课堂模式,在实践过程中有针对性地对学生进行引导,强调 “以学生自学为主,教师引导为辅,在实践中锻炼学生动手能力”。
关键词 :MOOC;翻转课堂;软件开发;动手能力
第一作者简介:周树森,男,讲师,研究方向为机器学习、多媒体分析,zhoushusen@aliyun.com。
0 引 言
近年来,MOOC(massive open online course,大规模开放式在线课程)对教育界产生了较大的影响[1]。如今,任何人都可以在任何一个有互联网的地方学习适合自己的在线课程。翻转课堂是指学生在课余时间观看在线教学视频,在课堂上做作业,遇到问题则向老师和同学请教,这是一种与传统的“教师白天在教室上课,学生晚上回家做作业”方式相反的课堂模式[2]。MOOC与翻转课堂相结合,既可以满足学生的个性化学习需求,又可以在课堂上训练学生思考和交流的能力。教师在软件开发类课程教学过程中发现,很多学生只会死记硬背,靠自己的短时记忆应付考试,编写代码和调试代码的能力欠缺,有的学生甚至到本科毕业也没有写过几行代码。
1 问题分析
以地方本科院校计算机专业为例,一方面,学生的就业率比较低,很多学生毕业后被迫转行,不再从事计算机相关工作;另一方面,我国软件开发类岗位需求量比较大,待遇也比较好,好多企业都招不到合适的程序员。形成这种反差的根本原因是大多数计算机类毕业生动手能力比较弱,而企业需要的是入职后无需培训就能直接工作的员工,这直接造成了很多应用能力欠缺的学生毕业即失业。
2 基于MOOC的翻转课堂简介
MOOC是一种新型的大规模开放网络课程,具有易于使用、费用低廉、覆盖人群广、支持自主学习、学习资源丰富等优点[3],现在几个主要的MOOC平台已拥有数百万注册用户。有了MOOC课堂,学生可以在世界范围内学习自己喜欢的教授主持的相关课程。这是否意味着普通地方高校的普通教师将面临下岗的局面呢?当然不是!MOOC教学的一个最大缺陷就是不能跟学生进行面对面的讨论交流。教师可以让学生在课下自主学习适合自己的MOOC视频,然后在课上积极引导学生讨论某个具体应用实例的实现,帮助学生解答疑难问题,这就是基于MOOC的翻转课堂模式。
中国在线教育从2013年开始集中爆发,平均每天有2.6家在线教育公司诞生。截至2014年9月,获得投资的在线教育企业已经超过60家,其中15家是2014年刚上线的项目,预计2015年中国在线教育市场规模将达1200亿元人民币。各个高校也积极行动,建设开放网络课程,探讨课堂模式创新的实际效果[4]。
和许多新生事物一样,MOOC也是有缺陷的[1],那就是教师与学生、学生与学生之间缺乏有效的、实时的互动。基于MOOC的翻转课堂恰恰弥补了这个不足,大学的翻转课堂可以增进师生互动,还能够及时解决问题,启发学生的创造力。
当然,这种先自学MOOC材料,后课堂讨论的翻转方式也有其不足之处,例如,受限于硬件条件,在大班教学中很难展开,部分学生不会事先自学MOOC材料等。但是,这是一种教育理念的根本性改变,在实践过程中,高校要根据自身的实际情况进行改革,否则效果不会太好。
3 基于MOOC的翻转课堂教学实践
对于实践性比较强的软件开发类课程,教学对象是计算机专业高年级本科生。在教学过程中我们发现,学生的动手能力比较弱,很多学生对代码“望而生畏”。
3.1 提供适合学生的优质MOOC 课程
虽然互联网上已经存在很多MOOC课程,但是找到一个适合自己学习的MOOC课程是比较有难度的,原因有以下几个方面。
(1)教师所讲授课程的教学目的与已存在的MOOC课程的教学目的有偏差。
(2)学生的基础薄弱,很难跟上已存在的MOOC课程的讲课节奏。
教师应该基于讲授课程的教学目的,针对所教学生的基础和接受能力,录制相应的教学视频并上传到网络上供学生课下观看;同时,也可以提供多个MOOC课程供学生参考。
3.2 小班教学,加强师生互动
基于MOOC的翻转课堂的优势在于,可以增进师生互动,及时为每一个学生解决问题,启发学生的创造力。若课堂人数太多,教师在上课过程中很难照顾到每个学生的需求,所以,翻转课堂必须实行小班教学。根据笔者的经验,课堂人数不能多于40人。
翻转课堂的目的是让学生课下学习基础知识,课上来讨论和答疑。教师可以引导学生讨论某个具体应用系统实例的实现,将学生引入该应用系统的需求分析和建模中,然后进行软件体系结构设计这类具体问题的讨论。
在实践过程中,最大的问题是学生从小到大接受的都是应试教育,习惯于上课听课,课下做作业,并且大多数学生不会主动向老师提问,对于课堂上的问题,即使自己会回答,也是被动地等到老师点到名字后才回答。
针对这个问题,教师可以多引导学生改变惯性思维,鼓励学生主动发言,对主动发言的学生进行表扬。另外,在考核机制上,向主动发言、提出有代表性问题的同学倾斜,为其课堂表现加分。这样可以充分调动学生的积极性,让学生变被动为主动,真正做到师生互动,锻炼学生的表达能力、创造能力和分析问题解决问题的能力。
3.3 加强监督,引导学生自学
MOOC和翻转课堂都是舶来品,直接拿到中国的课堂上使用肯定会水土不服。中国学生接受的是填鸭式教学,大多数学生在学习的过程中没有什么乐趣可言,只是在老师和家长的强压下学习。到了大学后,学习只是为了通过每门课的考试,顺利拿到毕业证。在这种功利思想的影响下,又有多少人会按照要求在业余时间学习MOOC教程呢?当然,也有比较好学的学生能够理解翻转课堂的教育理念并在课下自觉学习,但毕竟是少数。
针对学生自控能力比较差的问题,笔者认为教师应该加强监督。教师在上课时设置提问或小测试环节,对学生的基础知识掌握情况进行检查,对没有很好掌握基础知识的同学酌情扣除相应的课堂表现分数。这种监督方式可以很好地督促学生自觉利用课余时间学习基础知识。
另外,还应该发挥网络时代的优势,设置课程在线答疑界面,让学生在课下学习的过程中,对于不理解的问题,随时通过在线答疑界面与老师沟通,这样可以很好地引导学生进行自学,避免学生被某个知识点卡住时失去兴趣或者没有信心继续自学。
3.4 实战教学,答辩考试
学生一般只关心自己期末考试能考多少分,不关心自己的实践能力。但是,当学生踏上社会的时候,公司关心的是他们能否开发实用软件。
为了适应社会的需求,解决学校所学非公司所需的矛盾,教师应该在以下几个方面进行调整。
(1)在讲授实践性比较强的软件开发类课程时,可以引导学生循序渐进地实现一个小的实用软件。
(2)在考核权重的设置上,应该加大平日课堂表现得分的比重,引导学生在课下认真学习打好基础、课上好好表现积极参与,通过日积月累的方式逐渐增强自己的软件开发能力,由量变到质变,而不是临时抱佛脚。
(3)在期末考试时,将传统的卷面考试变成答辩式考试。教师要求学生开发一个实用软件,撰写软件开发的说明文档,制作幻灯片,然后每人都上台作报告,向老师和同学展示自己所做的软件功能、开发用到的核心技术,并现场演示软件。最后,由老师和同学现场提问,根据软件性能和答辩情况对其打分。这种考核方式可以很好地避免学生死记硬背、临时抱佛脚来应付考试的弊病。另外,答辩可以锻炼学生的软件开发实战能力、语言表达能力和临场发挥能力。
通过日常上课过程中的引导、训练以及最终以检测软件开发能力为目的的答辩式考试,学生能够学习到很多软件开发的实战经验,为其能够顺利从一个毕业生转变成公司的合格员工打好基础。
4 结 语
实践性较强的软件开发类课程教学应该以培养学生的动手能力为目标,增强学生解决现实应用问题的能力。引入基于MOOC的翻转课堂模式,可以让学生更好地利用课余时间,基于互联网进行基础知识的学习,从而可以让教师在课堂上有更多的时间对学生进行相关实践应用能力的培养,这对培养合格的计算机相关专业人才有重要意义。2012级计算机科学与技术专业的学生反馈显示,在基于MOOC的翻转课堂模式培养下,大多数学生提高了学习软件开发的兴趣,积极利用MOOC资源自觉充电,在线上平台进行沟通,不断完善自己开发的软件。学生的自学能力和分析问题解决问题的能力不断提高,能够更好地适应社会、服务社会。同时,激发了授课教师对教学的思考,促使教师加深对所授内容广度和深度的理解,从而解答学生提出的各种各样的问题,形成更加浓厚的学术氛围。
参考文献:
[1] 伍民友, 过敏意. 论MOOC及未来教育趋势[J]. 计算机教育, 2013(20): 5-8.
[2] 凡妙然. 基于MOOC的翻转课堂在高校教学中的应用[J]. 软件导刊, 2014(9): 189-191.
一、引言
软件工程是一个新兴专业,主要目标是培养工程型、应用型的专业软件人才。随着素质教育改革的不断推进,软件工程专业的建设也面临着全新考验。软件工程建设重在实践,只有在不断的实践中才能提升学生的技术和技能,为社会提供适用的专业软件人才。本文结合近年来我院软件工程专业的建设实践,探讨校企融合下应用型软件工程实践教育模式的改革,旨在培养具有动手实践能力和创新意识、能很好地适应市场需要的高素质软件工程应用型创新人才。
二、应用型软件人才培养模式
软件工程专业以计算机科学与技术学科为基础,强调软件开发的工程性,要求学生在掌握计算机科学与技术方面知识和技能的基础上,进一步熟练掌握从事软件需求分析、软件设计、软件测试、软件维护和软件项目管理等工作所必需的基础知识、基本方法和基本技能,突出对学生专业知识和专业技能的培养[1],使学生成为能够从事软件开发、测试、维护和软件项目管理的高级专门人才。
1.强调专业实际应用能力的培养。通过高校、企业双方的合作融合,引入实训机制,形成以“3+1”模式为框架、产学一体化为特色的应用型软件工程专业人才实践与创新能力培养平台,并把在企业培养的1年时间分散在学生大学四年的学习过程中,使学生能不断接触软件行业与企业[2],循序渐进,逐步加深学生对行业的认识与理解。
2.目的是形成“工程化教学—课程实验教学—基地实习实训—真实项目开发”的培养过程,建立“课程实践—项目实训—项目开发”的教学、实训模式,引导学生树立系统、科学的工程项目概念。
3.由学校和企业双方共同研究制订实践教学方案、共同实施,目的是提高学生的动手能力以及解决实际问题的能力,使学生毕业后能很快适应软件企业的要求[3]。
4.每学年根据教学计划以及教学实施的具体情况,在大一至大三期间,请合作企业选派资深工程师来校开设相关技术讲座,并选择部分专业课程由合作企业选派师资负责课程实践教学、实训的具体实施,学生在大四的时候再集中到合作企业进行强化训练。通过改革软件工程专业的人才培养模式,结合“3+1”合作模式,借助企业的平台,按学期逐步推进、锻炼和提高学生的实践能力和综合素质,锻炼学生适应社会的需要,使学生能不断接触软件行业与企业,使其观念及早融入社会,循序渐进地加深学生对软件行业的认识与理解[4],逐步形成“课程实践—项目实训—项目开发”的教学、实训模式。
三、实训体系构建
通过高校、企业双方合作融合,将实训引入软件工程专业的本科教学中,探索校企融合下应用型软件工程教育模式的改革。以JAVA专业实训为例,我们的实训目标是提高学生的动手能力以及解决实际问题的能力,使学生毕业后能尽快适应软件企业的要求。在企业项目经理和学院教师的共同带领下,通过实训中的具体项目,将原来分散的专业知识系统化,把整个项目的实施过程,贯穿于学生理论知识学习的始终[5],使学生获得综合性应用锻炼,进一步了解标准软件开发过程与规范,掌握软件开发的基本技能,锻炼其团队协作精神。
1.实训内容和阶段。我们的实训分两个阶段进行:第一个阶段的校内专业实训为基础实训,一般以基础性的、业务简单的项目为案例,训练重点放在编码实现上。第二个阶段的企业工程实践为大中型项目实训,一般由合作企业从其案例库中选择其之前实践过的真实项目作为案例,内容涵盖一个软件项目开发的整个生命周期,目的是通过项目的强化训练过程,提升学生的基础知识、基本技能和基础技术,熟悉企业级的运行环境和框架。两个阶段的实训都贯穿软件项目开发的整个生命周期,包括项目管理、需求分析、技术储备、系统设计、编码、测试、提交、项目评审等阶段,但第一个阶段侧重于技术储备,体验软件项目的开发过程,培养学生掌握软件项目的调试方法和技术[6]。以JAVA实训为例,在技术储备阶段,第二个阶段侧重于项目的开发流程和各类项目文档,培养学生养成良好的编程习惯、了解行业前沿应用状况和项目开发的业务流程和知识,提高学生的表达、沟通和团队协作能力,进而养成良好的职业习惯。通过项目的实战训练过程,提升学生的基础知识、基本技能和基础技术,熟悉企业级的运行环境和框架。通过完成案例项目的需求分析、系统设计、编码、集成、测试和项目评审过程的实践,了解软件项目的开发流程和规范。
2.实训目标。我们的实训目标按阶段的不同,具体内容也有所区别,要求学生实现的分段目标的侧重点也有所不同。(1)第一个阶段的校内短期实训:该阶段属于基础实训,在实训过程中引入单元测试技术、软件工程、质量管理和ISO体系概念,让学生了解到企业软件开发对质量的要求和管理方法,提高学员对自己编写的软件的测试和调试能力,修正和增强学员对软件测试和质量的意识。在实训过程中引入新的Web标准、HTML5、CSS3、Canva、SVG等,为学生将来进入互联网或移动开发领域,进行基础知识、基本概念等的技术储备。(2)第二个阶段的企业工程实践:该阶段为大中型项目实训,在大三第二学期校内短期的基础实训、学生技术发展规划的基础上,按照Java方向、Android和PHP前端开发三个不同的专业方向,在合作企业实训基地分组进行项目实训。期间结合加强项目训练和创新创业指导,培养学生的敬业精神、团队精神;以及如何把个人价值观和公司的价值观进行有效的衔接。以JAVA实训为例,该阶段的实训目标如表3所示。
3.预期成效分析。通过校企融合,借助于校企合作平台,探索应用型软件工程实践教育教学模式:一是能使学生获得实践经验,提高学生的综合素质和就业竞争力;二是可为学生提供更多的与企业接触机会,创造就业机会[7],扩大学生的就业渠道;三是可以为高校双师型教师的成长提供平台和环境。(1)提高学生的综合素质和就业竞争力。有关统计信息表明:我国软件专业毕业生,无论是本科软件工程专业,还是高职软件专业,其就业率和专业对口率都不是很高;另一方面,企业又普遍反映找不到合适的软件人才。之所以会出现这样的“两难”局面[8],纠其原因在于目前高校软件专业的培养与企业对软件人才的需求不对称,学生在学校所学的知识和技能无法紧跟市场,实践动手能力方面相对较弱,与企业直接顶岗的要求存在比较大的差距。校企合作模式,能在一定程度上弥补这方面的不足。(2)提升学生的就业能力,扩大学生的就业渠道。软件工程的发展与信息社会的发展和需求是息息相关的,而目前高校该专业的教育模式仍然集中于过多过泛的基础教育,教学方式仍然沿袭以理论讲授为主的模式,导致学生的实践能力与理论能力失衡[8]。因此,我们通过校企融合,整合优化培养方案,围绕培养目标,深化软件人才培养模式改革。从第二学年开始,每个学年度请合作企业的资深工程师为同学们进行实践训练,通过实训,使同学们逐步对大型软件的开发流程和方法有一个初步的了解,体验软件开发的工作氛围,逐渐树立基本的职业观念,以便到毕业时,能很好地适应软件开发相关技术岗位,提升就业能力,创造就业机会,扩大学生的就业渠道。(3)培养“双师型”教师。在校企合作的基础上,选派部分教师到企业参与相关项目开发实践,培养教师的“双师”素质,提升教师的工程经历和软件项目设计、开发经验,了解大中型软件项目设计开发过程,提高教师实际工程研发能力,为双师型教师的成长提供平台和环境,使专业教师得到工程能力的锻炼和提高,为以后“任务驱动、项目导向”培养模式的开展提前做好师资储备。此外,通过校企融合模式,培养应用型软件工程人才,还可为企业培养更多优秀的应用型软件人才。
四、结语
大学培养出来的软件人才在层次上来说应该是中高级的,他们受过良好的基础教育和理论教育,但由于传统的闭门造车式的培养模式,缺少实践的机会,而且所教授的理论和技术跟不上企业的现实需求,导致传统学历教育模式培养出的软件工程专业学生往往是理论知识有余而实践操作经验不足,毕业生不能够马上和完全适应企业的需要。因此,当前高校软件产业人才培养与实际需要存在着一定程度的脱节,学历教育与不断变化的市场需求的矛盾相当突出。而校企融合模式下应用型软件人才培养模式可以在一定程度上缓解这一矛盾,为企业培养更多优秀的应用型软件人才。
作者:黄茹芬 单位:闽南师范大学
参考文献:
[1]柳婵娟,邹海林.基于校企合作的应用型软件工程人才培养模式研究[J].计算机教育,2011,(24):9-12.
[2]张广泉,杨季文.面向校企合作的软件工程人才培养模式探讨与实践[J].计算机教育,2008,(21):29-32.
[3]张丽.软件工程本科专业校企合作人才培养模式实践[J].农业网络信息,2015,(8):137-139.
[4]徐洪智,覃遵跃.校企合作共建软件工程专业实践教学体系[J].实验室研究与探索,2013,32(6):128-130,160.
[5]王爱民,谷川.软件工程专业校企合作实践教学模式研究[J].实验技术与管理,2012,29(1):143-145.
中图分类号:G623.58 文献标识码:A 文章编号:1672-3791(2014)04(b)-0183-01
对于EET课程,在软件外包专业(群)中的定位是非常重要的。通过参与项目的开发,学生能理解软件开发思想,熟悉软件项目开发的基本流程,熟悉企业主流开发技术(HTML/CSS/JavaScript/C#///SQLServer2008等);熟练使用设计、开发工具(Visual studio 2010等),强化需求分析、设计、编码、测试的技能,提高编码熟练度,熟悉项目开发文档和表格的撰写;增强解决处理问题的能力。能体验企业对不同的岗位要求,强化自我领导力与团队协作的能力,积累企业项目开发经验。
职业能力培养目标:(1)能掌握软件项目开发所用到的主流编程技术,并进行项目模块编码。(2)能准确理解用户需求说明书、需求规格说明书、系统设计说明书。(3)能基本编制子模块的详细设计说明书、测试用例、测试数据。能够根据测试用例准确执行测试,对测试数据进行基本分析,并基本完成测试报告。
1 课程现状及存在问题
EET(企业经验实训)作为软件技术专业大二下学期的一门综合型的实训课程。它是多门软件技术课程的综合实战运用,也为后期的顶岗实习和就业积累企业项目开发的经验。在EET课程中,,如何把基础课程、专业课程的知识点穿来,让学生能够融会贯通的使用技术,并且能够开发企业实战项目。因为EET课程的前导课程,都是学生在大一、大二上学期学习的课程,如果把这些课程比喻成“点”的话,那么EET课程首先把这些点连起来,形成“线”,然后把线连成“面”,面就是软件技术的整个开发流程。掌握了这个“面”,让学生能够把握住整个企业项目。
2 教学条件
本课程标准引入的小项目是学生比较熟悉的项目,更容易学生操作,而大项目是来自企业的实际项目,更利于学生职业能力的培养。在教学活动中,引导学生主动积极学习,注重实训教学参考手册的开发和应用。注重实训平台软件、课程资源库等常用课程资源和现代化教学资源的开发和利用,这些资源有利于创设形象生动的工作情境,激发学生的学习兴趣,促进学生对知识的理解和掌握。积极开发和利用网络课程资源,充分利用诸如电子书籍、电子期刊、数据库、数字图书馆、教育网站和电子论坛等网络信息资源,使教学从单一媒体向多种媒体转变;教学活动从信息的单向传递向双向交换转变;学生单独学习向合作学习转变。同时应积极创造条件搭建远程教学平台,扩大课程资源的交互空间。产学合作开发实验实训课程资源,充分利用本行业典型的企业资源,加强产学合作,建立实习实训基地,实践工学交替,满足学生的实习实训需求,同时为学生的就业,创造机会。
教学环境:60座机房二个,能够运行VS 2010,SQLSERVER2008等项目开发环境的计算机实验室;服务器2台,用于教学平台、数据库服务器、课程资源服务器、版本管理服务器、项目演示服务器;实验室也要有多媒体教学设备。
3 技术串讲阶段的教学改革主要内容
EET课程教学实施主要分为三个阶段:技术串讲、框架开发、项目实战。其中,第一阶段是技术串讲。技术串讲就是把所有前导课程的技术重点和难点,在有限的时间里,系统的讲解一次,为后面两个阶段打好基础。技术串讲阶段,通过对开发需要了解的基础知识进行串讲,给学员建立宏观体系,明确各部分知识在整个体系中的位置,理解各部分知识在体系中的作用;在复习基础知识时注重对各部分知识中的重点、难点进行讲解,最后以一个综合实例将基础知识有机联系在一起,为后续的框架项目开发打下坚实的基础。
4 预期成效
预期成效1:给软件技术专业的学生建立宏观体系,让学生明确各部分知识在整个体系中的位置,理解各部分软件技术知识在软件开发体系中的作用。
预期成效2:让学生了解软件开发框架的作用与意义,熟悉开发框架的技术细节,能够在完整的开发规范指导下,实际开发一个小型的项目,充分锻炼技术能力,掌握基于框架的开发方法。
预期成效3:上通过大型项目的开发,熟悉项目开发流程,理解项目管理的基本理念,学会需求分析及系统设计方法,提高技术的使用熟练度,充分锻炼团队开发的协作能力,理解测试过程及Bug跟踪的流程,从而积累真实的项目开发经验,拉近与企业用人需求的距离。
5 结论
通过4个月实训过程,让学生掌握一线实践技能,学习和实践公司规范化、专业化、标准化的管理运作、业务流程及项目开发流程,感受公司对员工知识结构、技术技能、团队合作的要求,体验企业文化氛围,积累项目开发经验。在课程的前导技术串讲阶段,学生将之前所学专业课程进行技术串讲,形成知识面,掌握软件开发的能力,为后期的项目开发奠定基础。
1 背景与理念
CDIO工教育模式是近年来国际工程教育改革的最新成果。CDIO代表构思(Conceive)、设计(Design)、实现(Implement)和运作(Operate),它以产品研发到产品运行的生命周期为载体,让学生以主动的、实践的、课程之间有机联系的方式学习工程。
CDIO包括了三个核心文件:1个愿景、1个大纲和12条标准。它的愿景为学生提供一种强调工程基础的、建立在真实世界的产品和系统的构思-设计-实现-运行(CDIO)过程的背景环境基础上的工程教育。它的大纲将工程师必须具备的工程基础知识、个人能力、人际团队能力和整个CDIO全过程能力以逐级细化的方式表达出来,使工程教育改革具有更加明确的方向性、系统性。它的12条标准对整个模式的实施和检验进行了系统的、全面的指引,使得工程教育改革具体化、可操作、可测量,并对学生和教师都具有重要指导意义。。
《软件工程与UML建模》课程是软件技术专业提高综合能力的一门课程,它在学生具有对局部问题的解决能力的基础上,培养学生解决全局问题的能力,训练和积累“工程经验”。CDIO工程教育模式,特别适合《软件工程与UML建模》这类综合性课程,构思(Conceive)、设计(Design)、实现(Implement)和运作(Operate)正对应了软件开发流程的整个生命周期。
2 教学改革与实践
CDIO 工程教育理念提出了系统的能力培养教学大纲,包括 4 类一级能力、17 组二级能力(如表 1 所示)、以及 73 种具体能力,范围涵盖了学生的理论知识,个人素质和发展能力、协作能力以及大系统适应和调控能力。
表1 CDIO能力大纲
一级能力
二级能力
1 技术知识和推理能力
1.1 基础科学知识
1.2 核心工程基础知识
1.3 高级工程基础知识
2 个人职业技能和职业道德
2.1 工程推理和解决问题
2.2 实验中探寻知识
2.3 系统思维
2.4 个人技能和态度
2.5 职业技能和道德
3 人际交往技能:团队协作和交流
3.1 团队精神
3.2 交流
3.3 外语交流
4 企业和社会的构思,设计,实施和运行(CDIO)系统
4.1 外部和社会环境
4.2 企业及商业环境
4.3 构思与工程系统(conceiving and engineering system)
4.4 设计
4.5 实施
4.6 运行
2.1 基础知识
对于软件工程与UML建模课程,基础知识的教学是至关重要的。在这个环节我们采取的策略主要体现在两个方面:一是,根据学生的实际情况,选择教学的重点内容,选择适当的案例贯穿教的内容;二是,在面授过程中,充分利用网络资源有效地培养学生获取信息、掌握信息、运用信息和处理信息的能力,同时采取启发式教学方法,调动学习者的主动性和参与性,为应用能力的提高提供保证。
2.2 个人职业能力
在课程教学中,通过案例的实现培养学生的职业技能,同时培养其职业道德。首先,我们要帮助学生树立一种思想――工程必须经过多次回顾、反复修正、不断创造及深入探索,是一种不断追求卓越的过程。其次,提倡自主的构思、设计、实践和操作。鼓励学生把软件工程的思想时时刻刻的用于自己平时的各项软件相关的活动中,把各种课程设计和校内实践活动都当作实质的工程项目,自行安排进度和控制。这种方式能更好的提升学生的工程能力。
2.3 人际团队能力
任何一个优秀的作品都是一个集体智慧的结晶,软件开发更是离不开软对的协作和交流。我们在课程中强调小组的概念,无论是学生在课堂讲解,还是课程实践项目,均以组为单位,锻炼学生的协作能力。同时对组里的学生角色进行周期调换,让学生理解项目组中的不同角色,从不同角度增加协作和沟通能力。课程评价中也以组为单位,这样增加了学生的小组意识。
2.4 工程系统能力
在上述三点的基础上,最终需要着手于项目的设计、实施,保证学生的知识和能力的双重获取,旨在提高学生的“创新能力”和“具有工程实践能力” 的要求,达到市场所需的软件工程师的标准。因此,项目的选择在整个教学过程中起着举足轻重的作用。
项目要求既能涵盖尽可能完整的理论要求,又能让学生通过努力的情况下顺利完成。我们主要采取以下几种方式进行项目的选择:一是,通过校企合作企业开发完毕的现有小型项目,指导学生再次开发,这是比较好的一种开发项目选择,每个评审阶段可以将学生的文档与项目原文档比较学习,学生能更有针对性的学习和理解各个阶段文档的重要性和写作规范;二是,承接小型项目开发。这个项目开发课题是没有先例可查,具有一定的风险和挑战难度,对于没有软件工程经验的学生来说,具有一定的挑战意义,对教师的个人技术素质要求也比较高,实施起来难道相对比较大;三是,从自身需求获得项目需求,比如学生宿舍管理、课程管理,教师管理系统,小型图书管理系统等等。这样的项目一般相对需求简单,易于理解,相对容易实施。
3 总结
本文主要是借鉴CDIO工程教育理念,以软件工程与UML建模课程为载体,培养学生CDIO所要求具备的多种能力。通过对学生进行访谈发现,学生普遍反映这种融合CDIO理念的教学方法非常适合他们的学习,案例教学很好的促进了他们对基础知识的学习,并且对以工程化的思想开发软件有了深刻的认识,基于项目和基于小组学习的实践教学的安排促进了学生的团队协作和沟通能力的提高,实际的软件开发能力和项目组织与管理的能力也得到了极大的锻炼和提高。
参考文献:
[1]CDIO简介.http:///
[2]韩智.基于 CDIO 理念的软件工程课程教学改革[J].2010
2什么是计算机工程能力的核心
什么才是我们软件开发教育的核心知识架构,怎样才能培养学生可持续发展的核心竞争力?我们调查过一些非常高水准的软件开发者,发现他们往往在底层软件上持之以恒地进行长时间深刻的锻炼,然后在未接触的新领域才能非常迅速地掌握核心。例如,一个非计算机专业的系统分析员曾经“只”在DOS这种原始的操作系统下玩了10年,甚至自己写过一个汉化的DOS。他只有书本上的一点点网络知识时,就用一两天时间解决了一个学通信的研究生1个月都不能解决的网络故障。这是一个典型的例子,他并没有“实际的”网络经验,什么使得他如此轻松地进入了新的领域呢?而另一个曾就职于vmware、google等顶级公司的程序员,在Unix下只用C语言做了10年系统级编程。当用Java,C++甚至是javascript时,其学习时间只是1天,很快就比做了几年专门java编程的程序员还精通。如何才是软件开发人员的本质力量?什么才能让他们在变化万千的新技术面前屹立不倒,乘风破浪?
2.1计算机工程能力
我们认为计算机工程能力包含两方面的内容:(1)核心知识架构;(2)计算机的思维方式。什么是核心知识架构呢?是反应该领域最基本规律和支撑技术的知识。简单地说就是传统的操作系统、编译、数据库。操作系统将硬件、软件、高级语言和汇编融汇在一起,它几乎包括了软件工程中所有重要的因素。举一个简单的例子,似乎只有面向对象这种“高级东西”才有的虚函数运用,其实在Linux中就有相应的虚文件系统。操作系统是最为复杂的计算机工程之一。编译融汇了大量的算法,而且能让大家真正看“穿”语言的外表,深入到其内里,体现了最根本的计算机技术。其优化技术,也深刻地和硬件交融在一起,很好体现了底层风范。数据库,不仅是运用算法最多的地方,甚至是超越操作系统的一个复杂的系统,从缓存技术到i/o优化,到索引,再到事务处理,无一不是反映计算机最深刻规律。大家可以发现,所谓核心知识架构,都具有两个特点,反映本质规律,体现软硬融汇交织。也只有这样,才能建立下面谈到的“计算机思维方式”。
2.2核心知识架构
为什么我们没包括一些新兴的语言和技术呢?似乎它们很“实用”。而且已经出现的问题是,按照传统科目和方式学习后,学生在企业什么都不会。这也正是大家关注工程教育的初衷。为什么不强调这些新兴实用技术的教育还在强调“古老”的“基础”。计算机领域一个显著的特点是,表面上知识更新非常快,新技术、语言层出不穷。这很容易导致当我们发现学生能力欠缺时,将问题归罪于新技术的学习不得力,知识结构老化。但其实目前的问题可以从另外一个角度考虑,是否是基础教育不得力?分析国外著名大学,如斯坦福、伯克利的课程,我们发现两个特点:(1)关键的基础课程,如操作系统、编译原理、数据库,始终是其最重要的课程,并没有过分追逐各种“新潮”技术。(2)学生一学期能修的课程非常有限,一般为3门课。而国内却呈现相反的状况,比如编译原理被降到了选修课的角色,新潮课程层出不穷,一个学生二年级一学期要修13门课。在这种走马观花的状况下,计算机这种具有强烈“手艺”色彩和工程实践的学科,被完全纸上谈兵化。而一些可怜的实验内容,还被学生的复制拷贝所湮没。我们认为,恰恰是这种情况,使得基础核心知识教育没有工程化,没有充分动手,导致了基础知识教育某种程度上的巨大失败。从以下鲜明的对比可以窥见问题的端倪:国内学生反映操作系统课程是文科课程(只需要背条款考试即可);而相对地,国外著名高校操作系统课程要求学生实现“小”操作系统。国内数据库只讲其应用(如大量讲解sql等运用,sql即使非计算机专业人士也很容易学习,这也是它被发明的初衷)。斯坦福的数据库课程中有一门需要实现一个数据库系统。在笔者走访的计算机工程上优秀的人才,发现其共同的特点就是在诸如操作系统或数据库上都有很深入的学习经历,比如前面提及的自己构建过汉化DOS系统,或者在Unix下,做内核以及驱动很多年等。而当他们接触新技术时,之前深刻的经验和淬炼的思维就让他们如虎添翼,快人一等。更有甚者,国外真正的最顶级专家,都是在这些领域有无与伦比水平的专家,从delphi的缔造者,转战到微软并入主.net平台的开发,也可看到雄厚的底层知识和能力的巨大作用。所以“老”知识并不是障碍,而是通向天堂的阶梯。究其原因,就涉及到工程能力的第2个方面,计算机思维方式。
2.3计算机思维方式
对非专业人士它是很抽象的概念,而对真正专业人士,这又是一个非常鲜活的概念。这里限于篇幅,我们只举一个简单的例子。面对在C++中外部代码如何直接修改私有变量的问题,计算机的思维方式就是:对象也是放在内存中,只要能拿到对象的地址,并知道对象的布局,那么就可修改。而没有建立这种思维的人,就完全被高级语言的语法所左右,无从下手。一句话,无法看到本质,没有从下而上的底层思维。核心知识课程的有效深入教学和计算机思维方式建立有何直接关系呢?我们认为核心知识因为其反应了计算机本质规律,而且从底层建立起来,所以对其深入掌握运用后,它从开始的逼迫到最后的陶冶,最终潜移默化地让受众建立起“计算机思维方式”。而这正是计算机工程师安身立命之本,就如同音乐家有其独特的音乐思维方式一样。为什么诸如java之类的课程于建立计算机基本思维不太合适呢?因为它更高层,无法让学生看到最下面。而唯有彻底、深刻和系统的底层淬炼,才能真正建立起“计算机思维方式”。
3如何打造强大的计算机工程能力
大家一方面指责基础课程的“空洞”、“无用”、“陈旧”;另一方面在不断开设的海量新课和技术中压得学生更加远离编程,远离实践。即使能培养出熟悉某种语言的学生,也无法看到他们和培训学校有何不同。实训也似乎没有根本解决问题,我们在实践中发现,往往是那些自己醉心于编程的学生最后有着卓越的表现。让基础知识能支撑和指导实践,而非仅仅“符号”,并引导学生进行高效的实践。
3.1“3块连一线”,4门基础课程整合打造核心知识架构我们将4门基本课程进行贯通式整合,着力塑造学生的“计算机思维”。下层的是3门基础课(在上一小节探讨了其在工程能力训练上不可替代的重要地位),对软件开发环境产生支撑。而软件开发环境又通过精心的设计和工程实践,从应用角度将3门课程所学的知识串联起来。从而将基础知识和工程开发更有机整合在一起。首先,阐述为什么将以上课程整合在一起的理由。要回答这个问题,必须先回答什么东西支撑了优秀程序员。在我们的调查人员中,无一例外地都具有很深厚的底层软件开发背景。有长期从DOS的Hack入手的;有长期从事Unix内核编程的;有从Windows的driver起步的;有以反汇编逆向为根基的。长期在最底层的经历,使他们建立了最真实和能触摸的系统观,能以计算机的方式思考。所以面临新技术时,他们能透过新形式很快把握其精髓,深刻地把握其实质。“太阳下面没有真正的新事物”,例如号称21世纪最新的重要的软件技术AOP(AspectOrientedProgramming,AOP),其实在20世纪60年代就出现在了汇编一级的软件技术中,它本质就是钩子技术的系统化。在底层的软件世界,我们不仅能够用到那些所谓的最新的技术,而且能看到其本质(我们可能就是用机器码自己构建出来的,而不被新技术的华丽外衣障目)。这些使得具有底层经验的开发者,更有创造力,更能创造,也更能洞察迷乱后的本质,庖丁解牛,解决那些异常复杂的工程问题。举一个笔者遇到的真实例子,一个具有深刻底层经验的程序员(一直只有C语言和操作系统编程经验)和一个只有深刻Java经验的程序员,在同时学习Javascript的闭包概念时,后者一个礼拜都还有些似是而非。前者很快就能自如运用,且最后指点了后者1个小时,后者顿时豁然开朗。这是典型的“新”与“老”,上层和底层经验在面对新事物时的对比。既然底层软件赋予我们如此强大的能力,那么哪些是底层软件呢?大家公认,操作系统、编译和数据库由来就是计算机工程自身的根基。所以,我们必须将这3门课涉及的知识好好淬炼。而如何将3门课的知识和我们日常的软件开发联系起来呢?如何用它们指导平时程序的开发呢(我们大多数是开发用户级软件,不会开发内核软件,因此许多人认为几乎整个在内核中的操作系统对用户级软件开发无从指导)?另一门课,《软件开发环境》解决了这一问题。它有一条主线,通过反汇编将C语言和汇编串联起来,让系统级的知识从高级语言的面纱下展现出来。同时用逆向工程这把庖丁之刃,将编译、链接、面向对象等软件开发中的重要知识块剖剔,让底层与上层贯通一气。而逆向的技术技巧,本身也是非常高级的软件开发技术。因此,我们用“3块连一线”来总结4门课的关系是最好不过了。为什么不纳入语言课程,比如C/C++语言?从我们的工程经验来看,语言只是计算机原理和思想的载体,是表述方式而已。为了表述形式而专门花大力气是不值得的。比如,国外的著名大学很多都不开设语言课,在其他课程作业中必须用C语言编程,学生们就在那里锻炼了。真正的语言的力量并非来自语言本身,而是底层知识为支撑的项目锻炼。我们的思路是以构建式完成大量的完整系统的编写,这样就很好锻炼了软件开发和工程能力。同时,“软件开发环境”本身从逆向层面也对语言有了深刻的剖析,这是纯粹的语言课难以完成的。另外,从大纲安排上,我们在大一就会让学生用C语言来初步接触程序编写,这时并不适合放入太高级主题。而在教学中,语言的力量已经渗透到一个个工程构建中,随风潜入夜了。为什么不纳入算法课程?从某种程度上,“程序就是算法与数据结构吗”?我们认为在系统中运用算法,算法才具有生命力。而编译、操作系统、数据库以及我们专门设立的一些课程设计将全面运用各种算法和数据结构。在实战中运用并学习提升才是王道。这也正是构建式学习的精髓所在,这也正是探索式学习培养学生的创造能力的精髓所在。算法课已经为我们准备了元件,就看你怎么去组装甚至改造。
3.2以构建主义的思路,深度实践的风格改革课程
前面我们论述了底层知识架构的重要性,那么怎么来将它们实际地建立在学生的工程实践中呢?简单地说就是“构建一个具体而微的系统”。讲操作系统就构建一个小操作系统,讲编译原理就构建一个小编译器。同时,设计一些跨度较大的课程设计覆盖这些课程的一些重点内容。构建完整系统本身就可真实淬炼工程能力,而这些内容的复杂性、难度以及运用知识点的广度,本身就超越了简单的企业实训项目,在培养人才方面具有系统性、完整性、挑战性独特优点。我们需要的是运用团队的思路和现代软件工程的手段,将其开发过程管理发起来,从而熟悉企业级开发的工具链,将软件工程学到的知识贯通到实作中。这也回答了“和以前相似的强调基础课程教育,什么特点使得我们的做法能获得强大的工程能力?”这一问题。以前更多注重理论知识的学习,而现在的做法是回归计算机工程的自身科学规律———实践为王。
3.3改革考核评价标准,充分强调动手实践