丁振凡, 张 恒
(华东交通大学 信息工程学院, 江西 南昌 330013)
Java教学中计算思维能力培养
丁振凡, 张恒
(华东交通大学 信息工程学院, 江西 南昌330013)
该文提出在教材写作中重视计算思维培养、在课堂教学和实验教学中引导学生动手及反思、在网络研究性教学中推进学生协作交流、在教学评价中注重过程性评价从多方位评价学生。通过网络教学与课堂教学的相互融合,促进了教学效率的提高。
Java语言教学; 教学改革; 计算思维; 研究性学习
“计算思维是运用计算学科的有关概念求解问题、设计系统及理解人类行为的能力”[1]。通俗地讲,计算思维可以说是解决问题时的计算模拟方法论[2]。2010年举办的首届“九校联盟(C9)计算机基础教学课程研讨会”,明确提出计算机基础教学的核心任务是计算思维能力的培养[3]。在计算机基础教学中应有意识地将计算思维融入基本技能的训练中,启发学生思考,引导学生探索,逐步培养计算思维能力[4]。不仅是计算机基础教学,计算思维的培养还可贯穿到计算机学科的培养体系中[5]。
Java作为网络时代的主流程序设计语言,不仅在计算机、软件等专业开设,也将其作为一门公共基础课给其他专业开设。教学不仅是让学生理解Java的语法和编程技巧,更要掌握用计算机解题的思维方式,尤其是面向对象的分析与编程的思维方式。Java语言的学习,非常适合学生计算思维能力的培养。
教材是课程知识体系和知识内容表达的直接体现。Java语言教学的知识体系内容非常丰富,总体上可划分为程序设计语言的共性知识、面向对象的知识体系、Java高级特性3部分。
(1) 程序设计语言的共性知识主要包含数据的表示和程序流程问题,目标是建立数据类型和程序执行流程的概念,培养学生思考解题的算法逻辑,并将逻辑步骤转化为程序代码的能力。
(2) 面向对象的知识体系部分重在表述面向对象的封装、继承、抽象、多态的四大特性在Java语言中的具体体现,目标是理解面向对象核心概念,具备基本的面向对象编程能力。该部分内容的理解还有利于培养学生抽象思维能力。面向对象的很多概念是抽象的,抽象类和接口是抽象思维的最直接体现。事实上,运用面向对象思想解题,包括分析问题、抽象出问题中涉及的类及其属性和行为、规划出类的层次关系、思考行为的逻辑实现思路,并最终用Java语言进行表达。这个过程就是训练计算思维。
(3) Java高级特性部分体现了程序设计中的一些高级问题,可拓展学生的计算思维能力,例如:异常处理解决如何进行防错编程、多线程编程代表多任务并行执行程序的编写方法、图形界面编程则是事件驱动机制的思维逻辑。该部分的每个内容的引入均代表计算机处理问题的新思想,可拓展学生的计算思维能力。
教材编写要在知识体系构建的基础上,思考如何将计算思维的特征和方法分解到具体讲授的内容中。每个部分要讲什么、如何讲、如何启发学生思考、如何检查学习效果均是要关注的问题。目前,完全按计算思维的思想编写组织的Java教材还难以找到,基于计算思维的问题导引组织方式是一种值得推荐的做法,但要注意兼顾知识的系统性与内容的循序渐进性。
笔者编写的《Java语言程序设计》一书,在内容安排上较为重视计算思维能力培养[6],该教材自2010年出版后,根据Java技术的新发展,在2014年9月进行了改版。该书按由浅入深的原则,分3篇组织内容,例题按照“分析、代码设计、说明、思考”的步骤组织讲解,难点概念用图解辅助讲解。不少例子是实际科研应用的写照或游戏类例子,有利于培养学生解决实际问题的能力。
课堂教学仍是教学过程的最重要环节,课堂教学活动是培养学生计算思维能力的有效途径。课堂教学效率的提高有赖于教师对教学内容、教学过程、教学方法的精心设计。教师应以建构主义教学理论为指导,创造自由、愉悦的课堂学习氛围,调动学生主动学习的积极性。教师介绍知识时,要尽可能阐述知识产生的背景,让学生了解知识形成的过程,这不仅有助于学生对知识的认知,还有助于培养学生的创新探索精神。为了吸引学生兴趣,要介绍Java编程在学生职业生涯中的作用。可将教师科研作品以及以往学生的优秀作品进行展示,让学生了解经过学习后自己能做出的成绩。另外,还可适度地增加课程以外的Java内容,拓宽学生的视野。例如Java Web编程技术,尤其是Spring等框架技术的应用[7]和Android手机编程等。
为引导学生思考,课堂教学特别要注意以下2点。
2.1将PPT讲解与编程演示结合
现在计算机教学广泛采用多媒体教学手段。毫无疑问,Java教学中采用多媒体技术可以提高教学效率,但要注意Java教学切忌只是播放幻灯片,事实上,讲解中配合程序调试可进一步让学生直观理解问题。在授课过程中,我们注意通过案例辅助知识学习与应用,在案例的不断深化和提升中,由浅入深地引导学生循序渐进地学习与练习,使之达到对问题求解的融会贯通,不断提升思维能力。程序调试不能单一为了演示,要举一反三,辅之以各种变化,让学生深入理解程序各部分的作用,启迪学生思考。例如,讲解事件编程时,可以从如何创建窗体、添加部件、事件处理等逐步添加代码进行演示讲解。为了让学生理解什么样的对象适合作为事件监听者,可以分别就用容器对象、内嵌类、匿名内嵌类等作为监听者的各自优势进行分析比较,从而让学生理解编程的多样性,并灵活选择运用。
2.2课堂上给学生思考和操练空间
教师力求在讲课中不断地设置问题情境,引导学生去分析问题,摸索出多种解决思路,从代码的清晰性、运行和存储效率上进行比较,总结最佳方案。鼓励学生改写已有的程序,通过反思比较不同的求解方法,表面上是吹毛求疵,实际上能提高学习效率。通过解题方法的比较可增进学生的计算思维能力,同时也有助于培养学生批判性思维能力。
Java的知识概念很多并且较为抽象,让学生单纯听教师讲会让学生疲劳,并不利于教学。教学中要不失时机地提问学生、鼓励学生发表自己的意见。教学过程要重在启迪学生智慧、开发学生潜能与创新能力。不要吝惜上课时间,每堂课要留出一部分时间让学生进行课上训练。让学生上讲台去动手编写并调试程序,及时发现学生的问题,及时指导。
软件设计是一个赋予创造性的工作,同时也是一项工程,只有经过严格系统的训练,才能提高自己的编程能力。亲自动手编程并上机调试,是提高编程能力的最好途径[8]。
3.1实验内容安排要引导学生思考
实验安排依照教材配套的实验指导书计划安排[9]。每个实验分为基础训练部分和综合编程部分。基础训练部分将相关知识提炼为若干个小问题,分步骤引导学生在问题解决过程中逐步完成编程训练,记录实验中出现的问题与实验结果,对问题分析原因,从而培养学生基本的计算思维能力。综合编程部分则是独立完成某问题求解,重在培养学生应用和创新意识。实际上,设计性和综合性实验更有利于培养学生解决问题的能力,难度大的综合性实验项目可以安排学生小组协作完成,通过群策群力来调动和发挥学生个体的主观能动性。
3.2教师的上机指导要重在启发
学生上机实验有疑问时,通过启发引导学生自己找到问题所在。强调学生自己从实验现象中分析原因,认识程序的编译错误并修正解决,通过运行结果的分析,找出程序存在的逻辑问题。通过实践得到的经验才是记忆最深刻、掌握最牢固的知识[10]。
3.3让学生反思实验过程,拓展计算思维
实验报告的书写强调记录实验过程中遇到的问题,分析原因、解决办法。通过对解题思路、分析过程、程序编写、程序执行过程的反思,学生可以更深地理解、归纳总结相关知识。通过心得体会及意见,教师也可从学生中得到教学反馈信息。
网络教学作为一种新的教学方式,是课堂教学的很好补充。笔者研制的网络教学平台(http://cai.ecjtu.jx.cn)在Java教学中发挥了重要作用,实现了信息技术与教学的深度融合。网络教学支持多种学习方式,学生可进行自主学习和研究性学习[11]。网上师生互动活跃,课程建设受到了专家肯定,网络课件获得过省多媒体课件一等奖,课程被评为江西省优质课程。
4.1通过网络平台给学生提供学练园地
课程制作形成了完整的网上教学资源,已针对教学知识点制作了50多个微视频。微视频的制作应该是课堂教学的升华和补充。从习题解答角度制作微课,通过习题各类变换讲述对程序结果的影响,更有利于增进学生对内容的理解。每个知识点对应有各类习题可供学生操练,并通过讨论和提问实现师生互动。作业和实验报告可在网络平台上实现电子化批改。
4.2利用网络平台支撑开展研究性学习
在Java教学中应有意识培养学生的群体协作能力,而研究性学习是培养学生协作能力的有效方式。研究性学习通常要完成较为复杂的任务设计。因此,一般安排在课程的较后部分的课程设计环节。学生围绕小组的研究项目,按任务驱动开展学习与探索。网络平台为小组和个人均提供文档空间,小组研究成果通过研究报告的形式发布到网上,供教师和学生交流评价。研究报告中要求学生描述自己的设计方案,归纳用到的编程技术,给出设计的效果,并思考要进一步完善之处。如此可训练学生的文字表达和逻辑归纳总结能力。研究项目的部署直接决定研究性教学开展的质量,研究项目的难度和广度要与学生的能力水平相适应。一个班级中研究项目的安排要提供一定的数量,难度要有一定的差异,可让学生根据各自能力和兴趣有一个选择空间[12]。
在Java教学中,可以从多方面综合考查学生。注重过程性学习评价,考核内容包括考勤、作业、上机报告、网上测试成绩、研究性学习评价、笔试成绩等。学生的平时表现可通过网络平台中用户星级显现,用户星级在教学过程中动态变化,能激励学生沉浸到网络平台的学习环境中。网络考试有利于强化学生对基本概念的理解。一般每班安排3次左右的网络考试。考试试题分为单选、多选、是非、写运行结果、程序补充完整、编程、改错等。考试后,通过答案对比,学生可发现自己的知识偏差,增进对程序的阅读理解。教师通过考试分析学生知识的掌握情况。考试中的编程题是按启发式方式给分,学生在教师模板程序的启发下完成编程,这种启发式有助于培养学生规范的编程风格。
重视计算思维的培养是提高Java教学效果的关键。通过网络协作学习、强调过程性评价方式等手段来激发学生兴趣,可有效提高教学效果。通过强调算法多样性来培养学生的计算思维能力的多样性与灵活性,使学生分析、解决问题的能力大大增强。
References)
[1] Wing J M. Computational thinking [J].Communication of the ACM,2006,49(3):33-35.
[2] 吴文虎.感悟与反思:大学计算机课程改革项目研究的收获[J]. 计算机教育,2014(7):9-10.
[3] 教育部高等学校计算机基础课程教学指导委员会.高等学校计算机基础教学发展战略研究报告暨计算机基础课程教学基本要求[M].北京:高等教育出版社,2009.
[4] 刘道文.高校非计算机专业计算思维能力培养策略研究与实践[J].计算机教育,2013(13):39-43.
[5] 刘贵松,陈文宇,王晓斌,等.计算机学科本科生计算思维能力培养模式的探索与实践[J],中国大学教学,2013(10):25-28.
[6] 丁振凡.Java语言程序设计[M].2版.北京:清华大学出版社,2014.
[7] 丁振凡.Spring3.x编程技术与应用[M].北京:北京邮电大学出版社,2013.
[8] 吴文虎.我怎么讲好“程序设计基础这门课”[J].中国大学教学,2011(12):10-12.
[9] 丁振凡.Java语言程序设计实验指导[M].北京:清华大学出版社,2010.
[10] 刘光蓉.以计算思维能力培养为导向的C程序设计实验教学[J].实验技术与管理,2013,30(1):154-156.
[11] 丁振凡.基于IIS环境的研究性学习平台设计[J],宜春学院学报,2013,35(3):42-44.
[12] 丁海燕.计算机程序设计课程中计算思维的培养[J].实验技术与管理,2015,32(12):16-18.
Training computational thinking ability in Java teaching
Ding Zhenfan, Zhang Hen
(School of Information Engineering,East China Jiao Tong University,Nanchang 330013,China)
In order to train students thinking ability, this paper puts forward the great importance to the computational thinking in book writing, leads to students’ reflection in classroom teaching and experimental teaching, promotes students’ collaboration in network research teaching,and pays attention to process evaluation in teaching evaluation. The students’ evaluation is considered from multiple perspectives. Through the integration of network teaching and classroom teaching,the teaching efficiency is improved.
Java language teaching; teaching reform; computational thinking; research learning
DOI:10.16791/j.cnki.sjg.2016.06.003
2015-12-30修改日期:2016-02-25
江西省2014高等学校教学改革研究课题(JXJG-14-5-20);江西省2015教育科学“十二五”规划课题(15YB032)
丁振凡(1965—),男,江西丰城,学士,教授,研究方向为云计算、语义Web、计算机辅助教学.
E-mail:zfding@ecjtu.jx.cn
G424
A
1002-4956(2016)6-0007-03