APP下载

任务驱动的实践教学方法与平台研究

2018-11-29刘悦吴军明刘炜张博锋

现代计算机 2018年31期
关键词:方法学程序设计环节

刘悦,吴军明,刘炜,张博锋

(上海大学计算机工程与科学学院,上海200444)

0 引言

程序设计与软件开发类课程是计算机专业的核心课程。其中,《程序设计方法学》课程以程序设计方法为研究对象,它不仅研究各种具体的方法,而且着重研究各种具体方法的共性,涉及规范的全局性方法,以及这些方法的显示背景和理论基础[1]。《程序设计方法学》可对程序设计人员选用具体的程序设计方法起指导作用,而具体的程序设计方法对程序设计工作的质量以及所设计出大程序的质量影响巨大。因此,将《程序设计方法学》作为高等学校计算机软件教学体系中的一门专业选修课,对于培养和提高计算机专业学生程序设计的技能和水平是非常重要的。然而,目前的《程序设计方法学》教材[2-5],主要介绍《程序设计方法学》的原理、概念和定理证明,比较抽象与枯燥,定理和证明难以理解,学生更难以在具体的程序设计过程中使用这些方法。传统的教学过程过分强调教师的地位,忽视学生的主动参与性,造成“满堂灌”现象,大大抑制了学生的兴趣,影响了教学效果。同时,传统的教学中缺少充足的实践环节,学生无法自觉将知识用于指导程序设计,甚至使学生对知识的实用性产生怀疑,而且程序设计能力的培养不是一蹴而就的,需要在长期的实践中提升学生的能力。因此,为了培养学生的计算机程序设计专业素养,提高程序设计与软件开发类课程的教学质量,我们以《程序设计方法学》课程为例,研究实践教学方法和平台,提出任务驱动的多环节实践教学模式。

1 任务驱动的实践教学环节与内容设计

任务驱动教学法是一种教学方式。任务驱动的教与学的方式,能为学生提供体验实践的情境和感悟问题的情境,围绕任务展开学习,以任务的完成结果检验和总结学习过程等,改变学生的学习状态,使学生主动建构探究、实践、思考、运用、解决高智慧的学习体系[6]。在教学实践中,图1所示为任务驱动的多环节实践教学模式,根据学生在不同时期的知识水平和程序设计能力,设计难度和广度递增的任务。

1.1 同步练习,课堂教学实践的有效手段

传统的“填鸭式”教学方法,过分强调教师的地位,教师忽视学生的主动参与性,造成“满堂灌”现象,大大抑制了学生的兴趣,影响了教学效果。在教育界有一句话:“我听,我忘记;我看,有印象;我做,我记住。”因此,在课堂讲授每个知识小节后,通常要给出示例或实例,通过教师演示,帮助学生理解概念,掌握方法。接着设置一个和教师演示类似的任务,让学生自己动手同步完成任务,从而帮助学生巩固所学知识,进一步理解概念和掌握方法。例如在介绍Floyd不变式断言法证明流程图程序的部分正确性时,教师讲授了方法的起源、证明步骤、适应对象后,通过“求两个正整数的最大公约数的流程图程序”实施了“榜样”教学法。学生听了且看了,有一定的印象。然后马上设计一个类似的问题——证明只用加法实现“计算z=[]”的流程图程序的部分正确性。学生在做的过程中,通过小组讨论方式协作完成这个小任务,深入理解Floyd不变式断言法;同时,教师可以及时了解学生的掌握情况,在课堂上及时解决学生的共性问题。

1.2 以有趣的任务为基础,形式多样的课外作业是实践教学的核心

课堂受限于时间,只能设计一些玩具式的任务,不利于学生真正掌握知识。同时,由于遗忘曲线,需要课后再巩固,因此可以以有趣的任务为基础,设计类似表1的形式多样的课外作业。课外作业是课堂教学的有益补充,主要是根据课堂教学进度,配套设置形式多样的课外作业,让学生将课堂所学学以致用。其中,课外实践环节,我们编写了《课外实践指导手册》,每个课堂教学主题为一章节,包括学习入门、一系列的任务和练习以及学习小结。任务和练习设计成既有兴趣、又有难度的问题,如贪吃蛇、俄罗斯方块、八皇后问题、验证歌德巴赫猜想等问题,要求学生用程序设计方法来设计解决方案,既可以激发学生们的学习兴趣,又可以将课堂知识融会贯通用于解决问题。

表1 课外作业的设置

1.3 延伸实践,是实践教学必要和有益的补充

程序设计能力的培养是一个长期过程,可以将《程序设计方法学》的实践延伸到暑期实践和毕业设计,将其作为《程序设计方法学》课程的一个设计型、综合性的实践教学环节。在暑期实践中,将小组软件过程TSP(Team Software Process)思想应用到程序设计和软件开发类课程的实践教学中[7]。该实践环节要求学生综合运用所学知识,从实际生活和工作中发现问题,提出软件项目,在可行性分析的基础上,进行项目立项开发,通过小组分工、进度计划安排、需求分析、系统设计、系统实现、测试、运行等环节,建立一套软件系统。学生在实践经验丰富、动手能力强的教师指导下,以小组协作的方式进行,以软件工程文档、软件包等形式提交自己的设计与实现方案,同时也向其他同学汇报、演示自己的系统。这种相互间的交流和讨论,扩大了学生的视野,锻炼了学生的能力,提高了学生的综合素质。在毕业设计环节,可以将个人软件过程PSP(Per⁃sonal Software Process)应用到程序设计和软件开发类课程的实践教学中。学生个人以PSP方式研发一个软件系统,体验软件开发的全过程。通过延伸实践,不仅可以激发学生的学习兴趣,锻炼学生的动手能力,而且可以培养学生面向实际应用提出问题的意识;提高学生分析问题、解决问题的能力;增强学生的学习兴趣和创新意识,培养学生的创新精神和创新能力;增强学生研究性学习的主动性。

2 面向任务驱动的实践教学与分析平台研发

为了配合任务驱动的实践教学活动,可以利用信息技术来构建课外练习实践平台,以供学生利用程序设计方法进行程序设计实践;构建开放性的互动式网络教学与分析平台,以支持任务驱动的实践教学日常管理,展开教学数据分析。

2.1 构建课外练习实践平台

2.2 构建开放性的互动式网络教学管理与分析平台

(1)功能齐全的互动式网络教学管理

设计与实现教学管理与分析平台可以有助于任务驱动的实践教学活动的开展。在我们的教学活动中,采用B/S架构,C#、ASP.NET和SQL Server 2015技术,在VS 2015集成开发环境下构建了开放性的互动式的《程序设计方法学》网络教学管理与分析平台。该平台为师生提供如图2所示的包括网站首页、课程大纲、师资队伍、课程资源、课程实验、课程作业、在线答疑、在线练习、教研成果和教学分析等功能模块,实现了课程资源的网络化、日常教学工作的自动化、师生交流的及时化,还可以对课程教学情况进行统计与分析,从而为

自建常用程序设计方法的实践平台,可以让学生在平台中能够实践如何在逐步求精、模块化、最弱前置谓词等程序设计方法指导下进行程序设计。在我们的教学中,利用了江西省高性能计算技术重点实验室提供的PAR平台,让学生能够利用PAR平台中的RADL语言描述程序规约,设计算法;利用抽象程序设计语言Apla来刻画抽象程序;利用平台提供的转换器,将Apla抽象程序转换到诸如C++、Java、VB、Delphi等可执行语言,体会软件形式化和自动化生成的全过程。该课程的教学提供更好的网络平台,为教师改进教学方法提供决策支持。

(2)基于ECharts的教学情况分析

教学管理与分析平台支持课程教学的全部环节,可以积累教学过程中的全部数据,包括师生的个人基本信息、师生的互动信息、学生的作业情况、考试成绩等。对于这些丰富的数据,平台可以进行统计分析并采用当今最为流行的可视化技术ECharts,以图表的形式展现数据分析结果。我们的《程序设计方法学》教学分析界面主要包括教学情况总结、师资分析、作业提交分析、互动分析、成绩分析和联动分析六部分内容。

如图3所示,教学情况总结主要是对历年的教学情况表进行查看;师资分析主要用饼状图展现教师的年龄分布、学位分布和职称分布;作业提交分析主要分析每一年作业提交的比例;互动分析即为提问人数情况分析,主要用柱状图展示平均每周提问人数,用折线图展示学期增长情况,可以观察到提问人数的变化;成绩分析模块主要以折线图比较每学期平均绩点、测试平均成绩和平时成绩,从而来观测学生成绩的变化;联动分析主要以散点图的形式对比了每学期的总成绩、平时成绩和学生人数,从而可发现平时成绩与学生总成绩的关联。教学分析平台综合考虑和采用了多种数据图表类型,对存储的教学数据实现可视化分析,用户能够很清楚直观地理解课堂教学情况的统计和分析结果。

图2 平台功能层次图

图3 教学数据分析结果的ECharts可视化展示

3 结语

程序设计与软件开发类课程是计算机专业的重要核心课程,具有理论与实践并重的特点。任务驱动的多环节实践教学模式在《程序设计方法学》课程和中英文授课的软件工程课程中得到应用,实践教学证明该模式能提高课程的教学水平和效果,对培养学生的程序设计和软件开发能力起着良好作用。随着模式的更加广泛地应用,平台将积累更多的教学数据,我们将引入机器学习方法对其进行学习,对教学效果和质量进行全程掌控和提前预警,从而提高教学的智能化水平。

猜你喜欢

方法学程序设计环节
全球首个氢燃料电池汽车碳减排方法学获批
大型学术著作《药理研究方法学》出版发行
必要的环节要写清
基于Visual Studio Code的C语言程序设计实践教学探索
在农民需求迫切的环节上『深耕』
从细节入手,谈PLC程序设计技巧
高职高专院校C语言程序设计教学改革探索
追踪方法学在院前急救护理安全管理中的应用
现代学徒制管理模式及其顶岗实习环节
PLC梯形图程序设计技巧及应用