徐 慧, 顾 颀,周建美
(南通大学 计算机科学与技术学院,江苏 南通 226019)
我国有300 多所高校开设软件工程专业,每年培养30余万毕业生[1],2017年软件人才职位需求居职业招聘岗位之首,但从就业结果来看,毕业生就业能力与企业需求之间,存在较大差距。如何才能解决人才需求的难题,培养出具有较强实践能力的软件工程人才呢?参加工程教育认证被认为是一个很好的途径。
《工程教育认证标准(2016 版)》[2]对学生毕业要求的12条中,与专业课程教学直接关联的有以下5点。
(1)工程知识:能够将数学、自然科学、工程基础和专业知识用于解决复杂工程问题。
(2)问题分析:能够应用数学、自然科学和工程科学的基本原理,识别、表达、研究、分析复杂工程问题,以获得有效结论。
(3)设计/开发解决方案:能够设计解决复杂工程问题的解决方案,设计满足特定需求的系统、单元(部件)或工艺流程,并能够在设计环节中体现创新意识。
(4)研究:能够基于科学原理并采用科学方法研究复杂工程问题,包括设计实验、分析与解释数据,并通过信息综合得到合理有效的结论。
(5)使用现代工具:能够针对复杂工程问题,开发、选择与使用恰当的技术、资源、现代工程工具和信息技术工具,包括对复杂工程问题的预测与模拟,并能够理解其局限性。
上述5点,明确表明除系统的理论学习外,实践教学环节起到至关重要的作用。标准对计算机类专业的补充规定中对实践教学进一步细化,指出实践教学体系要包括“实验课程、课程设计、现场实习”,还要开展“科技创新、社会实践等多种形式的实践活动”,由此可见,认证标准将培养学生的工程实践能力放在十分重要的地位。
智慧来源于知识,但知识不会自然而然地达成智慧,需要通过实践活动对知识“内化”和“活化”,起关键作用的是人的实践经验[3]。课程设计是与课程教学紧密相关的实践环节,是学生获得专业实践技能的重要一步。
课程设计,是课程的综合性实践教学环节,会用到课程的许多知识点,引导学生从全局的观点认识课程的精髓和本质,指导学生将所学的知识综合应用于软件开发过程中。课程设计具有以下特点:
(1)综合性。项目设计需要综合整个课程知识,甚至多个学科,可以培养学生综合运用知识的能力。
(2)开放性。学生围绕问题进行探索,学习形式不再局限于课堂与教师的指导。
(3)自主性。时间较长,学生自由、自主地分组学习,根据自己的理解发挥想象力,从而促进学生创造能力的发展。
课程设计一般安排在课程结束后的学期末,时长1周或2周。实施过程见图1。
图1 课程设计过程
教师发布课程设计任务,说明课程设计要求,进行必要的考勤与巡视,对学生问题进行必要的解答,对课设成果进行检查,系统演示与问答,审阅课设报告;根据出勤情况、系统验收情况及报告,给出成绩。
学生选择课设任务,查阅资料,分析、设计、编码、实现;课设中,出现问题,可能会求助于指导教师;系统设计完成后,接受指导教师的检查与现场问答;根据要求,撰写课程设计报告。
课程设计中存在的异常现象有:
(1)方案少[4]。一个题目,少则十几人,多则几十人做,导致学生偷懒、抄袭。
(2)进度异常。课程设计,是一个包括需求分析、数据结构设计、算法设计、编码、调试与测试、撰写报告等环节的循序渐进的过程。有些学生在验收那天突然完成整个设计,但对过程中涉及的问题,一问三不知,只会运行程序[5]。
(3)报告质量差[4]。部分学生的设计报告内容只是源程序和运行截图,且版面质量差、作图不规范。
(4)放羊式指导。整个过程几乎没有监控管理工作,也鲜有指导工作,放任学生自行完成。
课程设计达不到预期目标,引起教师的深思,因此各种方法被提出,以改进课设,如项目驱动的课程设计[6]、启发式教学的课程设计[7]、串联式课程设计[8]等。事实表明,这些理念与方法还不足以解决问题。
课设效果差的主要原因有:
(1)不够重视。课程设计一般为考查课,不需要考试,能力差的学生怕吃苦,经常拷贝应付。教师给予实践性教学环节的通过率较高,部分学生存在侥幸心理,不认真对待课设。
(2)过程监督不力。课设一般安排在课程结束后或学期末。此时,教师的业务工作较多,无暇顾及。部分教师认为,课程设计不同于上课,应该由学生自主完成,无须多管。
课设第一天,教师通常会进行开工讲解,如讲什么内容以及讲解的效果,对学生课设有很大的影响。讲解除任务布置外,建议讲清以下内容。
1)目的与要求。
目的与要求通常写在课程设计大纲及实施计划书中,必须向学生阐述与说明,使学生明白课程设计的目的是什么,最低要求是什么,做成什么样是好的课程设计。
2)课程设计任务。
教师因学生能力的差异性,教师给出难易程度不一的任务,供学生自主选择,是被普遍采纳的方法。教师任务讲解不能讲得太简单,示范性、启迪性地剖析与讲解任务,分析设计要点,提示任务所需的知识,帮助学生判断任务的难易程度及正确选择任务。
3)设计内容。
实践应用研究集中在基础教育阶段,高等教育阶段研究较少 从时区轴线图可以看出,高中物理、小学数学、高中数学等学科关于深度学习的思维能力研究较多,并从2012年延续至近期。在深度参与聚类内容下,有关高职学生学习方式的研究在2017年才略有。
该部分要讲清楚整个课设的任务,引导学生遵循系统开发的方法进行课设工作,如数据结构的课程设计,需设计的内容有:
(1)问题分析和任务定义:充分分析和理解问题,明确问题要做什么?限制条件是什么?
(2)逻辑设计:根据问题描述中涉及的操作对象定义相应的数据类型,按照以数据结构为中心的原则划分模块,画出模块之间的调用关系图。
(3)详细设计:定义相应的存储结构,写出主要算法的伪代码,并对数据结构和基本操作作出进一步求精。
(4)程序编码:把详细设计的结果进一步求精为程序设计语言程序。
(5)程序调试与测试:以增量的方式自底向上划分模块。调试正确后,认真整理源程序及其注释,形成格式和风格良好的源程序清单和结果。
(6)结果分析:分析逻辑正确性,分析算法的时间、空间复杂性。
(7)编写课程设计报告。
4)进度安排。
进度安排是设计任务时间上的执行序列。明确的进度安排,不仅进一步强调了课设工作内容,也给学生每天的工作确立了目标。说明要凸显设计,引导学生以正确的步骤进行系统设计。例如1周的数据结构课程设计,任务进度表见表1。
5)报告要求。
具有撰写设计报告或技术总结报告的能力,不仅是专业认证中明确提出的要求,也是学生必须具备的基本能力。要提高学生课设报告的质量,必须明确并仔细讲解报告要求,报告要求见表2。
6)成绩评定方法。
人的向好性,决定绝大多数学生会向好成绩努力。课设开始,有必要讲清成绩的评定标准。
(1)及格:原创性少,系统逻辑正确,进度推进正常,报告合格。
表1 数据结构课程设计进度表
表2 报告内容及示例
(2)优秀:有创新,系统质量好,进度推进正常,报告优秀。
(3)不及格、中、良,在这两者之间。
课设的主体是学生,但课设达不到教学目的,其责任主体则是教师。加强过程管理和过程监控,可以解决现在课程设计中的许多问题,也可以按专业认证标准要求的工程知识、问题分析、研究、设计与解决方案及工具使用等方面考量学生。
1)检查内容。
系统开发需经过分析、设计、编码、调试测试等过程,基于进度计划(见表1),进行阶段性成果检查,引导学生按部就班地以规范的步骤进行,体会系统开发的流程。教师每天进行阶段性成果检查,最后进行汇总,掌握每个学生课程设计的进度。
2)汇总表。
一周课程设计的汇总表见表3。任务、完成1、完成2、完成3依次在课设的第2、3、4天前提交。教师在线布置任务作业,学生在线提交,教师每天早晨汇总后,到机房检查、回馈和指导。
表3 进度检查表
每日的填写是每天工作的小结,促进学生主观上尽力多做。
3)检查对认证标准中要求的覆盖。
阶段性的检查,促使学生用已学的知识分析、设计求解课设任务,不偷工减料。
通过加强课程设计的过程监督,可以保障课程设计覆盖“工程教育认证12条基本要求”中的5条,即工程知识、问题分析、研究、设计与解决方案和使用现代工具。
(1)课设中,要求将相关的数学、自然科学、工程基础和专业知识,用于问题建模、表达、算法设计;
(2)程序设计中,完全原创很少,查阅文献必不可少,学生通过查阅文献与已有的知识,设计方案;
(3)为验证程序的逻辑正确和性能分析,需建立测试模型,对实验结果进行正确性、复杂性分析;
(4)课设中,用到多种工具,用编程及调试工具创建系统,用文字编辑、排版及用图工具撰写报告。
有了阶段性检查,系统验收工作中的问题可以减少许多,重点是通过系统演示,查看系统的性能、了解学生的创新性工作。
成绩评定中,除了考虑任务难度与工作量、系统性能、学生的创新性工作与报告质量外,建议学生给出“自评分”。绝大多数学生对照成绩标准,能根据自己的工作给出一个较“客观”的分数。一方面让学生知道,成绩不是教师给的,是自己做出来的;另一方面,教师通过自评分,断定该学生工作内容、态度与报告水准。
工程教育认证明确指出,课程设计是学生获得实践技能的途径之一,可以培养学生的独立思考能力、讲述交流能力、规范文档的撰写能力,提高学生的积极性、创造性与团队协作精神。课程设计覆盖了工程标准中5项学生毕业要求,只有切实做好了,才能取得实效。
[1]刘永彬, 欧阳纯萍, 阳小华, 等. 基于工程教育认证的应用型软件人才培养模式探索[J]. 高教学刊, 2016(15): 62-64.
[2]中国工程教育认证协会秘书处. 工程教育认证工作指南(2016版)[EB/OL]. [2017-07-13]. https://tmpg.fjut.edu.cn/e5/1e/c4513a58654/page.htm.
[3]陈佑清. 论活动与发展之间的相关对应性[J]. 教育研究, 2005(2): 77-82.
[4]周双娥, 胡方家. IT 专业课程设计质量存在问题及解决方案[J]. 计算机教育, 2014(7): 99-102.
[5]张震宇, 郑玉珍,王子辉. 以专业认证为导向的课程教学模式改革[J]. 浙江科技学院学报, 2016, 28(3): 244-249.
[6]朱洁, 王江平, 仝茂海. 计算机网络课程设计的项目驱动式教学改革[J]. 计算机教育,2013(17): 91-94.
[7]陈洁, 赵姝, 刘晓曼, 等. 计算机组成与体系结构课程设计的启发式教学[J]. 计算机教育, 2015(13): 19-22.
[8]林耀进, 林梦雷. 软件工程专业串联式课程设计探索与实践[J]. 南阳师范学院学报, 2015, 14(6): 73-75.