《移动终端程序设计》课程在本科生编程能力培养中的教学实践研究

2018-11-13 11:08杨晓贤张世明朱彬
中国教育信息化·基础教育 2018年8期
关键词:软件工程

杨晓贤 张世明 朱彬

摘 要:本科生编程能力培养是高校软件工程专业的教学核心,也是提高该专业学生就业率的重要保障。文章围绕《移动终端程序设计》课程的教学和实践,介绍本科生编程能力培养的方案和相关探索。该方法为应用技术型高校软件工程专业教学改革提供了实践经验,也为新工科建设提供了参考和借鉴。

关键词:编程能力;软件工程;Android开发;CDIO

中图分类号:G434 文献标志码:B 文章编号:1673-8454(2018)16-0029-04

一、引言

“互联网+”创新创业模式的兴起助推了传统实体经济的发展[1],而移动互联网应用的迅猛发展不仅拓展了传统产品和业务,更获得了巨大的商业效益,例如共享单车、移动支付等。除了传统的软件企业自身人才需求不断增长外,移动互联网在中国的快速发展还带动了大量的人才需求[2] [3],各行各业对移动互联网应用的开发需求与日俱增。由此也带来了新的挑战,各类高校特别是技术应用型院校的软件工程专业亟需改革培养方案和教学计划,着重培养学生的编程能力和逻辑思维能力,加强移动终端软件的开发能力和创新能力,思考如何设计相关课程内容以及如何开展教学实践等问题。为此,上海第二工业大学改革软件工程专业的人才培养模式,一方面强化实践能力训练,关注本科生技术应用能力和社会融合能力;另一方面开设了《移动终端程序设计》课程,旨在提高学生软硬件协同开发能力,奠定其职业发展的坚实基础。

本文将从教学和实践角度围绕课程设计和实施问题,以《移动终端程序设计》课程为例,介绍本科生编程能力培养的方案和相关探索,阐述新型的教与学的关系,为保证教学质量和提高教学效果提供有意义的探索。

二、课程目的

《移动终端程序设计》课程是软件工程专业培养计划中一门重要的课程,课程的总体目标是培养学生的软硬件系统开发能力,一方面熟悉移动应用程序设计的基础理论,另一方面能根据移动设备进行定制开发。通过理论教学和实践开发,为将来学生从事Android手机开发奠定良好的基础。在岗位技能方面,经过大量的上机练习、代码阅读、代码设计、规范化检查,训练学生在Android应用软件方面编写程序的熟练度和规范性;在项目经验的积累方面,通过完成大量的项目案例和阶段项目实战,增加对实际软件项目开发的经验;在职业素质方面,通过项目组角色分配、技术研讨等多种训练手段,培养学生具备良好的职业习惯,实现学生在校即成为准职业人的目标[4]。

本课程要求学生掌握移动互联网时代智能设备上的软件的开发和应用能力,特别是Android平台的程序开发技术,具体包括:熟悉Android环境的开发与部署、手机用户界面的布局方法和常见开发控件的使用,熟练掌握事件处理、数据库存取与共享、多媒体应用等知识,使学生具有配置与部署Android开发环境的能力,运用Android接口技术、多线程技术以及SQLite数据库进行手机播放器开发、电话和短信开发的能力等。

三、课程体系设计

1.先修课程与约束

《移动终端程序设计》课程涉及面向对象程序设计、网络和数据库等多方面的知识。因此,为保障本课程的教学效果和教学质量,需要将《程序设计基础》《数据结构与算法》《数据库系统概论》《Java程序设计》《可视化程序设计》设置为先修课程。例如,要求学生通过《程序设计基础》课程熟练掌握经典分支语句、赋值语句、数组等内容,通过学习《Java程序设计》精通类、对象、封装、线程、文件操作等内容,通过《可视化程序设计》掌握控件、组件、多线程等内容。

2.教学模式

与传统软件编程课程不同的是,《移动终端程序设计》具有明确的软件设计开发目标和硬件运行要求,将学生置身于强烈的目标需求和问题解决中去,不仅能培养其分析问题、解决问题的能力,而且能让在校大学生更快更好地融入社会,及时了解社会需求,增强择业信心。

如图1所示,根据《移动终端程序设计》课程在培养学生实践能力方面的突出特点,本课程采用了教学-实践-补充的模式开展理论与实践交叉互补教学。①理论知识的教学效果将直接影响后期的实践环节,因此如何在理论教学阶段让学生准确掌握基础理论和进阶知识是设计教学模式时考虑的关键点。经过实际摸索,发现课前布置和课堂抽查结合的方法能更有效地让学生理解并掌握重难点知识。例如,布置移动应用需求相关的课前作业和思考題,循序渐进地引导学生思考问题并做好课堂交流准备。课堂上教师采用激励机制鼓励学生主动发言解答课前作业,无论回答是否准确都能增加平时成绩,对于表现优秀的学生则双倍计分。通过这样的形式,理论教学的课堂互动性和学生的学习积极性都得到了显著提高。②实践部分采用上机练习和项目实训两种主要形式进行考评,目标是确保学生能稳扎稳打地应用课程知识。其中,多层次考核包括上机课的限时编程测验,课后练习的创新和改进,项目实训的专家答辩评审等形式。③根据实践过程中暴露出来的问题和技术需求,通过教学网站、FTP、邮件/微信等方式有针对性地进行补充,尤其是前沿的技术和技巧。值得注意的是一些移动开发的共性问题,如多线程、数据存储等知识技巧,一般建议在课堂上向学生反馈或者通过竞赛小组的形式在实践中得到巩固和提高。这种“教学-实践-补充”模式可以在一定程度上提高学生的学习效率和学习能动性,为培养大学生的实践和创新能力提供帮助。

3.理论教学

本课程以Android为教学平台,2学分、32学时。表1给出了具体的教学内容和学时安排。根据分层次教学计划,理论教学内容分为基础要点和进阶高级两个部分,其中序号1-4内容为基础知识部分,序号5-10内容为高级知识部分。由于课程有先修课程规定,因此基础部分总学时共10个学时,而更多教学时间用在高级知识部分共22学时,这也体现了课程的教学核心包括Android事件处理、Intent使用方法、SQLite数据库的使用和图形图像处理等方面的内容。

基础知识部分:①理解安卓开发的基本概念,介绍和巩固Java中的类、对象与异常处理概念;②掌握Android开发环境的安装和配置步骤,Eclipse中创建Android项目步骤以及相关的注意事项,理解Android SDK和ADT插件的用途,了解在应用程序开发过程中可能会使用到的开发工具;③理解Android中应用程序界面设计方法,掌握使用XML和Java代码控制界面的方法,掌握布局管理器和按钮、文本框等基本组件;④理解Activity,掌握它的配置和使用方法,掌握多个Activity和Fragment的使用。

高级知识部分:①了解Intent,掌握Intent使用方法,学会使用Intent过滤器;②了解Android中事件处理的操作原理,掌握Android中主要事件的使用,可以对基本组件进行事件的监听及操作;③了解Android中常见数据存储的特点及操作,掌握Android中SQLite数据库的使用,使用SQLite数据库进行CURD操作;④掌握事件处理流程,学会键盘、触摸等事件的编程方法;⑤ 掌握音频和视频方法,了解Android中常用的绘图类,学会2D图像绘制、图形特效和动画等处理方法。

4.案例教学

在高级知识部分的教学过程中会结合案例进行讲解,例如地理定位与地图展示,基于蓝牙的文件传输、移动点餐系统、课堂测验系统等。案例教学主要关注移动程序结构、用户界面、组件通信、数据存储与访问、后台服务、WiFi管理、Socket、HTTP等方面内容。课堂上会从Android移动应用编程实践角度介绍这些内容的应用,包括案例开发的背景、开发的目的是什么,如何构造设计系统结构,如何设计用户界面,如何进行数据通信?如何进行数据存储和展示等问题,进行循序渐进的讲解。

图2 给出了面向移动开发的案例教学支撑框架。作为基础,首先需要引导学生对教师所给案例进行正确的需求分析,要求在设计层面能给出基础体系结构和主要功能模块。其次,作为核心技术的数据存储和网络通信,要求学生掌握相关知识点和代码开发能力。接着,就页面设计和数据交互设计进行分析和讨论,与学生交流思想,分析优秀学生作品以提高学生主动参与的积极性。最后,在学习和实践环节,要求学生进行移动开发和实例演示,分析功能实现情况,引导学生对照功能需求进行改进和提高,提高移动应用软件开发的效率。尤其是针对用户满意度问题,可以从软件操作的响应时间、操作复杂度等角度,引导学生思考其所开发软件的提升空间和改进方向。

每一次案例分析结束后都会要求学生按照教师提出的改进要求进行课外实验,更积极地鼓励学生进行有意义的创新设计。案例的课后改进与创新会作为加分项计入期末总成绩。这是激励学生在课后对课堂内容进行复习的一种有效手段,不仅加深了学生对案例及理论知识的理解,而且在扩展设计和开发的过程中锻炼了学生的创造性思维能力。

5.实验教学

为配合理论教学,实验教学共12学时。如表2所示,6次实验根据实验类型分为验证性实验和设计性实验。验证性实验是指对研究对象和内容具备一定了解和认识,为验证其结果是否正确或可靠而进行的一种实验。设计性实验则是预知实验结果,根据实际情况设计方案,结合多种方法和技术达到预期实验目的的实验。

其中验证性实验包括Activity及其生命周期和Intent应用两个实验,是为帮助学生熟悉Activity的应用和Intent编程、传递消息等内容而精心设置的实验;设计性实验包括Android事件处理练习、资源访问与存储练习、数据库应用练习、图形图像/地图应用练习等四个实验,要求学生熟练掌握事件处理方法、Android资源访问、SQLite的使用以及百度地图简单应用开发等技术。实验教学全部安排上机编程实现,无论验证性实验,还是设计性实验都是对学生编程能力的实际锻炼。因此,在教学进度安排方面,如表1所示,除实验1安排在基础知识教学阶段,在高级知识教学阶段时会安排每周2学时的配套实验教学。实验中注重培养学生独立思考、自主编程的能力。

四、实践创新

1.特色助教

如图3所示,助教分为青年教师、研究生和高年级本科生三类,在实践环节和验收环节分别承担一定量的辅导工作。

其中,安排优秀的研究生和高年级学生作为实验教学助教,在每周的实验课辅助任课教师解决学生实验过程中遇到的疑难点。学生助教答疑营造了实验课轻松活跃的课堂氛围,可以避免一部分学生不敢主动向任课教师提问的现象。另一方面,学生助教和学生之间容易建立起平等的伙伴关系,在任课教师的参与指导下可以共同对一些知识点或疑难问题进行深入探讨和交流,有利于培养学生的编程自信心。

此外,结合本校新进青年教师培养办法,安排青年教师作为理论教学助教,共同承担部分答疑工作。青年教师由于还需承担兼职辅导员的工作,相比较任课教师,会有更多和学生直接接触的机会,可以更加详细地分析学生遇到的问题,也更加方便地组织学生就共性问题进行集中答疑。

2.基于CDIO模式的項目实训

CDIO代表构思(Conceive)、设计(Design)、实现(Implement)和运作(Operate),它是由美国麻省理工学院、瑞典皇家工学院等四所大学经过四年的探索研究,共同创立的工程教育模式。经过20多年的研究与探索,CDIO已经得到国际高等工程教育界的广泛认可,形成了非常鲜明的工程教育特色,包括树立大工程观理念、注重培养工程素质、密切联系产业、注重实践及创新[5]。

《移动终端程序设计》的课程实训要求学生综合设计一款移动应用程序,鼓励学生自主探索与合作交流,能采用现有技术和方法解决项目实现过程中遇到的困难。在CDIO模式下,课程实训注重在实践过程中培养学生的工程意识、工程素质和工程实践能力,各方面能力培养目标如表3所示。

学生组队进行作品的开发,原则上每队不能超过3人。首先,确定课程实训的作品设计主题,基于CDIO模式开展项目实训,要求团队在Android平台上开发软件。其次,采用公开答辩验收的形式。作品答辩时,团队成员按分工均要求进行述职陈述,重点演示作品功能,认真回答评审专家提问。评审专家由2-3名软件工程教研室教师组成,从学生的答辩表现、作品运行情况、文档规范性等角度进行综合评分。最后,对于考评不合格的学生,任课教师和青年教师助教会安排有针对性的辅导,引导学生克服困难,并给予一次重新答辩的机会。

五、结束语

近年来,随着移动互联网的快速发展,移动应用程序设计逐渐成为高校软件工程专业培养的热门方向[6] [7]。本文介绍了上海第二工业大学《移动终端程序设计》课程的教学模式和方法,为各技术应用型大学的软件工程专业人才培养提供了经验借鉴。该课程自开设以来就深受学生喜爱,要求学生将理论知识与实践相结合,应用移动新技术和方法,完成具有实际应用意义的移动创意设计,并在移动设备上予以实现,不仅对接国家创新创业要求,同时也满足当前企业对“互联网+”技术人才的培养需求。

经过多年的教学实践积累,本校软件工程专业学生在各级课外竞赛中取得丰硕的成绩。例如,在蓝桥杯全国软件和信息技术专业人才大赛、上海市大学生计算机设计大赛、全国大学生计算机设计大赛等,均涌现一大批本校学生自主研发的移动应用程序作品。而且在实习和求职过程中,学生因为具备了较好的软件开发能力,特别是Android平台程序开发技术和经验,往往备受企业青睐。

参考文献:

[1]刘永彬,欧阳纯萍,阳小华等.“互联网+”时代下计算机创新创业人才培养模式探索[J].高教学刊,2016(14):15-16.

[2]韩利凯,雷伟军,毛艳等.应用型本科院校计算机人才培养与计算机教育教学实践[J].计算机教育,2007(2):78-80.

[3]张建兵,范江波.面向Android移动开发的编程思维能力训练与培养研究[J].计算机教育,2015(14):1-4.

[4]蒋华伟,袁秀珍,李琳等.计算机专业产学研合作创新人才培养模式[J].计算机教育,2011(14):8-11.

[5]秦磊华,石柯,甘早斌.基于CDIO的物联网工程专业实践教学体系[J].高等工程教育研究,2013(5):168-172.

[6]林健.深入扎实推进新工科建设——新工科研究与实践项目的组织和实施[J].高等工程教育研究,2017(5):18-31.

[7]何丽,华斌,刘军.计算机应用创新型人才培养的实践教学改革研究[J].计算机教育,2014(2):5-9.

(编辑:李晓萍)

猜你喜欢
软件工程
依托工作室的软件工程实践教学研究
应用瀑布模型的MOOC制作方法
融合APTECH体系的软件产业人才培养探究
基于工程教育认证的《软件工程》课程教学质量建设研究 