李韦鹏 潘承毅 唐型基
摘要:在互联网、大数据、云计算背景下,Java编程语言俨然成了计算机类专业本科教学的核心基础课程。本文针对当前高校Java编程教学中存在的问题展开分析,并给出合理建议和解决办法,对Java课程教学改革有借鉴意义。
关键词:Java教学;教学改革;OJ
中图分类号:G424 文献标识码:A
文章编号:1009-3044(2019)19-0158-02
1 引言
2019年年初的TIOBE排行榜中Java依旧占据霸主位置,这同Java语言本身面向对象友好,支持工具库和平台多,与web应用、大数据开发等领域强相关等原因密不可分。目前国内部分非重点院校Java课程教学定位、教学质量与业界公司java研发岗用人标准相去甚远,面对人才培养模式已明显偏离社会实际需要的事实,教学改革刻不容缓。
2 教学现状与问题分析
2.1 教学目的与定位不明确
Java程序设计作为前置核心课程有多重任务:1)培养学生扎实的编程技能;2)为学生的后续课程做技术储备:3)承担启迪学生OOP思想的工作。因此Java教学应面向工程实践,保持授课深度与难度,重点训练学生解决实际问题的能力。但多数教师固守“单纯掌握一门编程语言”的传统教学思维,教学定位和课程指向不明,内容浅显,知识结构不合理,导致授课效果不理想,学生技术水平提升有限,拖累后续课程教学。
2.2 教学体系陈旧
目前Java课程教学体系陈旧体现在:(1)课时分配不合理。基础语法知识讲授时间过长,压缩后续章节如:序列化、并发、JDBC等Java核心技术授课时间,以上核心技术才是一个Java研发人员应该具备的基本技能素养,教学定位过低使学生学不到真功夫。(2)教学思维固化。具体表现为:1)教学模式保守。信息时代知识的学习具有突然性,学习门槛已经大幅降低,更加注重学习效率,但部分院校依旧按照多年前的教学大纲和参考教材进行教学,排斥技术论坛和技术博客,认为从网络获取知识缺乏系统性。技术学习是一个不断迭代的过程,且 IT行业技术更新快,要求从业者具备敏捷学习能力,反观现有编程教学模式无法授予学生类似能力。2)未能做到分层教学。授课过程中过多关注低水平学生,无法保证为有潜力学生做深入拓展,通过引入流行开源框架提升教学质量的设想更无从谈起,使本科教学同行业发展脱节。(3)教材选择不合理。自Java诞生伊始人们就在讨论构建有效的Java教学培训体系,在参考书籍选择上早已达成共识,如《Java编程思想》,《Java核心技术》《Head first设计模式》等作品被列为入门经典。这些参考书籍有:零基础入门,有深度,知识覆盖面广,阅读量大等共性,但在当下追求短平快的国内大学教育背景下被各类所谓简明教程取代。这个选择从长远来看不利于课程建设和学生能力培养,因为简明教程剥夺了学生 “从无到有,由浅入深”的过程体验,导致学生知识体系缺乏逻辑性。(4)课程考核体系不完善。目前部分院校Java课程的考核成绩占比重心仍是期末笔试,题型刻板,评分标准缺乏开放性,淡化实践能力考察,进而出现学生实际编程能力与总评成绩不匹配的情况。
2.3 教师技术水平有待提升
本科院校中有行業经历且技术扎实的Java课程任课教师比例不高,多数教师一直走单纯科研路线,少有项目开发历练,从工程应用角度对Java语言特性理解深度不够,在授课时抓不住重点;此外部分教师缺乏对技术动态持续跟踪的主动性,课题结题即研究终止,例如目前JDK版本已经更新到Java10,却依然介绍已标记为legacy的Java5/6中的接口及相关知识,明显落伍。
3 教学改革建议
3.1合理分配学时
Java课程教学改革的第一步是缩减基础语法类知识的教学时数。这样做并非刻意淡化基础语法知识,相比C/C++,Java语言基础语法比较简单,且大部分高校将Java作为第二门编程语言加入人才培养方案中,在已有编程语言学习经历的前提下,通过类比就能快速掌握其基本语法。节省下来的学时可以被安排到并发、网络编程等章节中,为这些实用性更强、且有难度的核心技术提供充裕授课时间,以便教师放慢节奏做更加细致和深入的讲解。
3.2建立以编程训练为基础的教学模式
实现编程训练为基础的教学模式改革的关键是各院校计算机类专业搭建自己的OJ平台,即自动化在线编程评判。OJ并不是新鲜事物,浙大、北大、杭电等国内一流院校均为先行者,这些学校的学生通过OJ训练在ACM等赛事中取得不俗的成绩。Java教改使用OJ的工作重心放应在题目的分级、分类上,向学生提供不同难度和种类的题目,做有选择性、针对性的训练。OJ能迅速评判代码功能正确性和代码质量,帮助学生直观了解自身优势与短板。同时仿照成熟OJ平台运维模式,使用积分区别试题难度和编程水平,凭借积分制给学生带来渐进式成就感,促成学生群体间形成相互竞争、相互学习的良好氛围。更重要的是基于积分对学生java课程学习情况作量化评价,不再受限于单纯的试卷考核,考察方式更加客观。
3.3 充分拓展学习的外沿与内涵
依靠OJ系统夯实学生Java基础编程能力后,需利用第二课堂和课外时间延展学生学习的外沿与内涵。内涵是指引导学生投入精力阅读Java源码,从API源码实现甚至JVM层面去探究Java语言内部机制,升华对理论知识的理解。外沿则分为两个阶段:第一阶段是通过诸如小型CMS、Android应用开发等轻量级项目实战,强化学生对Java语言设计模式、开源框架的应用能力,潜移默化地培养学生OOP思想与抽象建模能力,在不断试错与爬坑中创建属于学生自己的技术栈,形成对Java语言的深刻见解;第二阶段是鼓励学生加入热门Java开源项目,在项目建设中熟悉团队开发工具(如git、Maven)的使用,向团队中更优秀的开发者学习,在代码阅读和编写中取长补短,体验团队开发模式,拉近课堂学习与实际工程开发间的距离。应该强调的是,Java语言教学不应该仅限于课堂,工程技术学习的最终目的就是应用在现实生产中,相比之下实践实训对学生更加重要,而教师在这个阶段应该扮演“引路人”的角色,除在关键节点主动干预避免学生陷入技术陷阱外,尽量以“旁观者”的身份出现,把“发现问题--分析问题--解决问题--优化解决方案--突破自我”这套完整探究问题的过程原原本本地交给学生自己去完成,而非手把手教学,那样做不仅违背了大学教学的一般规律,而且十分不利于学生的独立思维和工匠精神的培养。
3.4 优化考核方式
配合教学模式的改进优化成绩评价体系:1)将平时OJ练习得分与代码质量作为基础编程能力考核的依据;2)将组队项目开发作为实际技术应用能力作为期末考核的依据;3)整理并精选Java技术研发岗位面试题目,将理论考核放在随堂纸质小测验中完成;三者在总评成绩中占比为4:4:2,以解决问题为导向,全面考核学生课程学习质量。
3.5 提升教师素养
教师是教学工作的主要参与者,如何提升教师自身技能素养是Java课程教改的另一个关键点。信息技术领域知识迭代周期很短,授课教师不能只紧盯领域理论前沿,还应关注实用技术发展动态,特别是行业技术走向。同时任课教师需要适时投入到一线项目开发中,锤炼编码能力,保持编码水平,获取更多的项目经验,这样才能在技术传授上有底气、有故事,而非低水平空洞讲解。此外还建议教师可以尝试摒弃一些与Java技术发展趋势相悖的思维模式,以空杯心态接受更面向工程、偏向自主学习的Java技术栈学习路线,并结合实际复制到课程教学中。
4 总结
前文给出的Java教学改革措施是一整套教学体系,操作性强。虽然这套教改方案偏向于工程实践,但在实际落地中应该有尺度,否则会转变为类似编程培训班的教学路线:“仅仅停留在传授知识的肤浅层面,偏离教育“教人如何学习”的初衷。技术类课程教学有自身特点,不应将理论知识与实践实训人为对立,任何一个优秀的Java开发者或者架构师,其理论功底与动手能力都会非常扎实,这也是本科Java课程教学的终极目标:培养有灵魂、有水平的工程应用型人才。
参考文献:
[1] 邹晓华,陈向坚. 高校Java课程教学模式改革探讨[J]. 中国校外教育,2018(22):114.
[2] 魏强. Java课程基于工作过程的项目教学改革研究[J].数字通信世界,2018(9):265.
[3] 张会. 《Java语言程序设计》教学改革探索[J].电脑知识与技术, 2018(14):162-163,166.
[4] 马丹.Java程序设计的教学思考[J].黑龙江科学, 2018,(19):66-67.
【通联编辑:唐一东】