面向软件开发实践能力的《Java程序设计》教学资源建设
2020-04-20张峰刘迪仇丽青赵卫东
张峰 刘迪 仇丽青 赵卫东
摘 要:高校《Java程序设计》课程教学的核心目标是提高学生使用Java和面向对象编程技术开发应用软件的实践能力,因此教学中需要相应的教学资源的支撑。本文介绍了围绕提升学生软件开发实践能力开展的Java课程教学资源建设方面的改革,提出了“MOOC+案例驱动式教材+信息化辅助教学平台+企业级案例库”的教学资源建设模式。首先,为配合基于“MOOC+翻转课堂”的教学模式,建设包含知识点视频和案例讲解视频的MOOC视频资源,并将其作为配套资源,撰写了案例驱动的《Java程序设计》教材;其次,引入了程序设计类实验辅助教学平台(PTA),丰富了教学的习题库;最后,通过校企合作,建设了适用于教学实践和实训的企业级项目资源案例库。
关键词:Java教学资源;软件开发实践能力;教材;题库;案例库
中图分类号:TP311.5 文献标识码:A
Abstract:The teaching of Java programming in universities aims at improving a students practical capability of developing application software using Java and object-oriented programming technique.Therefore,corresponding teaching resources are needed in teaching.In this paper,we introduce the reform of java course teaching resource construction,aiming at improving students' practical capability of software development.Specifically,we put forward the teaching resource construction mode of MOOC + Case driven textbook + informational assisted teaching platform + enterprise application cases.First,we construct MOOC video resources,including videos explaining knowledge points and videos explaining application cases.Moreover,we use these MOOC videos as supporting resources to compile the application cases driven Java programming textbook,in order to meet the needs of the teaching mode based on MOOC + flipped classroom.Second,we introduce the Programming Teaching Assistant (PTA) platform to enrich the teaching exercise library.Finally,we construct a cases library containing enterprise project cases for teaching practice and training through the cooperation between schools and enterprises.
Keywords:Java teaching resource;practical ability of software development;textbook;teaching questions bank;
teaching cases library
1 引言(Introduction)
Java是軟件开发领域最为重要的编程技术之一[1,2]。近年来,随着云计算、移动互联网和大数据等各种新技术的发展,Java技术也具有了更多的用武之地。在当前的高等教育和职业教育中,Java相关课程是程序设计类课程中必不可少的内容。在掌握Java主要技术后,学生的软件开发能力、就业能力都能够得以提高。因此,当前大多数计算机和软件工程相关专业的培养方案中都包含了Java技术的相关课程。
Java技术体系庞大,包含了大量的技术要点,而所有的内容都是以Java语言为基础的。因此,讲授Java语言基础的《Java程序设计》是所有Java技术相关课程的基础,该课程的学习效果将直接影响到学生Java软件开发的能力。
课程教学需要有教学资源的支撑。《Java程序设计》课程教学的目标是提高学生的Java软件开发能力,其教学过程中所需的教学资源需要围绕该目标来建设。面向高等院校计算机和软件工程等相关专业,本文提出了以提升软件开发实践能力为目标的《Java程序设计》教学资源建设方案,通过MOOC、案例式《Java程序设计》教材、程序设计类实验辅助教学平台(Programming Teaching Assistant,PTA)题库,以及基于校企合作的企业级案例库四类教学资源的建设,为《Java程序设计》的教学提供教学资源的支持。
2 《Java程序设计》教学资源知识点概述(Knowledge point of Java Programming teaching resources)
作为当前企业级软件开发最为主流和热门的编程语言,在当前高等学校的计算机或软件工程等相关专业的技术类课程中,Java技术相关的课程涉及Web应用开发、基于Android的移动应用开发,以及各种实习、实训实践课程。而所有这些课程的基础和前导课程都是以JavaSE为核心的《Java程序设计》。不论该课程的性质是专业必修课还是专业选修课,以及学时安排的多少,该课程最为核心知识的基础知识点是相对固定的。教学团队主要围绕以下知识点建设《Java程序设计》的课程教学资源。
(1)Java语言概述。主要包括:①Java语言的起源、发展、特点以及技术体系,突出Java语言的与众不同之处,特别是Java与C和C++这两种语言的区别;②Java语言中的基础概念,包括Java虚拟机JVM、Java运行环境JRE,以及Java程序实现跨平台的技术基础;③Java开发工具JDK的下载、安装、环境变量配置和主要的集成开发环境,以及Java程序的开发流程。
(2)Java基础语法。主要包括Java的数据类型、流程控制等语法基础。
(3)Java面向对象基础。该部分是JavaSE基础中最为重要的内容,包括Java类、对象、内存分配、package、继承、多态和接口。
(4)Java常用类。主要包括String、StringBuffer、StringBuilder、包装器类、Scanner,以及Date与Calendar等日期时间相关类。
(5)Java容器类。主要包括:Collection、List、Set、Map等基础容器。
(6)Java异常。主要包括异常的分类、捕获和处理。
(7)IO流。主要包括IO流的分类,以及节点流、处理流等各种IO相关类的使用。
(8)其他基础知识点。该部分内容是在上述基础知识点的基础上,根据课程性质及其学习安排,动态确定的基础知识,如GUI(Graphic User Interface)、JDBC(Java Data Base Connectivity)与多线程等。
3 《Java程序设计》教学资源建设现状(Current situation of Java Programming teaching resources construction)
当前大多数高校《Java程序设计》的课堂教学和实践教学都围绕上述知识点来组织,主要教学资源包括常规的介绍上述基础知识点的教材,以及用于实践练习的基础编程题。近年来,随着MOOC[3,4]和OJ(Online Judge)[5]等信息化平台的应用,很多学校又引入了MOOC视频、在线自动评测编程题等教学资源。
然而,受限于课程性质和授课学时,当前《Java程序设计》课程的内容普遍深度不够。大部分学生在课程结束后,仍然只是能够做一些简单的OJ编程题,开发一些功能简单的命令行或GUI程序,学生使用Java面向对象编程技术开发较为大型的软件的实践能力还无法满足企业级应用开发的需要。
从课程教学资源建设方面来看,存在上述问题的主要原因是:第一,从MOOC资源和教材来看,当前《Java程序设计》相关课程的MOOC视频、教材都以介绍知识点内容为主,缺少对于知识点的应用,特别是结合开发实际的小型的知识点案例,从而使学生无法灵活运动基础知识点来对实际问题进行编码。第二,从作业、实验等环节来看,传统的纸质作业、实验报告提交代码的形式显然无法满足学生软件开发实践能力的提高。虽然很多高校引入了OJ等信息化平台,使学生的作业、实验可以在线提交并实现了自动的评测,然而,目前诸如OJ的平台中题目的题型非常单一,只能评测一些适用于自动评测的编程题;同时,学生只需保证提交的代码能夠通过OJ系统的测试用例就可判断为正确,无法保证评测学生的代码质量和编码规范等。第三,从学生课程结束后的软件开发实践能力来看,大部分学生还不具备初步的软件开发能力,缺少企业级软件开发的基本实践和基本能力。
综上,当前《Java程序设计》教学中的教学资源还不够完善,已有教学资源涉及的内容较为简单,在教学过程中也难以激发学生的学习兴趣,不少学生感觉只是在C和C++的基础上又学习了一门编程语言,其使用Java语言和面向对象编程技术开发较为大型的应用软件的能力仍需要进一步提高。
4 《Java程序设计》教学资源建设(Java Programming teaching resources construction)
为了能够通过《Java程序设计》课程的教学切实提高学生的软件开发实践能力,围绕课程资源建设,教学团队开展了如图1所示的四个方面的教学资源建设工作:①Java MOOC视频资源建设;②Java教材建设;③信息化平台题库建设;④企业级案例库建设。
首先,团队建立了Java基础知识点教学资源,主要建设了Java MOOC视频资源,自编了Java教材。这两类教学资源是学生学习Java语言基础知识点的主要教学资源。在课程的教学过程中,学生通过MOOC视频和教材课下自学课程知识点内容,课堂通过翻转课堂教学加深学生对基础知识点的掌握。
其次,为了提高学生点基础知识点的实践能力,使学生能够灵活运用Java基础知识点,团队基于现有的信息化平台构建了信息化平台题库,将其作为学生实践的基础平台。教师通过平台题库中题目发布作业题、实验题和考试题,在线完成教学过程中作业、实验和考试等多个环节。
最后,为了能够使学生具备使用Java面向对象编程技术进行企业级应用软件开发的初步能力,建立了综合实践教学资源,构建了企业级案例库,以支撑学生的实践和实训。
4.1 MOOC资源建设
为了能够适应MOOC、SPOC结合翻转课程的教学方法,也为了让学生充分利用个人时间学习,团队首先根据上述的《Java程序设计》基础知识点,录制了覆盖核心知识点的MOOC视频。同时,围绕与生活实际结合紧密的小型编程案例,录制了部分视频。通过知识点视频和小型编程案例视频,使学生在线下通过自学可以掌握基础核心知识点,并能够有一定的灵活运用知识点的能力。
4.2 案例式教材建设
在学生的学习过程中,教材是与MOOC视频同等重要的教学资源。当前关于《Java程序设计》的国内外教材非常多[6,7],学生往往容易迷失在大量可选的教材中。为了满足教学中学生学习的实际需求,我们结合MOOC视频,编写了与MOOC视频配套的《Java程序设计》教材。在教材的建设过程中,我们侧重Java基础知识点的实际应用。为此,我们在教学过程中积累了部分贴近生活或来源于实际应用的小型编程案例;同时,与其他专业课相融合,积累了部分与其他专业课知识点相关的小型编程案例。通过两类案例,一方面可以使学生在实现案例的过程中熟练Java的基础知识点,另一方面也提高了学生灵活运用这些基础知识点解决实际问题的能力。
4.3 基于PTA的题库建设
为了提高学生的实践动手能力,团队在之前的教学实践中引入了Online Judge平台。然而,当前Online Judge平台还主要是提供编程题,无法满足平时作业、实验、考试对多种类型练习题目的要求。为此,教学团队引入了PTA平台。该平台可支持单选、多选、程序填空、函数题、编程题、主观题等多种类型的题目,可以支撑数据结构、操作系统等计算机专业核心课程,以及C、C++、Java、Python等多种编程语言课程。同时,该平台采用了SaaS模式[8],包括了全国500多所高校的3000多位老师出的题目,题库十分丰富。基于PTA平台,教学团队构建了适合于本校学生教学实践的题库。此外,教学团队也从lintcode、leetcode等平台中引入了部分习题,丰富了基于PTA的题库。
4.4 基于校企合作的企業级软件开发案例库建设
《Java程序设计》的一个主要课程目标是培养学生使用Java进行面向对象的应用软件开发的能力,能够为学生毕业后在企业中从事应用软件的开发打下基础。上述三类教学资源的建设主要是为了使学生打下面向对象程序设计的基础,而学生能够具备企业级软件开发的初步能力,还需要有一定的企业级软件开发案例的支撑。为了实现该目标,团队通过校企合作的方式,由企业选择部分应用软件开发案例,通过企业工程师和团队教师的合作,适当对案例进行裁剪,为学校的教学定制了部分适用于学生实习实训的企业级软件开发案例。在课程的实践和实习环节,通过分组与小组合作的方式,从需求分析、系统分析与设计、编码、测试的软件开发全生命周期角度进行实训,提高学生使用Java语言进行面向对象的应用软件开发的能力。
5 教学资源应用效果(Application effect of teaching resources)
本团队建设的上述四类《Java程序设计》的教学资源已经在团队所在学校的软件工程、计算机科学与技术、物联网、信息安全等专业本科生的教学得以应用。通过上述教学资源的应用,学生的Java编程能力较以往有了较大提高。
首先,从教学的整体效果来看,学生整体上使用Java语言进行面向对象程序设计和应用软件开发的能力有了较大提高。分析学生的就业数据可知,每年毕业生在JavaEE、Android等方向就业的学生数在不断增加,就业的层次和质量也在不断提高,而这些方向都是以上述JavaSE知识点为基础的。
第二,从学生参加各类算法、软件设计等竞赛的成绩来看,近几年来,学生参加国家级、省级、市区级各类软件和算法类大赛,如中国软件杯、蓝桥杯等竞赛,参赛人数有了较大增加,获奖的人数和层次也在逐年增加。在这些竞赛的参赛过程中,越来越多的学生选择使用Java相关技术进行算法及系统实现,也从侧面说明了学生Java软件开发实践能力的水平有了较大提高。
6 结论(Conclusion)
Java是当前软件开发领域最为热门的编程语言之一,提高学生基于Java面向对象编程技术的软件开发实践能力,是《Java程序设计》课程教学最基本的目标。随着MOOC、SPOC和OJ等在线平台的广泛应用,《Java程序设计》的教学资源的建设应该更加多样化,通过多种类型的题目和案例丰富学生的实践环节,切实提高学生的软件开发实践能力。同时,教学资源中的各种案例应该更加贴近实际应用,使学生能够灵活运用所学知识点。
针对《Java程序设计》的教学资源建设,本文探索了“MOOC+案例驱动式教材+信息化辅助教学平台+企业级案例库”的教学资源建设模式,该模式对于计算机相关专业的其他专业课程的教学资源建设也具有借鉴意义。
参考文献(References)
[1] Sawant A A,Robbes R,Bacchelli A.On the reaction to deprecation of clients of 4+1 popular Java APIs and the JDK[J]. Empirical Software Engineering,2017.
[2] Nate B.Nicolai Parlog on Java 9 Modules[J].IEEE Software, 2018,35(3):101-104.
[3] 丁振凡,范萍,喻佳,等. MOOC与课堂教学融合在Java教学中应用[J].实验技术与管理,2016(9):147-150;154.
[4] 李勇军,刘凤华.面向不同层次需求的Java课程MOOC建设[J].计算机教育,2016(5):97-99.
[5] Wasik S,Antczak M,Badura,et al.A Survey on Online Judge Systems and Their Applications[J].ACM Computing Surveys, 2018,51(1):1-34.
[6] 王勇,方娟,毛国君.Java 语言程序设计实例教材建设[J].计算机教育,2008(21):135-136.
[7] 杨晓燕.基于应用的 Java 面向对象程序设计课程研究与教材建设[J].计算机教育,2012(3):42-45.
[8] Tsai W,Bai X,Huang Y.Software-as-a-service(SaaS): perspectives and challenges[J].Science China Information Sciences,2014,57(5):1-15.
作者简介:
张 峰(1981-),男,博士,讲师.研究领域:软件工程,教育数据挖掘.
刘 迪(1994-),男,硕士生.研究领域:教育数据挖掘.
仇丽青(1978-),女,博士,副教授.研究领域:社交网络分析.
赵卫东(1967-),男,博士,教授.研究领域:软件工程.