李小智 刘伟 丁长松
摘 要: 针对目前Java程序设计课程本科教学存在的普遍问题,提出以能力为导向的教学模式。进一步明确课程的能力培养目标,构建课程多层次能力模型,细化教学内容和能力培养的对应关系,采取多种教学措施,并介绍实施过程,说明教学效果。
关键词: Java程序设计; 教学模式; 培养目标; 能力模型
中图分类号:G642 文献标识码:A 文章编号:1006-8228(2020)04-81-04
Teaching practice of Java programming course for multi-level ability cultivation
Li Xiaozhi, Liu Wei, Ding Changsong
(Hunan University of Chinese Medicine School of Informatics, Hunan, Changsha 410208, China)
Abstract: Aiming at the common problems in the undergraduate teaching of Java programming course, this paper proposes a ability oriented teaching mode to further clarify the ability training objective of the course, build a multi-level ability model of the course, refine the corresponding relationship between teaching content and ability training, and take a variety of teaching measures. It introduces the implementation process and shows the teaching effect.
Key words: Java programming; teaching mode; training objective; ability model
0 引言
隨着大数据、云计算、人工智能、移动互联网等新信息技术的不断发展,计算机应用型人才的社会需求量逐年增加。应用型高校作为培养计算机应用型人才的主阵地,以新工科建设为契机,注重社会需求导向作用,积极采取各种措施推动教学改革,提高人才培养的质量和速度。程序设计能力是计算机应用型人才的基本能力之一,如何提高程序设计课程的教学质量是各高校计算机专业进行教学改革的重点内容。
Java程序设计是计算机类专业基础核心课程,教学目标主要有三个:知识目标、思维目标、能力目标[1]。目前,该课程的本科教学存在普遍问题,重视知识目标,而思维目标和能力目标由于缺乏有效评价机制,并没有受到足够重视。教学以教师为主,以课堂为中心,采用“理论+实验”方式,教学模式陈旧,教学效率不高。教学过程中学生主体作用没有得到充分体现,学生只是按照要求完成学习任务,自主学习能力较弱,创新能力极度缺乏[2]。因此,Java程序设计课程教学需摆脱以知识传授为主的教学惯性,实施以能力为导向的课程教学,采用灵活多样的教学方式,培养学生包括编程能力在内的多层次能力,来与新工科建设人才培养目标高度契合。
1 能力培养目标
1.1 学习能力
受传统学习模式影响,大学生早已习惯了所学知识来源于教材、课堂和教师[3],学习的目的大都是为了完成老师布置的作业和通过考试,是一种他主学习行为,对课程知识的探究并没有真正成为学习内在驱动力,不能满足Java语言学习的要求。Java知识点多,版本更新快,特别是第三方组件丰富,要求学生要有很强的自主学习能力。因此,教师在教学过程中,不仅要研究“如何教”,更重要的是积极引导学生“如何学”,要充分调动学生的主观能动性,引导学生发现问题、探索问题、解决问题,有利于在知识的广度上拓展和深度上挖掘,来弥补课堂传授知识的局限性。培养自主学习能力,增强终身学习意识,是能力培养最根本目标。特别是在毕业后走上开发类岗位,面对新技术的出现和新工具的使用,要能胜任工作,不断学习和适应发展的能力尤为重要。
1.2 计算思维能力
计算思维是以计算机科学的基础概念充分运用为基础,通过将问题和解决方法抽象处理而实现问题解决的思维过程[4]。计算思维是对客观问题的另一种描述,把现实世界问题转化为计算机领域问题,其核心就是解决问题。在传统Java教学过程中,由于受到各种教学因素的制约,主要偏重Java语言本身知识讲授,将语言的应用交给其他课程以及学生本身,而相关课程交叉融合不够,学生缺乏对计算思维的训练,导致在解决实际问题时显得力不从心。计算思维主要从抽象、算法、归纳、分解、评价这五个方面来体现和实现,因此在教学活动中,教师根据不同阶段的教学要求,创设相应的问题情境,分步递进式引导,学生在解决问题过程中完成抽象建模、算法设计、编码实现、系统测试等一系列过程,达到计算思维能力培养的目标。
1.3 工程实践能力
培养学生的工程实践能力为满足软件行业发展对应用型和技能型人才的需要,工程实践能力不仅是能熟练写出代码,还包括编码的规范、软件设计模式的应用、各种主流技术框架和开发工具的使用以及项目文档撰写能力等。提升学生工程实践能力,有效解决高校教学与企业需求脱节的问题,有利于企业降低用人成本。
1.4 团队协作能力
一个软件项目开发团队由多人组成,其中个人能力不尽相同,成员之间相互尊重,平等交流,互补互助,才能形成合力,最大程度地提高工作效率。团队要创造条件让每位成员能在合作中充分展现各自的长处,体现自我价值,这样才能有存在感和获得感。优秀的表达沟通能力在团队中非常重要,如遇到技术及各种管理问题,需要成员之间、师生之间有效的表达与沟通。
1.5 创新能力
创新能力是一种高级别能力,在解决具体问题时,不固守已有的方法或模式,敢于突破常规或者另辟蹊径。Java编程解决具体问题,核心是设计算法,学生上机实验、完成作业、课程设计,可以通过师生交流、相互讨论、上网查询等各种途径获取大量信息和参考资料,学习过程中不能被已有的算法限制了思维,要能分析对比、深入思考,要能敢于提出自己的见解。这种学习上的创新,会延伸到工作上的创新,在“互联网+”背景下,信息技术在各行业的应用,只有具备了创新能力才能创造出更大的价值。
Java语言教学培养的各方面能力,学习能力是基础能力,是培养其他各方面能力的基本条件,编程能力、计算思维能力、工程实践能力是专业能力,是课程教学能力培养的重点,创新能力是具备创新意识的前提下,在实践过程获得的高层次能力,团队协作能力是一个软件项目有序进行的保障。课程培养各能力层次模型如图1所示。
Java课程内容(部分)与能力培养目标关系如表1所示。不同的学习内容和学习阶段,能力培养并没有明显界限,只是侧重点有所不同。
2 教学措施
2.1 调整培养方案,增加实践课时
以笔者所在学院的计算机与科学技术专业为例,原有的培养方案基于课程内容多,知识点繁杂考虑,理论课时相对偏多,总课时54课时,理论课36课时,占比为66.7%,实践课18课时,占比仅为33.3%。修改后的培养方案总课时64课时,理论课36课时,占比为56.2%,实践课28课时,占比为43.8%。实践课时的增加更符合工程实践类课程的教学需求,教师能安排更多实验内容,更能准确掌握学生的学习情況,同时学生能得到更多老师亲临指导的机会。运用“做中学”的教学理念[5],将部分理论知识结合上机实验进行讲解,采用理论与实践相结合的方式,较好地解决了课时不够问题。
2.2 设问探究,强化自学能力
适当引导,合理设问,可以充分激发学生的求知欲和学习的主动性,学生在问题求解过程中,查阅各种资料,利用网络资源,如在线视频、技术博客、技术论坛等获取大量信息,对这些信息进行分析比较、归纳总结,有利于提升学生的自主学习能力。如讲数组时,提出问题:如何利用数组编程解决约瑟夫问题,除了数组以外还有哪些解决方法?又如,C语言作为Java语言的前置课程,两种语言基本语法有很大的相似性,讲授Java基本语法知识时采用了翻转课堂开展教学[6],课前提出问题:两种语言基本语法异同比较,要求学生分组讨论制作PPT,课中学生汇报学习成果,师生互动答疑,课后总结。
2.3 项目驱动,提升动手能力
上机实验是为掌握课程知识点而设计的验证型或探究型实验,是培养学生编程能力的主要教学手段之一。但是各实验内容相对独立,缺乏整体性和系统性,结果呈现并不直观。课程设计以项目驱动方式进行,要求学生分组完成某一软件系统的开发,考核重点是运用所学知识,完成系统功能编码。在讲解完Swing组件使用后,发布四个项目:图书管理系统、坦克大战、连连看、网络五子棋,提供项目需求文档,引导学生自愿组队,自由选题,利用课余时间开发。开发与后续日常教学同步进行,每个小组每周提交开发进度表,教师及时掌握各组开发情况。期末进行项目答辩,每组派出一名成员汇报演示,演示完毕后,其他组的同学和老师进行提问,每组选一名代表和老师共同组成评委团,评委根据现场答辩和项目演示,结合平时开发情况进行打分。
2.4 校企合作、协同育人
高校专职教师不是一线开发人员,对行业的技术发展和市场对人才的需求并不是十分了解,教学与市场需求存在脱节问题,校企合作能较好地解决这一问题。合作企业全程参与工程实训环节,包括实训内容的安排,实训计划制定,实训结果的考核等,企业派出有经验的软件工程师负责工程实训的具体实施,实训内容为实际项目的开发,使用当前主流的开发工具和软件技术,过程管理完全按照软件工程规范进行。为了不占用常规教学时间,安排在期末考试后的一周时间,进行全天封闭式集训,让学生提前感受工作氛围,培养团队协作能力,锻炼沟通表达等软技能。
2.5 改变考核方式,注重过程性评价
Java程序设计课程的核心目标是培养学生的计算思维能力,以Java语言为工具编写程序解决实际问题。动手实践能力是考核的重点,注重平时作业、上机实验、课程设计等过程性评价。教改前课程综合成绩由期末卷面成绩、课后作业、上机实验三部分构成,比例分别为:70%、15%、15%,教改后增加课程设计评分环节,综合成绩由期末卷面成绩、平时成绩(课后作业和上机实验)、课程设计三部分构成,比例分别为50%,20%,30%。考核方式的调整改变了期末临时突击复习就可通过考核的情况,避免了“高分低能”。
3 教学效果
培养目标的进一步强化,教学和考核方式的调整,这些都得到了学生的认可。从学校教务系统网上评教的结果看,满意率在95%以上,学生普遍反映要拿学分“更难了”,同时也认为编程能力有了很大进步。期末结束,通过自己的努力看到正常运行的程序,心理上增添了一份专业自信。期末考试卷面成绩的合格率、优秀率较以往还有提高。在课程设计环节,所有小组都完成了基本功能的开发,其中不乏亮点,选择“坦克大战”桌面游戏的一个小组,功能上做得更丰富,扩展了地图功能,实现了自定义地图的图形化操作,界面如图2。选择“网络五子棋”的小组,自学套接字编程实现网络通信功能,界面如图3。
工程实训考核结果优秀率将近30%,学生参加各类比赛积极性更高,2019年学院在读大二、大三年级学生组队参加各类比赛,获国家级奖项4项,省级奖项6项。以能力培养为导向的Java程序设计教学改革,学生的综合实践能力得到很大的提升。
4 结束语
面向多层次能力培养的Java程序设计课程教学模式符合工程实践类课程本身特点,针对不同的教学内容和教学阶段,运用不同的教学手段,达到不同的能力培养要求,体现了“宽基础、重实践、高素质、强能力”的人才培养理念。良好的教学效果坚定了教学改革的方向,教学措施在具体实施过程中还需要不断细化和调整。改革对授课教师、学生和教学软硬件环境提出了更高的要求。接下来将在以下几方面进一步探索:本课程与其他相关课程渗透融合,教师掌控多样化教学方式的能力提升,校企深度合作等。
参考文献(References):
[1] 谌卫军.Java程序设计课程教学实践[J].计算机教育,2019.7:23-28
[2] 任馨,张群燕.基于案例驱动模式的程序设计基础教学改革[J].计算机时代,2017.8:73-76
[3] 蔡美玲,张锦,张丽霞.焦聚能力培养的程序设计基础课程教学改革[J].计算机教育,2019.8:59-63
[4] 张勇,董俊庆,徐秋月.多维度编程思维训练研究[J]:忻州师范学院学报,2018.34(5):103-106
[5] 张锦,蔡美玲,杨晓春等.基于课程群的项目式软件工程课程教学模式[J].计算机教育,2019.8:45-50
[6] 寿周翔,王李冬,李文娟等.翻转课堂教学模式在Java程序设计课中的应用研究[J].计算机时代,2016.10:83-86