以能力培养为核心的Java程序设计课程教学探索

2013-03-14 06:00:33郭珉闫勇常新功
统计学报 2013年4期
关键词:点菜程序设计编程

郭珉,闫勇,常新功

(山西财经大学信息管理学院,山西 太原 030031)

学科建设与教学研究

以能力培养为核心的Java程序设计课程教学探索

郭珉,闫勇,常新功

(山西财经大学信息管理学院,山西 太原 030031)

在Java程序设计课程教学过程中,“理论+程序演示”的传统教学方法容易造成学生创新能力的缺乏和自主实践能力的低下。要解决这一问题,教师必须转变教学理念,以能力培养为核心进行课程教学改革,将计算思维引入课程的教学中,提高学生学习知识的能力和素质。

能力培养;Java程序设计;计算思维

Java语言是一种优秀的语言,具有面向对象、与平台无关、安全稳定和多线程等优点,在教育部计算机基础课程教学指导委员会的白皮书中,Java课程被列为核心课程之一。山西财经大学的电子商务专业、信息管理与信息系统专业、计算机科学与技术专业、信息与计算机科学专业都开设了Java程序设计课程,这些专业涉及到管理学、工学、理学等多门学科,对学生的能力培养提出了新要求。

以电子商务专业为例,教育部高等学校电子商务专业教学指导委员会在其编制的《普通高等学校电子商务本科专业知识体系》中指出,从教学内容划分,电子商务专业教育包括课堂教学和实践教学两个方面;从学科要求考虑,电子商务专业教育涉及的综合性学科要求包括:知识要求(理论与实践能够结合)、能力要求(获取知识、应用知识、工程实践、管理实践、创新与创业、沟通协调、人机交互等方面的能力)、素质要求(包括思想道德素质、文化素质、网络素质、身心素质)等。针对这些知识要求、能力要求和素质要求,教师必须实现教育理念的转化,在专业课程的教学与实践中注重学生各种能力的培养。

Java程序设计是一门理论与实践并重的课程,涉及的内容较多,主要有Java基础知识、Java面向对象的编程(封装性、继承和多态)、异常处理机制、Java GUI编程、Java输入输出、多线程机制、JDBC数据库编程、网络编程、泛型与集合框架等。教师需要考虑如何在有限的课时内完成教学任务,如何通过课程改革与实践达成课程目标,实现学生能力的培养,使他们具有自主学习的能力。课程目标不仅是传授、训练和拓展学生在课程方面的专业知识,更重要的是教会学生利用编程手段解决专业或生活中的各种问题,即培养学生利用计算机处理和解决问题的思维与能力,提升综合素质。过去,由于“理论+程序演示”的理论教学方法以及“学生自主实验+教师随堂指导”的实验教学方法存在一些缺陷,导致学生的创新能力欠缺、自主实践能力较差。那么,如何改革课程教学与实践,在实践中培养创新意识,提高学生的动手能力、思维能力、探索研究和创新能力,是值得研究的课题。本文拟结合教学实践,分析教学中存在的问题,提出能力培养的思路与方法。

一、课程教学中存在的问题

(一)学生对课程缺乏兴趣

学生在程序设计方面普遍存在“听起来清楚,看起来模糊,编起来糊涂”的问题,特别是非计算机专业的学生,对程序设计心存恐惧,总觉得太难、太枯燥。一些学生对程序设计课程缺乏兴趣,投入的时间不多,导致编程能力不强,课程学习跟不上进度,感觉越学越难。

(二)课堂讲授方式落后

由于课程知识点较多,授课时间有限,为了完成教学任务,教师多采用“以教师为主导,学生被动接受知识”的“满堂灌”课堂讲授方式,教学方法和手段单一,缺乏互动,学生主动性差,畏难情绪高,兴趣索然。

(三)学生能力培养不足

传统教学过于注重语法,重点在理论知识的讲授上,导致学生无法对所学知识形成完整、系统的认识,不能灵活应用这些知识解决实际问题。许多学生擅于读程序、会考试,却不能自主地编写出一个程序,更不能利用所学知识开发程序,以解决专业或生活中的问题。另外,学生习惯于教师主导的“满堂灌”被动学习模式,没有主动学习的意识,缺乏创新能力。许多学生遇到课本或教师没有讲到的问题就束手无策,不会主动借助于帮助文档或网络等手段寻求解决问题的途径。

(四)实践教学组织不够

Java实验大多是验证型实验,要按既定操作步骤完成,学生只需按程序模板的提示来填写缺失代码即可。所以,学生在上实验课时,很少进行课前预习,在实验操作时只是按照提示填写代码,而对于为何如此操作没有进行深入思考。教师在实验教学中,多注重学生上机做出的结果,而对于学生是否在操作过程中清楚操作原理和方法,真正掌握了操作技术未加重视。

本文认为,这一问题产生的根源在于教师只注重零散知识的讲授,而没有把提高学生的思维能力、动手编程能力、研究探索和创新能力,培养学生的职业素养作为主要目标。知识的理解只是基础,灵活应用也只是过程,能力的提高才是最终目标。在教学过程中,教师必须注重学生能力的培养,改革教学模式,改进教学方法和手段,真正把课讲好。

二、计算思维能力的培养

做任何事情都要讲求方法,科学的方法基于科学的思维。科学的思维分为三类,即理论思维(逻辑思维)、实验思维(实证思维)和计算思维(构造思维)。计算思维是教学改革的方向,其目标是培养学生使用新的思维方式——计算思维,解决专业和生活中的各种实际问题。

2006年3月,美国卡内基·梅隆大学计算机科学系主任周以真(Jeannette M.Wing)教授在美国计算机权威期刊《Communications of the ACM》上提出了计算思维(Computational Thinking)的概念:计算思维是运用计算机科学的基本概念进行问题求解、系统设计以及人类行为理解等涵盖计算机科学之广度的一系列思维活动,其本质内容是抽象和自动化。计算思维是每个人的基本技能,而不仅仅是计算机科学家所专有。它涵盖了问题求解所采用的一般数学思维方法、现实世界中巨大复杂系统的设计与评估的一般工程思维方法,以及涉及复杂性、智能、心理、人类行为理解等的一般科学思维活动。

大学应以培养学生的计算思维为核心,使计算思维如同实证思维、逻辑思维一样,成为每个学生应具备的基本科学思维能力。清华大学教授吴文虎在谈到“程序设计与计算思维”时指出:“程序设计基础课有利于训练计算思维能力和动手解决问题的能力;计算思维能力在较大程度上是以思维方式的数学化为支撑的,在程序设计基础课上通过讲课和学生自己上机实践,来体味一个实际问题是怎么变为计算机能够解决的问题,这个过程蕴含着计算思维要素。”

如何明确、恰当地将计算思维融入Java程序设计课程的教学过程中,以提高学生运用计算机进行知识抽象、问题求解和形式化描述的能力,是课程教学改革的重要课题。

(一)教学组织过程要具有针对性

计算思维能力的培养需要教师对教学内容有新的理解和认识,尽量结合学生不同的专业背景,根据知识点设计出贴近学生学习或生活、使他们感兴趣的案例进行计算机教学,重点是介绍计算机在不同学科中的应用以及解决问题所需的方法和思想。因此,任课教师需要理清思路,明确任务,逐步改变讲授方法,在教学中注重对学生计算思维能力的培养。要做到这一点,教师必须精心设计教学环节,准备合适的案例,并在教学过程中根据学生的反馈,不断调整教学内容和方式。

由于Java课程的知识点较多,教师不可能在48个理论课时中全部讲完,故需采用多种方法组织教学与实践(见表1),即将一部分内容作为课堂讲授内容(主要指Java基本的、重要的知识点),另一部分作为实验课内容,让学生自主学习并验证,教师随堂做一些解释和答疑。对于一些可以利用“任务驱动”的知识,可以让学生自学,并作为课后作业提交。“任务驱动”教学法通过在教学过程中布置适当的任务,帮助学生确立短期学习目标,不仅可以激发学生的积极性,而且可以通过多个短期目标的达成,实现课程的总体目标。比如,在实际教学过程中,Java图形、图像与音频通常没有时间讲授,可以将这一部分内容作为学生自主学习的内容,安排具体的小案例要求学生根据自学内容来解决问题。以图形为例,可以让学生自学Java绘制基本图形的功能,并布置作业要求学生利用基本图形功能完成复杂图形的绘制,最后布置一个大作业,要求学生利用前面学习的UML图、Java面向对象编程的三大特性(封装、继承、多态)以及Java GUI编程的一些知识,设计出类似于Windows画图程序的Java桌面应用程序。通过“任务驱动”教学方法进行“做中学”,使学生学以致用,提高学习兴趣和效果。

表1 各知识单元的教学组织方式

(二)教学内容、教学方式要具有启发性

为了培养学生的计算思维能力,教学的重点应放在讲解思路上,即如何对问题进行抽象,并将其抽象成数学模型,列出算法或计算步骤,编程加以实现。

在教学内容的组织上,教师应按教学大纲梳理知识单元中涉及的计算思维,将知识点用学生学习或生活中感兴趣或熟悉的案例加以诠释。以案例为驱动讲授知识点时,教师要多提问,并强化分析。所有课程内容都可以采用这种案例驱动的方式,引出基本概念和基本方法,再归纳总结上升为一般规律。比如,学生在刚开始上课时,往往对程序设计有畏难情绪,害怕老师提问。对此,教师可以用学生感兴趣的案例调动其积极性,在课堂上多提问,不是简单地演示案例的操作结果,而是让学生清楚如何抽象问题,如何用UML表述,怎样利用算法和代码来解决问题。在编写代码环节,教师可以让学生根据前期的分析,在机器上编写代码并调试,这样既可以了解学生是否真正掌握了教学内容,也可以发现现场编程中出现的问题,找出教学过程中的盲点。

除此以外,教师在教学中要善于引导学生进行知识的关联和进一步的深入学习。比如,在介绍Java GUI设计时,可以要求学生自行设计一个简单的Java应用程序来解决专业或生活中的问题。有学生编写了一个“随机点菜”的小程序来解决每天去餐厅点餐的问题,但这种小程序只是一个小窗口,实现功能很简单,代码繁琐,可扩展性较差。学生在教师的指导下重新设计了程序(见图1),编程中关联了面向抽象编程思想以及集合、输入输出流、图形图像等一系列知识,使得完成后的整个项目较为完整,功能有所增强,扩展性较好。

图1 点菜程序的总体设计视图

点菜程序运行以后,首先显示的是登录界面,用户必须输入自己的桌号(包间号),才能开始点菜。如果输入的桌号已有人,则会弹出对话框提示“此桌已有人,请重新选桌”。用户输入正确的桌号后,系统会自动显示当前点菜的日期和时间,用户就可以根据荤菜(Meal Menu)、素菜(Vegetarian Menu)、主食(Staple Food Menu)、汤粥(Soup and Porridge Menu)四个分类分别进行点菜,每个菜的界面都有五个功能,即“浏览饭店菜单”、“点菜”、“随机点菜”、“撤销点菜”、“下单”。用户点菜结束后,还有结账功能;该桌客人整个点菜流程结束后,点菜程序会等待接受另一桌客人继续点菜。

在上面程序的基础上,笔者根据项目驱动法留下作业,建议学生改进小程序,拓展他们的技能。比如,继续引导学生利用JDBC技术改进程序,将此程序设计为“基于数据库的Java桌面程序”,并建议学生继续学习有关Java的其他技术,开发基于网络的点菜(订餐)程序。这种“任务驱动”的教学方法,激发了学生的学习热情和兴趣,通过自己动手、亲身实践,极大地提高了编程能力、团队合作与协调能力。

三、动手实践能力的培养

Java程序设计是一门实践性极强的课程,从第一堂课开始,教师就要强调动手能力的重要性,使学生认识到,“学好程序设计,既不是听会的,也不是看会的,一定要勤上机实践”,“把课程中遇到的问题上机进行练习测试,不要怕出错,只有多出错,才能更好地学习程序设计”。因此,要注重培养学生的操作意识和动手能力,特别是对非计算机专业的学生来说,一定要多动手,建立上机操作的勇气和信心。教师布置的任务要由简单到复杂,引导学生通过编程来解决实际问题,并获得解决问题后的成就感和满足感。

需要强调的是,对于程序设计而言,只记住若干语句而不会解决实际问题,不能说具备了编程能力。计算思维是否正确,必须经过实践的检验。因此,能够上机编程并且能正确通过调试,顺利运行得到预想的结果,是对学生计算思维能力的调整和检验。这个不断调整和检验的过程,有利于培养学生探索知识和研究问题的能力、踏实严谨的科学态度以及不怕困难和挫折的精神。

教师在实验内容的设计上要尽量趣味化,贴近生活,除了布置验证型实验和设计型实验外,在学期结束前要对学生进行分组,并进行组内再分工,要求学生完成综合的课程设计题目。教师在实验指导时,不要直接回答学生的疑问,而要注意问题的引导,让学生对发生的现象进行解释,并就他们的解释继续提问,培养他们分析判断、自主学习的能力。在综合课程设计环节,由于其包含了大量的内隐学习,教师要在遵循认知规律的基础上,设定一些教学环节,引导学生进行自主学习和团队合作,最终达到掌握各种学习工具,善于进行知识发现、知识共享、知识传播、知识创造的目的。

四、探索研究能力的培养

要实现自主学习,需要培养学生的探索研究能力。要打破传统“以教师为主体”的课堂讲授方式,改为“以学生为主体,教师为引导”的授课方式。教师在课堂上要多用引导式提问,课后要布置知识扩展性小作业。在实验课上,教师要注意改变学生不思考实验结果的习惯,培养他们对实验结果的解读能力。比如,可以将某些实验内容设置为课堂考核内容,就实验内容随机进行提问,要求学生注意观察、思考和解释问题,学会解读实验结果,摆脱依赖书本结论的思维定势。此外,实验中除要有常规内容外,还可布置实验项目,通过“任务驱动”引导学生主动学习新知识,提高其学习能力。

在培养学生探索研究能力的过程中,不仅要使他们了解、掌握探索研究的方法,还要锻炼他们的意志力,即遇到困难不轻易放弃、敢于不断尝试的能力。许多学生在遇到问题时不愿意探索,不是因为能力问题,而是对探索研究心存恐惧,遇到困难就胆怯,没有足够的意志力。因此,教师应多安抚、鼓励学生,引导学生修正程序,通过增强学生的自信心,培养其探索能力,提高其综合素质。

五、创新能力的培养

在教学形式上,教师可以选择多种有利于培养学生创新能力的方式。例如,可采用启发式教学,充分调动学生学习的主观能动性,使其成为教学的主体,积极参与到教学活动中。这有利于培养学生的创新能力,使其潜能得到最大程度的发挥。

在课堂讲授或分析案例、做项目时,鼓励学生对同一问题可以有不同的想法,并将这些想法与大家进行交流。这可以使学生的思想不被束缚,养成独立思考、深入研究的好习惯,提高自身的创新能力。

在实验教学中,要鼓励学生充分展示自己的想法。所有的实验过程、实验结果不要求与标准答案统一,学生如有自己的创新,教师应予以表扬或在测评成绩上给予加分肯定。对于一些设计型实验,实验题目要贴近生活,并且留有一定的创新空间,教师不给出任何参考步骤或样张,要求学生自由发挥。对于期末较大的设计项目,教师只提供一些参考题目,学生可以自由组队、自选题目进行设计,学期期末第16周或第17周要求学生组队参与演示、答辩。

六、总结

针对目前Java程序设计课程教学与实践中存在的问题,本文提出将计算思维引入课程教学过程中,以提高学生运用计算机知识抽象问题、求解问题的能力,并就如何培养学生的计算思维能力、动手实践能力、探索研究能力和创新能力提出了一些思路和方法,以期将“知识”、“技能”、“素养”三者有机地结合起来,以能力培养带动学生的知识学习和素质的提高。

由于实验在Java课程中占有很重要的地位,课程的考核方式需要改进(见表2)。理论课成绩由平时成绩和期末成绩组成,平时成绩包括学生到课情况、上课回答问题情况、完成作业情况,实验成绩包括课堂考核(多为验证型实验,根据学生的完成情况当场计分)、实验报告考核(多为设计型实验,根据报告完成情况和创新情况给分)、综合课程设计评分。这样,通过理论考试可以考察学生对理论的掌握情况,通过上机实验可以考察学生的实践能力和对理论知识的应用能力。通过这种方式的考核,使学生树立自信心,激发学习兴趣,教师也能掌握学生的学习情况。

表2 考核方式

Java程序设计课程的改革与实践表明,学生学习的主动性、积极性明显增强,理论知识和实践能力均有所提高,能够依托计算机编程环境对所需求解的问题进行分析,并将其抽象为数学模型,加以完成。

[1]李廉.计算思维——概念与挑战[J].中国大学教学,2012(1):7-12.

[2]李波.计算思维与大学计算基础[J].中国大学教学,2012(7):43-45.

[3]吴文虎.我怎么讲好“程序设计基础”这门课[J].中国大学教学,2011(12):10-12.

[4]黄洪,等.任务驱动教学法在JAVA程序设计课程中的应用[J].计算机时代,2012(4):49-51.

[5]刘烨.浅谈Java程序设计的课程设计和教学设计[J].电脑知识与技术,2012(11):7981-7982.

[责任编辑:高 巍]

Exploration of Teaching Based on Competency Training in Java Programming Curriculum

GUO Min,YAN Yong,CHANG Xin-gong
(School ofInformation Management,Shanxi UniversityofFinance&Economics,Taiyuan 030031,China)

The traditional teaching of explaining the theory and demonstrating the program is liable to lead to the students’deficiency of innovative and independent practical ability.Firstly,the paper discusses and analyzes this problem in Java programming curriculum teaching.Teachers should transform and reform teaching curriculum revolving around ability cultivation in an efforts to change the problem.So the paper introduces computational thinking into teaching and put forward some ideas of cultivating the competence of computational thinking,practicing,research and innovation,which emphasize students’ability cultivation to promote their knowledge,competences and quality.

competencytraining;Java programmingcurriculum;computational thinking

G642

A

2095-106X(2013)04-0031-05

2013-11-01

山西财经大学教改课题“知识管理融入程序设计教学的研究与实践”(2012120);山西财经大学校级教学团队项目

郭珉(1978-),女,山西忻州人,山西财经大学信息管理学院教师,研究方向是电子商务;闫勇(1975-),男,山西河曲人,山西财经大学信息管理学院教师,研究方向是电子商务;常新功(1968-),男,山西太原人,山西财经大学信息管理学院教授,博士,研究方向是数据挖掘。

猜你喜欢
点菜程序设计编程
点菜接龙
意林(2023年14期)2023-09-01 12:30:36
会点菜的人,混得不会太差
好日子(2021年8期)2021-11-04 09:02:50
编程,是一种态度
少先队活动(2021年2期)2021-03-29 05:41:04
元征X-431实测:奔驰发动机编程
编程小能手
学生天地(2020年17期)2020-08-25 09:28:48
基于Visual Studio Code的C语言程序设计实践教学探索
计算机教育(2020年5期)2020-07-24 08:52:56
纺织机上诞生的编程
从细节入手,谈PLC程序设计技巧
电子制作(2019年9期)2019-05-30 09:42:04
疯狂编辑部之点菜风波
高职高专院校C语言程序设计教学改革探索