项目分解法在计算机实验和理论教学中的应用

2013-07-19 10:10许德武
实验室研究与探索 2013年1期
关键词:程序设计案例知识点

许德武

(浙江师范大学 经济与管理学院,浙江 金华321004)

0 引 言

现在计算机专业的软件开发类人才的培养存在着严重的缺陷,一方面是学生感觉学习的课程是孤立的,与其他课程关联性不强,即使学习了好几门程序设计类课程也没有学会编程,遇到一个开发管理信息系统的问题还是束手无策,不能很好的解决[1-3]。另一方面是用人单位感觉应届毕业生没有编程能力、更没有做项目的经验,如果招聘应届生,学生上手很慢,还需要对其再花费额外的培训成本,所以只喜欢招聘有工作经验的往届毕业生,这也是应届毕业生很难就业的主要原因之一。面对这种局面,作为教育工作者,我们需要深刻的反思在教育实施过程中存在的种种问题:为什么我们的教学内容滞后于社会上用人单位的需求?为什么学生认真地学习了一门课,但最后却只是记住了一些语法等内容,不知道能具体做什么?为什么学生学习了好几种程序设计语言和数据库,甚至是毕业了,还是不会开发小型管理信息系统?……面对种种的问题,需要对现行的计算机专业的教学思路进行调整。本文所说的“项目”均是指用计算机编程语言开发的“计算机软件”[4-5]。

1 项目分解的具体实施

1.1 方案的提出

分析目前的教学现状,存在的问题很多,造成这种局面的原因也很多,例如很多教师是从某所高校毕业就直接进入高校教书,虽然学历很高,理论水平也很好,但是没有在公司工作过的经历,自然开发“系统”的经验也不足;还有就是实验教师的教学工作量计算不合理,老师设计的实验题目缺乏实用性等等,究其原因很重要的一点是大部分教师“重理论教学,轻实验教学”导致的,忽略了对学生动手能力的培养。要加强学生的动手能力,要从加强实验教学入手,让学生成为课堂的主角,教师只起到辅助、提醒的作用。为了解决这个问题,我们一方面建议增加实验课的课时,另一方面需要对实验内容进行调整。现在,很多身处教学一线的老师提出了新的教学改革方案,例如有的老师提出向高年级的学生设计综合性实验,即先设计出一个较大的系统(即项目),再根据教学内容把这个项目分解成几个相应的模块,根据系统前后台的功能把相关的一门或几门课程的知识点组合起来讲解,学生就会感到这种讲课方式具有一定的实用性和趣味性,学生就会主动学习,达到事半功倍的效果[6-7]。但是这个方法也存在一定的局限性,即在低年级的学生中没办法展开。也有老师在实验中引入某些实用性更强的实例,再根据这些实例来讲解相应知识点,促进培养学生解决现实生活中的实际问题的能力和兴趣,但是这种方法存在不能解决的致命弱点,那就是各个小案例之间没有关联,学生对各个知识点缺乏一个整体的认识,所以“项目分解教学法”就能很好地解决这一问题,它可以针对某一门课进行理论教学和实验教学内容的设计,并以此为依据展开教学。

所谓“项目分解教学法”就是教师在设计理论教学和实验教学的时候要针对各门程序设计类课程的教学内容和重点,每门课的理论教学案例和实验内容就针对一个大的项目展开,设计的项目要有针对性和整体性,再根据每周的知识点,把这个项目分解成各个小的单元,虽然看似每周的教学内容和实验内容是孤立的,实际上却存在一定的内在的关联。教师在安排每周的教学内容和实验内容的时候都让学生有针对性的练习,一个学期下来,通过最后2 ~3 次实验的整合,把平时完成的实验内容进行有效的整合、拼装,最后完成一个较大的项目。通过这种方法的实验练习,能够使学生对程序设计语言的学习重心不再仅仅局限于简单的语法学习,而是将注意力转移到分析问题、解决问题的能力上来,提高项目开发的能动性和积极性,增加项目开发的经验[8]。

根据我院的课程设置,程序设计类课程主要包括ASP.Net 应用程序开发、JavaEE 高级编程、网站规划与Web 应用程序设计、VB 程序设计、高级语言程序设计、面向对象程序设计——C + +、面向对象程序设计——Java、数据库原理及应用、网络数据库技术等课程。由于Java 语言的发展趋势非常迅猛,几乎成了“网络编程的世界语”,应用范围也越来越广,同时根据实际的教学需求、实践的方便及学生的要求,我选择“面向对象程序设计——Java”作为本项目的具体研究对象,举两个实验教学项目的例子进行分解,供学生在上机实验的时候练习。

1.2 分解项目一

按照以往的教学经验,首先介绍Java 的集成开发环境、变量定义及表达式,再介绍三种流程控制语句及常用算法,介绍一些面向对象的程序设计方面的内容,然后再介绍流和文件系统、图形用户界面设计,最后介绍异常处理和多线程。如果是高年级的学生可以适当增加数据库编程、网络编程和多媒体编程等高级编程方面的内容。如果按照这套流程讲下来,学生会觉得和学其他程序设计语言一样,没什么新意,老师总是围绕着概念、算法反复举例子,在学生看来也只是对这些理论进行验证,但是学这些东西到底有什么用呢?学生会觉得困惑[9]。如果持续维持这种状态,学生很快会失去兴趣,继而失去了学习的动力。

由于“项目驱动”的教学方式相对传统教学而言更具备系统化,个别知识点甚至打乱了原有教材的知识体系,解决这个问题的有效办法就是要在构建好的案例程序库中选取相应的案例,并根据该案例来设计相关的任务,并与学生共同探讨学习。所以为了让学生更好地掌握教材上的知识点,上理论课的时候可以讲解一些“小案例”来辅助学生融会贯通课本上的基础知识。在日常的实验教学中,根据各章的内容,建立了如表1 的案例库,以供学生上机实验时使用。该案例库首先围绕着“五子棋游戏”展开,在此基础上增加一些游戏中没有涉及到的“小案例”。经过这样一门课程的一个学期的上机实验练习,学生基本掌握了“五子棋游戏”的开发,会有一定的成就感[10]。

1.3 分解项目二

采用“项目分解法”进行教学,首先就是要培养学生的兴趣,让学生对学完本门课程能实现一个什么样的项目有一个整体了解,从而感觉学有所用。然后具体分析调用相应的模块实现了什么功能?主要用到的了教程的什么知识点?是如何实现的?最后回到教材对一般的语法和规则应该怎么做?再把拆分好的模块与书中的章节进行紧密的衔接,进行讲解。这样的方法可以让学生不再觉得程序设计的枯燥,知道这些知识将有什么具体的作用,所以更容易让学生接受,让学生明白通过这门课程的学习可以做出什么样的系统。本论文提出在“面向对象程序设计——Java”教学过程中采用的“项目分解教学法”,所强调的是在本课程的整个实践教学过程中只设置一个“项目”,这就对“项目”的质量要求更高,要求该案例必须几乎能够包含全部主要知识点。同时,由于实验教学过程总是由浅入深、循序渐进的,所以该案例的实施过程还应该能够按照实验教学内容进行合理的划分,使之对应于每章甚至每节课的内容,从而使学生达到边学边练的目的[11-13]。

表1 章-知识点-项目案例库对照表

根据Java 课程的特点和实验教学大纲的要求,我们选择难度适中、应用非常广泛的“管理信息系统”类项目为综合案例,讲解用“面向对象程序设计——Java”对系统进行设计、分解、知识讲授、实验验证的全过程。在此,以“商品进销存管理系统”为逻辑主线设计“综合案例”,该“综合案例”贯穿于教学过程的始终,含有若干典型案例与教学内容相匹配。我们再根据各章的知识点把本系统分解成以下几个功能模块,分别为用户登录、注册、修改与查询、统计、信息批量输入输出、网络聊天、帮助与退出等。每个教学单元与其功能对应的具体安排如表2 所示。

按照表1 和表2 对两个完整的“项目”进行“分解”,再根据每个“子项目”的难易程度进行课时上的安排,而且要与上理论课的教学进度、教学内容要保持一致,所以这两方面的步调控制还是有些难度的,这就要求教师在进行“项目分解”的时候要对理论课和实验课所用的“项目”都有很好的把握,否则很容易导致教学进度和实验进度不统一的情况出现,最后适得其反[14-15]。根据这个方法进行推广,逐步把程序设计类课程都做成首先设计综合案例,再根据章节、知识点进行分解的教学模式。使学生每学完一门课就能做一个“项目”出来,项目的大小可以根据学生的年纪高低、专业水平来定,水平高的同学可以逐步完善和提高项目的实用性以及规模。

1.4 需具备的条件

“项目分解教学法”的基本思路是提出问题、分解问题、掌握知识点、解决问题,符合学生的认知规律,对于提高学生的学习效率有很大的帮助。本项目以“面向对象程序设计——Java”为研究对象,经过教师的教学反馈、学生调查,我们需要逐步完善“项目”的规模,项目太大、太小,功能太多、太少,涉及的知识点太深、太浅都不合适。同时,在“项目”的分解问题上也多下功夫,否则不适合每周、每章的教学内容,教学效果得不到保障,而且如果上理论课和实验课是两个甚至是多个“项目”,那么更要注意提高这些“项目”的分解质量,要符合实验教学进度和实验教学大纲的要求,做到协调一致[16-17]。

表2 项目模块分解-知识点对应表

教师在“项目分解教学法”执行的过程中首先要充分了解学生所具备的专业知识,例如学习了哪些前序课程?后续课程有哪些?能完成多大规模的“项目”等等。教师要对“项目”开发有很深的功底,能够很准确的把握项目的难度,对学生在实验过程中遇到不能解决的问题很快帮助解决,所以这种教学方式虽然表面上看学生参与动手研发的部分很多,但是实际上对教师的专业素质要求更高,需要教师有很广博的专业知识和大量的项目开发经验,同时也要有大量的“项目”积累组成项目库,能够提供多个“项目”供学生选择。这就要求教师首先要提高自己的专业技能和软件开发方面的技巧,不能只掌握书本上的语法知识,要具备一定的实际开发经验,所以这种教学方法不但没有减轻教师的工作量,反而提高了对教师的要求。而且在每个“子项目”开发的过程中学生可以组成开发小组,互相讨论、设计教师分派的任务,由基础好、水平高的同学带动编程能力相对较弱的同学,形成团队,提高合作意识和团队精神,增进同学之间的友谊。

2 结 语

本研究对“项目分解法”教学运用于程序设计类课程的实验教学方面进行深入的探讨,总结出程序设计类课程教学中运用案例教学的特点和具体操作方法,以此给能够运用“项目分解法”教学的相关学科以启示,通过这一研究来培养学生分析问题的能力,加深对以前学习的知识的理解,从而提高学生做大项目的能力,增加成就感,提高学习兴趣,增加就业竞争力。

[1] 马玉洁.基于自主学习的计算机基础教学改革研究[J]. 商丘师范学院学报,2011(3):119-122,125.

[2] 张 琳. 大学计算机基础课程教学模式研究[J]. 计算机教育,2009(7):88-90.

[3] 冯博琴.计算机基础教育新阶段的教学改革研究[[J].中国大学教学,2004(9):7-9.

[4] 高丽平,刘 姝.大学计算机基础课程体系结构改革及分层次教学[J].计算机教育,2011(16):44-47.

[5] 刘 双.“案例教学”若干问题的辨析[J]. 教学与管理,2003(6):31-32.

[6] 解永刚.关于VisualFoxPro 的案例教学方法[J].昆明大学学报,2003(1):59-60.

[7] 黄艳峰.在Java 语言中实施“案例教学”的研究与探索[J].电脑知识与技术,2010,6(5):1148-1149.

[8] 张 昕. 案例驱动教学模式在《数据库原理》实践教学中的运用[J].电脑知识与技术,2008,3(6):1246-1247.

[9] 熊春荣.“C 语言程序设计”课程案例驱动教学模式的研究与实践[J],玉林师范学院学报(自然科学),2010,31(5):119-121.

[10] 肖 明. 案例教学法在“C + + 语言程序设计”教学中的应用[J].计算机教育,2010(6):83-86.

[11] 雷东升,李挥剑.《C 语言程序设计》课程案例式教学模式的探讨[J].北京交通管理干部学院学报,2006,16(4):38-40.

[12] 张民杰.案例教学法——理论与实务[M]. 北京:九州出版社,2006.

[13] 余文森,林高明.经典教学法50 例[M].福州:福建教育出版社,2010.

[14] 郑金洲.案例教学指南[M].上海:华东师范大学出版社,2000.

[15] 孙维煌,刘 杰.C#案例开发[M].北京:中国水利水电出版社,2005.

[16] 徐延平.案例教学及其运用[D].长沙:湖南师范大学,2002.

[17] 王 新. 大学计算机基础课程教学改革[J]. 计算机教育,2008(8):106-107.

猜你喜欢
程序设计案例知识点
一张图知识点
一张图知识点
第四页 知识点 歼轰-7A
案例4 奔跑吧,少年!
基于Visual Studio Code的C语言程序设计实践教学探索
随机变量分布及统计案例拔高卷
从细节入手,谈PLC程序设计技巧
发生在你我身边的那些治超案例
高职高专院校C语言程序设计教学改革探索
关于G20 的知识点