APP下载

“程序设计实践”中项目驱动教学

2019-03-15张玉州

关键词:程序设计课程设计编程

张玉州

(安庆师范大学计算机与信息学院,安徽安庆246133)

程序设计作为计算机专业学生的基本素质,一直备受老师和学生的重视,对核心课程的学习以及将来从事软件开发有着重要意义。然而,调查发现,通过基础语言的学习,学生的实际编程能力不足,甚至在修完“数据结构”等课程后,这种状况依然没有得到改善[1]。鉴于此,“程序设计实践”课程在各大高校陆续开设,并取得了较明显的效果[2]。1由于“程序设计实践”兴起时间不久,传统的教学模式占据主导地位,主要方式为“传递-接受”,以“三中心”为理论核心,即“教师中心,教材中心,课堂中心”,以系统知识的传授和基本技能的培养为目标[3],在很大程度上制约了该课程优势的展现。同时,在该模式下的教学,师生间缺乏交流、互动,课堂上90%的时间是老师对课程知识的讲解[4]。转变“程序设计实践”课程的传统教学模式,切实提高学生的实际编程能力,已经是程序设计教学工作者面临的重要问题。项目驱动教学模式以操作问题为对象,引领学生参与到具体项目的分析、设计、实施等全过程,以完成教学任务[5]。“程序设计实践”是一门实践性很强的课程,引入项目驱动教学模式,能够更好地实现教学目标,并且在南京邮电大学等高校已有采用,并取得了良好的效果。本文主要介绍传统教学模式主导下的“程序设计实践”课程教学缺陷,并阐述了项目驱动教学模式在我校的实施情况。

1 项目驱动教学

1.1 现有培养计划

我校计算机专业编程基础教学语言为C语言,然而,由于学时和内容的限制,学生的编程能力十分有限,目前在老师们的共同努力下,“程序设计实践”课程得以开设。该课程虽然提高了学生的编程能力,但由于现行教学模式(传统的教学方式)的限制,并没有达到我们预期的教学效果。我校2014版人才培养方案中“程序设计实践”课程教学内容和实验内容只是“C语言程序设计”课程的一个简单延续,没有对程序设计课程进行实质性地突破,主要内容包括C语言的基本语法、基本结构以及一些典型问题,如数制转换问题、字符串处理、高精度计算、递归等,所以,难以实现学生编程能力的改善。

1.2 项目教学法

项目驱动模式以学生为中心,强调学生自身的主观能动性。因此,这种思想应贯穿程序设计的各个环节,项目设计过程包括:实际应用问题的选择、问题需求的调研和分析、任务的分配、算法设计和代码实现以及后期的系统测试等等。由于问题动机的强烈驱动,学生会对已学理论知识进行整理,并应用到具体问题的求解过程中。在2018级计算机科学与技术工科一班“程序设计实践”课程中,完成的项目设计有:(1)工资管理系统,(2)高速公路收费站系统,(3)学生信息管理系统,(4)银行管理系统,(5)通讯录管理系统,(6)火车票务系统,(7)点餐系统,(8)图书馆管理系统;(9)运动会分数管理系统,(10)停车场车位管理系统,(11)酒店管理系统等。这些项目均有明确的功能要求,如点餐系统,其功能要求包括①显示菜单,②点菜操作,③修改已点菜品,④折扣计算,⑤菜单信息修改,⑥费用结算,⑦系统退出。通过项目建设,学生接受了较为完整的综合训练,包括由问题的需求分析出发,经历总体框架设计、模块分割、代码设计和实现以及软件测试等过程[6]。如此的自主探索,既巩固了理论知识,又提高了学生自身的实际操作能力。

1.3 项目设计原则

项目是项目驱动教学中的重要组成部分,其设置和选取应遵循趣味性和可行性的原则,也就是项目既能够开展、完成,又能激发学生对程序设计的兴趣,并能提高学生的程序设计能力。可行性要求问题的规模需要控制,不能过大或过于复杂;趣味性则可结合实际生活或游戏开发设置相关的问题。

目前,我们给学生提供了一些项目,供学生选择完成,如医院的挂号系统、学生成绩管理系统、商品管理系统、航班订票系统等等,这些问题难度均高于课本知识范围,但规模较适度且有一定的趣味性。同时,为了丰富项目库,使得课题的难度能够适应学生的动手能力,鼓励学生根据兴趣和程序设计能力,自拟课程设计问题。对于学生提供的项目课题,严格把关,主要从规模和难度等方面,避免问题过于简单化,或者过于复杂而导致学生无法驾驭、完成。

1.4 项目教学法的实施过程

项目实施的大致过程包括项目问题选择、学生分组、问题模块分解和任务分配、需求分析调研和问题总体设计、代码编写和测试以及最后的成果验收(展示、答辩和材料收集)[6]。以下就我校项目驱动教学法在“程序设计实践”课程中的实施过程展开叙述。

(1)项目库的建立。项目库是供学生进行问题选取的资源,项目库的建设是项目教学法的开端,亦是重要的一步。可按照1.3节中设置的原则,进行项目库的建设。

(2)选题和分组。为了提高项目完成的效果,我们一般在“程序设计实践”课程期中的时候,将问题在班级进行公布。此时,学生有了C语言学习的基础以及“程序设计实践”前期的学习,已具备一定的程序设计能力,为项目开发作了准备。学生可结合自身的能力和兴趣,进行问题选择。在此过程中,涉及一个重要的问题,即分组问题。每组人数的多少可取决于问题的规模和难度,通常为3~5人,每组产生一名小组长,负责小组的事务管理[5]。如我校2016级和2017级计算机工科班的项目分组中,通常是5人左右为一组,其中2016级,共分成了12组,而2017级,分成了10组。2018级计算机专业的分组有所改变,每组人数不得多于4人。另外,由于转专业的同学,没有C语言基础,所以他们会分散到各小组中,通过项目开发的参与,提高他们的编程能力。

(3)开发过程。选题和分组结束后,就正式进入项目开发阶段,通常分配的时间为4周。过程包括问题需求分析、问题分解成模块、算法设计、算法实现、代码调试、组织数据测试等环节。在这些环节中,对于学生出现和提出的问题,给予及时的指导,并督促他们按时完成任务。

(4)材料提交。为了规范项目开发过程,提高项目驱动教学模式的效果,对于每个项目开发,均需有文档说明,包括项目功能、需求说明、流程图、算法设计等等,严格按照项目开发流程进行。文档说明以及代码作为材料,需要提交、回收。

2 项目管理与考核

为了检验项目的完成情况,对各小组进行较细致地考核。该过程可放置在材料提交之前,每组选派一名组员对项目完成情况进行汇报,包括项目的功能、实用价值、开发过程以及存在的问题。随后,依据小组中的任务分配,对于每个成员均提出相应的问题,这样可以避免少数同学没有实质性的工作。根据答辩情况,每位学生成员都给定一个成绩,整个小组的项目开发也会进行评分;结合个人和小组成绩,小组成员会得到自己的综合成绩。每组汇报和答辩时间一般控制在15~20分钟。另外,为了提高考核效果,增强讨论的气氛,在答辩过程中,其他组的同学也可以参与问题提问。在课程设计答辩过程中,进行了一系列的导向设置,如2018—2019学年第二学期,在2018级计算机科学与技术(工科)班的答辩过程中,对学生所完成的设计进行系统功能延伸,主要向网络化、智能化、实用化方向牵引。如在订餐系统的问题中,建议设计成类似于APP形式的小软件,这样使得用户可以通过手机即可了解餐饮情况、订餐并完成点菜。如商品销售管理系统中,建议增加商品销售数量和趋势分析模块,因为商品的需求量和众多因素有关,如季节、消费者的购买习惯等,这样增加商品销售系统的商品销售量的分析,并给出趋势图,提升系统的智能化,就可以帮助管理人员进行有效决策,在不同阶段,进行适当商品的储备。

为了方便课程项目的管理,建立了安庆师范大学程序设计实践课程设计网站,该网站是结合网站管理系统和课程设计系统为一体的综合类网站,其可将课堂课件、教学大纲、实验报告等资料上传,为学生提供学习的资料。针对课程设计线下繁琐的师生交互,开发了课程设计系统,师生均可在线对课程设计进行管理,更加方便快捷。网站管理系统可管理与程序设计实践课程设计相关的课程设计、通知公告、课堂资料、参考书目等教学资料,其中,课堂资料类别清晰明了,方便老师资料的整理,也方便学生分类查找。为了让学生熟悉并更好地使用网站中的相关功能模块,对2018级计算机科学与技术(工科)专业的学生进行了该网站使用的介绍和培训。从而,关于课程设计的组员信息、相关文档以及代码即可通过网络上传至系统,亦可通过系统了解课程设计的情况,并回收材料。

3 结束语

本文介绍“程序设计实践”课程开设的意义,以及目前该课程教学模式的弊端。项目驱动教学模式对于我们只是初步尝试,真正的实施还有很长的路要走,大量工作有待进一步探索和研究,我们的目的就是争取优良的教学效果,以学生为本,努力提升他们的编程实践能力。

猜你喜欢

程序设计课程设计编程
编程,是一种态度
元征X-431实测:奔驰发动机编程
编程小能手
基于Visual Studio Code的C语言程序设计实践教学探索
纺织机上诞生的编程
龙凤元素系列课程设计
从细节入手,谈PLC程序设计技巧
高职高专院校C语言程序设计教学改革探索
基于Articulate Storyline的微课程设计与开发
PLC梯形图程序设计技巧及应用