软件课程设计培训心得体会(软件项目实训及课程设计指导)
软件课程设计培训心得体会(软件项目实训及课程设计指导)(2)理论与实践相结合——"鱼"和"渔"必须兼得这一方面不仅能够提高目前高校计算机类及软件开发类专业的教学质量,另一方面也能够增强学生毕业后就业的竞争力和企业级软件开发中的团队合作意识,提高高校学生的就业率。因为"课程设计"、"项目实训"和"毕业设计"是目前高校学生亲临实践的主要教学环节,在这些教学环节中,学生在收获与项目开发有关的知识同时,也还能够收获阅历和开发经验、收获到对所学习到的课堂知识灵活地应用的能力。因此,它们在提高学生的实践能力与综合素质等方面,具有不可替代的作用。2、为什么要开展"项目实训"、"课程设计"等教学活动(1)"课程设计"、"项目实训"和"毕业设计"是学生亲临实践的主要教学环节目前在许多高校计算机类本科及研
软件项目实训及课程设计指导——明确课程设计的教学环节的意义及了解学生能力的现状1、引言
"课程设计"、"项目实训"和"毕业设计"是目前高校计算机类、软件工程类专业的学生的学生在校期间接触企业实际软件项目开发的主要教学环节,同时也是衡量目前高校计算机及软件开发类专业的教学水平的重要依据,但如何更好地开展这些教学和实践环节以便能够在有限的课时内获得更大的教学效果?提高课程设计的整体教学效果、并为后期的"项目实训"乃至"毕业设计"等教学环节打下良好的知识和技术应用的基础是高校计算机学院及软件学院的教师们必须要思考的一个问题。
作者多年在高校软件学院兼职本科生和研究生的"项目实训"、"课程设计"等校企合作实训类课程的教学指导中,发现目前高校计算机类、软件工程类专业的学生课程设计教学中不仅缺少一类有指导性、实用性和规范性并且与目前企业级应用系统开发相接近的《J2EE核心技术》等课程设计和项目实训类的教学参考资料和教学指导,而且目前企业级软件系统开发中所需要的"流程和规范"、"思想和原则"、"技术和应用"以及"效率和质量"、"协同和协作"等软件工程方面的知识和实用性的技术应用在课程设计中也很少向学生灌输和讲授。
作者结合自身多年的一线教学活动实践和对多所高校软件学院的本科生和研究生的课程设计的教学指导,将通过系列文章为高校计算机及软件开发类专业的师生介绍如何高效、高质量和规范性地开展比如《J2EE核心技术》等课程设计和项目实训类的教学活动。在后续也还将对高质量、高效率、高可靠性等编程进行深入地介绍。
2、为什么要开展"项目实训"、"课程设计"等教学活动
(1)"课程设计"、"项目实训"和"毕业设计"是学生亲临实践的主要教学环节
目前在许多高校计算机类本科及研究生的教学活动的"小学期"中都引入了"课程设计"的教学环节或者教学阶段,这使得高校计算机及软件开发类专业的学生在校期间就能够接触实际的企业级软件系统项目的开发过程和学习企业级软件开发中所应有的最新技术,并尽可能地帮助在校学生缩短与软件开发企业之间在"知识体系"和"技术应用"等方面的用人要求的差距。
这一方面不仅能够提高目前高校计算机类及软件开发类专业的教学质量,另一方面也能够增强学生毕业后就业的竞争力和企业级软件开发中的团队合作意识,提高高校学生的就业率。因为"课程设计"、"项目实训"和"毕业设计"是目前高校学生亲临实践的主要教学环节,在这些教学环节中,学生在收获与项目开发有关的知识同时,也还能够收获阅历和开发经验、收获到对所学习到的课堂知识灵活地应用的能力。因此,它们在提高学生的实践能力与综合素质等方面,具有不可替代的作用。
(2)理论与实践相结合——"鱼"和"渔"必须兼得
目前许多高校计算机及软件开发类专业的课程体系偏重于理论知识的学习,而企业级的软件开发不仅要求开发人员有深厚的知识和技术的积累,也还要求有一定的行业解决方案及开发实践等经验方面的积累。而"项目实训"、"课程设计"等教学活动能够使得学生在校期间就能够接触实际的企业级软件系统项目的开发过程和学习企业级软件开发相关的流程、规范和应用技术、开发工具和测试平台等(下图为在MyEclipse开发工具中所提供的单元测试平台)。
因此,这些教学环节不仅进一步培养高校计算机类及软件开发类专业的学生独立思考、独立解决问题的能力,也让学生学会和掌握独立地解决问题、自主学习的方法——因为高校学生如果只有理论和原理方面的知识是远远不够的、也不能胜任企业级软件开发的用人需求,最终在毕业后也是不满足企业用人的技能要求的——毕竟企业是需要创造社会效益和经济价值。学生只有把所学习到的各种理论知识、原理和规则与具体的项目开发实践相互结合,这才是真正有用的知识——"鱼"和"渔"必须兼得!
(3)校企合作、订单培养实现校企双赢
高校学生缺乏企业级软件系统开发的成长环境、同时团队交流和沟通的能力也比较弱;另外,也还缺少团队合作的环境氛围和意识。而"课程设计"等这样直接接触实践的教学环节为学生提供了一个独立实践的机会,能够让学生将课堂中的课本上的理论知识和实际项目开发实践有机地结合起来,锻炼学生分析和解决实际问题的能力。培养学生在项目开发中团队合作的精神、创新意识和创新能力及解决实际问题的能力。
下面为某个二类大学计算机专业的课程列表,如此培养出的学生既达不到从事计算机科研工作的"深度",也无工程实践"能力"。
3、高校计算机软件开发专业的学生目前所欠缺的知识和技术
(1)实际的企业级项目开发的体验和锻炼
软件开发企业对求职人员的基本要求是需要有"软件项目"开发经历、"Java及J2EE技术平台下的应用开发"或者其他技术平台等项目的开发经验,这对高校大三和大四年级的学生而言如何获得?高校计算机类的专业课程教学重理论和原理但缺少实践,而真正企业级软件应用系统项目开发经验的积累,绝非是一两个课堂小实验或者课后"HelloWorld"形式的编程练习就能够获得和体验到——不经风雨,如何见彩虹?
(2)缺少对所学习过的各种软件工程方面的技术和知识合理地应用的意识和技巧
每个人对于知识不在于其掌握的多少,而在于能否灵活地将所掌握的知识和技术能够加以应用、并能够解决在工作过程中所遇到的各种实际问题。高校各种层次的毕业生只有能够解决在企业经营和实际工作中的各种企业级的问题,才有可能受到企业等用人单位的欢迎——哪个企业也不希望摆个"博士菩萨"供养起来作为企业的"摆设"和"门面"。
因此,这就要求高校学生必须要能够将所学习过的各种软件工程方面的技术和知识,并能够灵活地应用到企业级软件项目的开发过程和实践应用中,提高解决实际问题的能力和技巧。"项目实训"、"课程设计"等这样的教学环节是比较好的一个教学环节和实践机会,高校师生必须要重视"项目实训"、"课程设计"等实践形式的教学环节和真正取得既定的教学效果和达到计划的教学目标。
(3)对于软件开发过程中各种形式的规范和要求体验不多
软件开发是要遵守规范的——如设计的文档化、编码的规范化、软件测试等方面的要求,企业级的应用系统项目并不是代码的"简单堆积",而是要遵守一定的规范——这包括设计的原则、编码规范和测试规约等方面。
软件开发企业需要的是"正规军"类型的开发人员而不是"土八路"式的"编程高手"。作为一位即将成为职业程序员的高校学生所应该具备的软件开发中的各种规范化方面的体验并不多,在校学生如何增强这些方面的意识和积累实际项目开发的经验?"课程设计"、"项目实训"和"毕业设计"等教学形式是主要的实现环节。
在此,作者恳切地希望高校各个专业的学生特别是计算机类及软件开发类专业的学生要重视这些教学环节、并按照指导教师的要求"按时、按量和按质"地完成有关的项目开发;当然,也希望高校计算机学院、软件学院的一线教师不仅要倡导"干中学",也还要"学中干"的教学模式——毕竟985和211高校的计算机学院和国家示范性软件学院培养的学生未来不应该是"修锁匠"或者"裁缝",而是未来的软件工程领域中的高级工程技术人员和管理人员——拒绝培养"土八路"式的"编程高手"!
(4)缺少团队协作、团队交流等形式的开发方式的全方位的体验
今天的大多数软件项目的开发能否获得成功,主要是取决于其团队协作和项目管理的质量,而不仅仅是个人的突出表现——每个成员都是一颗"螺丝钉",团队协作和合作更加重要。当然,对于非常小的项目或者课后作业形式的编程实现来说,不需要太多的交流和协作。但随着项目的复杂性增高和团队成员的增多,彼此之间的交流途径及方式就要值得注意和改进,"土八路"式的"编程高手"越来越不适应企业级开发的需要。
但软件项目开发中的团队协作不仅仅局限于交流,团队协作也就意味着开发组中的不同实体的交互——个人和小组都要朝着共同的目标努力地工作,团队协作通过成果的共享和分享将使得每个成员都能够更快速地达到各自的既定目标。
上面所罗列出的目前高校计算机类、软件工程类专业的学生在教学过程中所欠缺的知识、技术及解决问题的技巧,其实也就是在"课程设计"、"项目实训"和"毕业设计"等教学环节中要达到的主要教学目标和效果。而通过"项目实训"、"课程设计"这个教学环节从低年级开始,就培养学生独立解决问题的能力和独立学习的意识。它一方面能够弥补学生在本学期的知识学习过程中的欠缺,另一方面也能够使得学生对真正的企业项目开发过程和规范有所体验和经历。最终使得学生在职业能力方面能够具有更好的竞争力,提高高校的就业率。