SCI论文(www.lunwensci.com):
摘要:针对Java程序设计课程提出以在线实践和项目实训为导向的教学改革思路。课程内容分为基础知识和专题知识两部分。在基础知识中引入在线实践和程序设计竞赛,提高学生的学习积极性和实践能力。专题知识与后续三门专业课衔接,以项目实训的方式引出专业课的基础知识。
关键字:Java程序设计;在线实践;程序设计竞赛;项目实训
本文引用格式:王桂平,等.以在线实践和项目实训为导向的Java程序设计课程教学改革[J].教育现代化,2019,6(27):35-37.
Java程序设计是高校面向计算机、软件工程、物联网等专业开设的一门程序设计类课程。课程的教学目标是通过对Java语言的学习与认识,使学生掌握Java编程技术,理解并掌握面向对象编程、多线程编程、网络编程、Android开发等技术。本文针对Java程序设计课程提出以在线实践和项目实训为导向的教学改革思路。
一课程体系及Java程序设计课程所处位置
程序设计和软件开发是计算机类专业学生都应掌握的基本实践能力,因此这些专业开设了高级语言程序设计(或程序设计基础)、面向对象程序设计、C#程序设计、Java程序设计、Python程序设计等课程。以重庆交通大学为例,这些课程构成如图1所示的课程体系。
一般而言,各高校在开设Java程序设计课程之前,学生先期已经学了C++(或C#、Python)等编程语言,如图1所示。因此,在设计课程教学内容时因注意知识的进阶性,避免相同或相似的教学内容在课程体系中反复出现。
此外,后续专业课,如操作系统原理、计算机网络原理等,在教学演示、课程实验等环节也需要用到编程语言和技术,因此程序设计类课程在教学过程也应注意和后续专业课衔接的问题。
二教学现状
Java语言诞生于20世纪90年代初。2014年3月,Oracle公司发布了Java 1.8正式版,也称Java 8;2017年9月,Java 1.9正式发布。Java具有简单性、面向对象、平台独立与可移植性、多线程、动态性等特点。21世纪初,国内高校开始针对计算机等专业开设Java程序设计课程。
Java程序设计早期的教学主要以Java语法为主线。由于Java体系非常庞大,且新的语法不断加入。以语法为主线的教学思路不仅教学过程枯燥,难以激发学生的学习积极性,而且纯粹讲语法不讲应用,学生难以真正掌握Java语言及技术。因此,近年来,案例驱动、任务驱动、项目驱动等教学方法陆续提出[1][2][3]。这些教学方法不单纯讲Java语法,而是以解决问题、完成任务、甚至实施一个完整的项目为出发点,把Java语言及相关技术串接起来讲解。
而由麻省理工学院等四所大学提出并倡导的CDIO工程教育模式包含4个方面[4,5]:构思(Conceive)、设计(Design)、实现(Implement)和运作(Operate),以软件产品研发到运行的生命周期为载体,将相关课程的教学内容有机联系起来。CDIO可视为任务驱动和项目驱动教学模式的升华。为了更好地将CDIO工程教育理念落地实施,文献[4]针对Java程序设计课程设计了清晰的学习需求、教学目标及配套的工程实践内容,设计了更加合理的教学案例项目、实施过程考核方式,等等。
此外,随着慕课(MOOC)、翻转课题等教学理念引入国内,各高校也在Java程序设计课程中采用这些教学理念[6,7]。文献[6]针对Java程序设计课程提出项目驱动和翻转课堂相融合的教学方法,总结了一些具体的教学案例,该教学方法取得了较好的效果。
三教学改革及教学方法
笔者承担的Java程序设计课程,理论教学为32课时,实验教学为16课时。本文提出的以在线实践和项目实训为导向的教学改革思路,将理论教学内容分为两部分:基础知识和专题知识。课时安排如表1所示。基础知识部分包括Java基本语法、面向对象思想及其在Java语言中的实现,占16课时。专题知识部分包含三个专题(也占16课时):Java多线程技术、Java网络编程基础、Android开发,分别与下学期三门专业课衔接:操作系统原理、计算机网络原理、移动互联APP。
(一)基础知识
如图1所示,学生前期已经学了C++、C#编程语言,部分学生还选修了Python语言,这3门语言都是面向对象编程语言。此外,学生还学了面向对象程序设计这门课。因此,在设计Java程序设计基础知识教学内容时,一个应遵循的原则是:用尽力少的课时讲解Java基本语法和面向对象思想。具体执行情况如下。
1.对Java基本语法中的数据类型、运算符、流程控制均一带而过,重点讲解Java语言中特有的或与其他编程语言有区别的语法,如文档注释、数组等。
2.着重讲解面向对象思想在Java语言里的实现,包括:定义类和使用对象、构造方法、封装与隐藏、继承和多态、抽象和接口、使用Java类库,等等。这部分内容占了10课时,各部分内容课时安排如表1所示。
3.授课时注重将Java语言和学生前期学过的C++、C#、Python对比分析,如C++语言中的指针与C#语言中的引用,C#语言和Java语言中的垃圾内存回收机制,C++语言中的纯虚函数和Java语言中的抽象方法,等等。
此外,为了提高学生的学习积极性、激发学生的编程兴趣,在基础知识部分还引入在线实践和程序设计竞赛,这二者的基础是在线评判,如图2所示。
在线评判是指对用户提交的程序,根据所采用的编程语言(C、C++、C#、Java、Python等)调用相应的编译器,编译用户的程序,编译无误后运行,读入测试输入数据,生成用户程序的输出数据,再将其与正确的输出数据进行比对,从而评定用户程序的正确性并统计程序的运行时间,最后把评判结果实时反馈给用户。
传统的编程实践往往是由老师布置题目,学生课后完成并提交给老师手工批改。在线实践不同于传统的编程实践,它是指由在线评判(OJ,Online Judge)网站或软件提供题目,学生在线提交程序,在线评判系统实时评判并反馈结果。这些题目往往具有较强的趣味性和挑战性,而且评判过程和结果公正及时,能引起学生的极大兴趣[8]。
目前国内高校开展的程序设计竞赛主要有省市级大学生程序设计大赛、中国大学生程序设计大赛、国际大学生程序设计大赛、蓝桥杯全国软件和信息技术专业人才大赛(包括省赛和全国总决赛)、中国高校计算机大赛团体程序设计天梯赛等。这类学科竞赛具有参赛门槛比较低(只要学了一门编程语言就可以参赛)、趣味性高、层次多、参赛机会多等特点,同时也具有较高的挑战性,所以吸引了大量学生参赛。
笔者承担的Java程序设计课程,课堂案例、课后练习、实验任务、上机考试等教学内容部分或全部采用在线实践。同时也鼓励学生积极参加各类程序设计大赛,获奖甚至仅仅是参与都能得到相应的加分,以此激励学生通过这些新颖的程序实践提高编程和软件开发能力。
(二)专题知识
由于Java语言是计算机专业系统学习的最后一门编程语言(如图1所示),因此这门课程还起到与后续专业课衔接的作用。三个专题的教学方法是,在简述必要的基础知识后,通过项目实训的方式把相关的方法和技术串接起来。三个专题只是后续三门专业课的前期导引,因此涉及到的基础知识只是常识性的、普适性的知识。以下简述三个专题的教学过程。1.Java多线程技术专题:简述进程和线程的基本概念、Java实现多线程的两种方式(继承thread类创建线程类、实现runnable接口创建线程类),通过两个项目(多线程计算素数、多线程计数)讲述Java多线程技术的实现细节。2.Java网络编程基础专题:简述网络编程基础知识后(难度不超过计算机导论课程要求),通过两个客户端/服务器项目(素数判别、猜数字小游戏)讲述Java网络编程技术的实现细节。3.Android开发专题:简述Android系统体系结构、Android应用项目及构成、开发环境搭建后,通过两个项目(简易计算器、音乐播放器)讲述Android开发的细节技术。专题知识部分不仅是Java语言和技术的应用,也能锻炼学生从项目整体的角度把握Java技术的能力。通过专题知识的学习后,学生能完成实验任务里设置的同等难度的项目。
(三)其他教学方法
1.教学案例的设计应注重趣味性、更贴近生活。例如,Java程序设计课程采用的课堂案例包括:用Java及面向对象模拟大学课堂;用Java及面向对象设计多个类表示《出师表》中的人物,设计属性和方法,类和类之间的继承关系,程序能输出整篇《出师表》;用抽象类或接口实现鲁提辖梯度、但不必遵循和尚的所有行为(吃斋、念经、打坐、撞钟等)。
2.为了改变学生拖沓的陋习,所有课后作业和实验报告均通过网络教学平台提交,设定截止时间;在OJ系统上布置的在线实践作业,也设定截止时间;截止时间过了,就不能提交了,这部分平时成绩就没有了。
3.培养学生查阅JDK API等帮助文档的习惯。在软件开发中,避免不了频繁查阅帮助文档,而这一点对在校学生来说是个障碍。除了在课堂教学时反复演示通过JDK API查阅JDK类的用法外,还在实验报告中设计一些需要学生独立查阅API文档才能完成的实验任务。
4.培养学生写文档注释的习惯。文档注释是Java中的一种新的注释类型,在Java项目中适当位置编写文档注释后,可以通过javadoc命令(或IDE开发工具中的菜单命令)生成一份系统的API文档。
四教学效果及结束语
本文针对Java程序设计课程提出的教学改革思路,在基础知识部分引入在线实践和程序设计竞赛这些新颖的编程实践,可以提高学生的兴趣,专题知识部分以项目实训的方式引出后续三门专业课的基础知识。上述教学思路在重庆交通大学已连续实施3年,取得了非常好的教学效果。3年间,学生在重庆市大学生程序设计大赛(团队赛)上获得二等奖4个、三等奖10个,在蓝桥杯大赛(个人赛,Java语言B组)上获得国家二等奖1个、三等奖5个,省一等奖6个、二等奖11个、三等奖15个。另外,教学班的学生承担大学生创新创业计划项目市级1项、校级5项。在后续的教学研究中,笔者将在这种教学思路的基础上进一步探索新颖的教学方法。
参考文献
[1]夏红科.非计算机专业Java语言案例教学实践[J].中国电力教育,2013(35):123-124.
[2]卢冶,刘永良,张小立.面向应用型人才培养的Java课程群研究与建设[J].实验室研究与探索,2017(1):207-211.
[3]王桂平.基于实训项目的面向对象程序设计课程教学[J].计算机教育,2009(13):191-193.
[4]索望,昌燕,何林波.CDIO模式下Java程序设计课程教学改革探索[J].计算机教育,2016(9):111-114.
[5]孙晋永,赵响.基于CDIO教育理念的课程教改探索——以“Java程序设计”课程为例[J].课程教育研究,2015(10):252-253.
[6]程珍,池凯凯,李燕君,等.项目驱动和翻转课堂相融合的教学模式在Java程序设计教学中的应用[J].计算机教育,2018(2):91-94.
[7]谢妙.地方应用型本科高校创新课堂教学模式探索——以玉林师范学院《Java程序设计》课程为例[J],教育现代化,2017(41):42-43.
[8]王桂平,冯睿.以在线实践为导向的程序设计课程教学新思路[J].计算机教育,2008(22):100-102.
关注SCI论文创作发表,寻求SCI论文修改润色、SCI论文代发表等服务支撑,请锁定SCI论文网! 文章出自SCI论文网转载请注明出处:https://www.lunwensci.com/jiaoyulunwen/9455.html