1、Java程序设计课程 构建、改革与实施,清华大学计算机系 刘宝林,2,目录,课程概述 课程内容 教学模式,3,课程概述,必要性 课程理念 教学改革 教材建设 考核方式 资源建设 课程网址,4,Java课程开设的必要性,Java程序设计课程开设的必要性 如何充分、合理地利用Internet的网络与信息资源,已成为学术界高度重视和研究的课题。 Java语言的发展正迎合了Internet发展形式的需要,它所体现的简单、不依附于平台、面向对象、分布式、可靠性、安全性、可移植性、动态性、多线程等特性,为Internet的使用提供了一种良好的开发和运行环境,成为Internet适用、新型的编程语言 。 J
2、ava语言程序设计已引起了学术界、产业界和应用界的广泛关注和兴趣 。因此一经推出就受到IT界的广泛重视并大量采用,同时也成为教育界进行程序设计教学的一门重要编程语言。,5,Java课程开设的必要性,全局变量在Java语言程序中,不能在所有类之外定义全局变量,只能通过在一个类中定义公用、静态的变量来实现一个全局变量,这样在Java语言对全局变量进行了更好的封装。而在CC+语言中依赖于不加封装的全局变量常常造成系统的崩溃。 gotoJava语言不支持CC+语言中的goto语句,而是通过例外处理语句try、catch、finally等来代替C C+语言中用goto来处理遇到错误时的跳转情况,使程序更
3、可读且更结构化。,Java语言与CC+语言的比较,6,Java课程开设的必要性,指针指针是CC+语言中最灵活,也是最容易产生错误的数据类型。Java语言对指针进行了完全的控制,程序员不能直接进行任何指针操作。同时,数组作为类在Java语言中实现,它很好地解决了数组访问越界这一CC+语言中不作检查的错误。 内存管理在C 语言中,程序员通过库函数malloc()和free()来分配和释放内存, C+语言中则通过运算符new和delete来分配和释放内存。而在Java语言中,所有的数据结构都是对象,通过运算符new为它们分配内存堆。,7,Java课程开设的必要性,通过new得到对象的处理权,而实际分
4、配给对象的内存可能随程序的运行而改变,Java运行系统对此自动进行管理并且进行垃圾收集,有效地防止了由于程序员的误操作而导致的错误,并且更好地利用了系统资源。 数据类型的支持在CC+语言中,对于不同的平台,编译器对于简单数据类型如int,float等分别分配不同长度的字节数,但在Java语言中,对于这些数据类型总是分配固定长度的位数,从而保证了Java语言的平台无关性。,8,Java课程开设的必要性,类型转换在CC+语言中,可以通过指针进行任意的类型转换,常常带来不安全性,而Java语言中,运行时系统对对象的处理要进行类型相容性检查,以防止不安全的转换。 结构与联合CC+语言中的结构与联合中的
5、所有成员均为公有,这就带来了安全性问题。 Java语言中不包含结构与联合,所有的内容都封装在类中。,9,Java课程开设的必要性,宏定义CC+语言中用宏定义来实现的代码给程序的可读性带来了困难。在 Java语言中不支持宏,它通过关键字final来声明一个常量,以实现宏定义中广泛使用的常量定义。 头文件CC+语言中用头文件来声明全局变量、库函数等,在大的系统中,维护这些头文件很困难。而Java不支持头文件, Java语言中用import语句与其他类进行通信,以便使用它们的方法。,10,Java课程开设的必要性,非计算机专业对Java程序设计课程的需求 计算机技术已经融合到各个专业的科研中。 仅仅
6、学会一种计算机语言不足以满足专业研究的需要。 非计算机专业计算机课程课时有限,不可能像计算机专业那样,一门一门地学习计算机课程。 Java语言是一种网络编程语言,为业界认可。,11,课程理念,Java程序设计课程教学的问题 语言只是一种表达工具,自然语言亦是如此。 程序设计语言可以用来表达需要解决的问题和解决问题的 方法,但是方法本身不属于语言的范畴,要在其它课程中 学习。例如:计算方法、数据结构等。学习语言需要实践,因而离不开对分析问题和解决问题方法的学习。但是初学者的目标应定位在编写小程序、解决简单问题。,12,课程理念,Java可否作为第一门程序设计课程 Java语言作为一种面向对象的语
7、言,更接近于人类的思维方式,因而也就更容易为初学者所接受。 在教学中抓住主线、突出重点、强调思想方法、注重实践环节,便可以克服语法复杂的难点。 从6年来在清华大学的教学实践来看,以Java作为第一门高级程序设计语言教学是可行的。,13,课程理念,在有限的学时中教给学生什么? 语法? 程序设计方法? 实践能力? 对学生来说什么最重要? 知识? 能力?,14,课程理念,在有限的学时中先了解什么 树木还是森林? 先讲授面向过程的结构化程序设计,后讲面向对象的思想 先见树木,后见森林。 先从细微处着眼,首先关注算法与技巧。 熟练掌握基本的编程技术以后,再学习面向对象的思想和方法。 优点:技巧训练充分、
8、基本技术过硬。 缺点:先入为主,接受面向对象的思想较难。,15,课程理念,先介绍面向对象的思想与方法,再训练程序设计的方法与技巧 先见森林,后见树木。 首先学会将人类的自然思维方法用于程序设计。 首先建立系统与全局的观念。 在实践环节和后续课程中,不断学习各种算法、训练编程技巧。 优点:首先学习高度抽象的思维方法,建立系统和全局的观念,为后续学习奠定了思想方法的基础。 缺点:对教材与教师的要求较高,若不能立足于较高的位置、深入浅出地讲解,会使课程空洞无物、枯燥无味。,16,我们的观点,学习程序设计语言的语法是必要的,但是不够,也不应作为课程的核心内容。 将语法基础与程序设计方法相对分开为两个部
9、分,用简短的篇幅和少量的学时介绍Java语言语法的主要内容。然后以Java语言为载体讲解程序设计方法。 程序设计方法应该是课程的核心,但是要避免空洞,通过案例和实践让学生领会。 实践能力是重要的,决定了学生发展的后劲。但是有限课时、零起点基础使我们必须确定现实可行的目标:为学生打开从基础理论通向实践的学习之门,引导学生根据兴趣和需要继续学习。 能力重于知识,但能力不是空中楼阁,是建立在扎实的基础知识之上的。因此课程内容以基础为主,通过大量案例和期末大作业,培养学生实践能力。,17,教学改革,Java程序设计课程不能脱离实际应用Java程序设计课程教学的主要目标,是让学生更好地利用计算机去解决专
10、业领域中的问题及日常事务问题。因此,在课程设置与建设中,要充分体现教学内容在训练和提高学生计算机应用能力方面的意图,尤其是通过案例教学和实践教学环节,让同学自己体验和领悟利用计算机解决问题的思路和方法,并通过应用进一步加深有关概念的理解和技术的掌握。,18,教学改革,三个如何 Java程序设计课程教学内容如何适应人才培养的要求。 课程结构和体系如何优化,以适应教学改革的要求。 教学手段和教学方法如何适应信息化时代的要求,进一步提高教学效率和教学质量。,19,教学改革,针对三个如何,提出课程改革思路如下: 更新教学内容,形成课程模块一方面对教学内容加以精选,另一方面积极引入本课程的最新技术和成果
11、(新概念、新技术、新方法),将这些内容组合成三个模块,形成新的课程体系。基础要求模块选学模块(必修中选学)选修模块在授课过程中,可根据学生的不同情况按层次进行教学。,20,教学改革,2. 改革实验教学内容,设计计算机案例实验课程的几个层次。知识的掌握与能力的培养在很大程度上有赖于学生的上机实践,加强实践教学环节的目的是培养学生的上机动手能力、解决实际问题的能力、以及知识综合运用能力。实践教学在计算机基础教学中应该起更大的作用,很多教学内容可以通过实验课教学形式讲授。 基础与验证型实验 设计与开发型实验 研究与创新型实验在授课过程中,可根据学生的不同情况按层次进行教学。,21,教学改革,基础与验
12、证型实验该类实验主要涉及课程的相关知识点。实验目的是使学生验证、理解、巩固并掌握课内所要求的基本教学内容。 设计与开发型实验该类实验以“任务”或“课题”形式提出实验要求和具体的实验成果,要求学生通过有关课程或自学方式,掌握实验所涉及到的知识,通过综合利用这些知识来设计、开发并最终完成实验项目。,22,教学改革,该类实验是旨在培养学生综合应用计算机知识与技术的能力,培养学生带着问题自主学习的能力。该类实验应该涉及计算机基础与应用开发等多方面的知识,例如,可涉及软件工具与环境的使用、高级语言编程、数据库及网络等方面的内容。 研究与创新型实验该类实验重在培养学生的研究能力与创新意识。实验室可设定研究
13、题目,也可由学生自选题目。该类实验可以没有最终结果,但要求学生能提供实验分析与研究报告,写出有见解的心得体会。,23,教学改革,在授课过程中,教师需要强调并引导学生通过实践加深对课程内容的理解、提高编程能力。为此,我们设计了配套的习题解答与实验指导学生用书,包括学习目标、实验指导、习题解答。教师应该要求学生上机运行每一道例题,完成各章的实验任务,尽量多做习题。来不及做的习题,可以参考习题解答,将习题解答作为补充的例题来使用。,24,教学改革,3. 改革陈旧的教学方法与训练方式,进一步提高教学效率和教学质量一方面模糊讲课与辅导课的界限,改变一讲到底的讲授方法,讲到一定程度便提出一些思考性和概念性
14、都很强的问题,让学生分析、研究和讨论,引导学生得出正确的结论。这种启发式的讨论约占总学时的20%。,25,教学改革,另一方面对于一些可以从基本概念与基本理论中衍生出的教学内容,即使难度再大,也不一定都由教师讲,其中有的可作为课堂讨论,有的可作为课外作业让学生去研究,减少讲课学时,提高教学效率,培养学生能力。这一点不同的学校可以有所取舍。,26,教材建设,编写教材和配套习体解答及实验指导书 教材是教学思想与课程设计的载体 新编教材应能反映教学内容的更新和课程体系改革的要求。 Java程序设计与案例教材指导思想 使同学不仅掌握Java程序设计的基本知识和基本方法,更重要的是使之建立起比较完整的应用
15、系统设计的正确思想,培养学生系统程序设计的正确思路,适应信息化社会的要求。,27,教材建设,主教材 Java程序设计与案例普通高等教育“十五”国家级规划教材刘宝林 主编高等教育出版社出版2004年11月 第一版ISBN 7040156288,28,教材建设,配套教材 Java程序设计与案例习题解答与实验指导“十五”国家级规划教材配套参考书刘宝林 主编高等教育出版社出版2005年7月 第一版ISBN 7040172518,29,教材建设,3.Java程序设计与案例及其配套教材的特色 促进理论学习 任何程序设计案例都蕴藏着程序设计的理论和方法。因此,通过案例教学,可以从具体上升到抽象,与一般教学中
16、的以抽象框架为依托添塞具体例子的路子正好相反,更能生动形象地阐明程序设计的理论和方法,促进理论学习。 发挥引导作用 因为精心设计的程序案例带有典型性,因此,对其解剖分析的本身就有揭示规律的意义,具有示范的价值和引导的功能。从典型案例中总结出的原则、方法、经验和教训,能反映出程序设计的一般规律,启发思路,引导思考。,30,教材建设,逼真模拟训练 程序设计案例的突出优势在于其将客观世界的某一事件通过应用程序来实现,使学生好像身临其境,参与式的学习和研究。传统的教学模式中,学习者处于旁观者的角度被动地去接受、汲取知识,而案例教学非常逼真直观,学习者完全以主人翁的角度主动地去分析问题,解决问题,这不仅
17、仅大大激发了学生的学习研究兴趣,而且能从分析能力、创造能力和独立工作能力方面得到全面的锻炼,为今后更好地进行社会实践打下良好的基础。 提高实践技能 程序设计案例的根本目的是要使学生将知识转化为技能,通过启发,使之逐步掌握发现问题、分析问题、解决问题的能力。改变高分低能的现状,适应信息化社会的要求。,31,教材建设,理论联系实际 典型优秀的案例是以现实问题为研究对象,以事实和数据为根据,将理论知识寓于其中。通过分析研究,可以将感性体验转化为理性认识,从而进一步指导实践活动。,32,教材建设,4. 制作多媒体课件使学生在本课程之外,通过该课件复习课程内容或自学后续内容,学生可针对自身情况,达到巩固
18、所学知识,或先学先修的目的。,33,教材建设,多媒体课件 Java程序设计与案例电子教案“十五”国家级规划教材电子讲稿刘宝林 主编高等教育出版社出版ISBN 7894938378,34,考核方式,1. 改革课程考核方式 考核方式 平时实验:大作业:期末考试 比例合理划分,如:3:4:3 平时实验 主要检查学生对基本知识、基本方法、基本技能的掌握程度。,35,考核方式,大作业 采用完全开放、自由选题的形式。教师逐个详细批阅选题报告,给出建议和评语。 学生现场演示答辩、教师当面测试验收每个作业。 学生对大作业表现出浓厚的兴趣。 建立了诚信的环境,防止了抄袭和枪手现象。 期末考试 采用试卷形式,包括
19、概念题、填空题、改错题、编程题。 学习心得 每个学生写一份学习本课程的学习心得。,36,资源建设,电子讲稿(PPT文件)、包括讲课要点。 实验指导、习题解答、学习目标。 案例、实验参考程序源代码。 提供电子版的“Thinking in Java”, “Java How to Program”, “The Hands on Java”等英文电子书或课件,供学生参考。,37,课程网址,清华网络学堂课程网址http:/ 网页主要内容 电子教案(PPT)在线讲堂 教学资源 例题源程序 教师答疑 问题集锦,38,课程网址,多媒体教学方法与手段 除了本课程的知识点外,给出了大量用以课堂演示的案例。将该课件
20、上传到清华大学网络学堂,供学生复习、预习。 利用清华大学网络学堂中的“课程信息”、“讲义下载”,“答疑教室”,“问题集锦”,“公告栏”,“平时作业”,“学习资源”等模块辅助课堂教学。 提供电子版的“Thinking in Java”, “Java How to Program”, “The Hands on Java”等英文电子书或课件,供学生参考。 授课在多媒体教室进行 教学计算机上装有Java编译环境和运行平台,授课时可演示编译和运行Java程序。,39,教学内容,课程教学基本要求 课程主要内容 课程性质 课程要点、难点 授课时间安排 经验,40,课程教学基本要求,课程教学基本要求 本课程
21、以Java语言为素材,讲授面向对象程序设计的方法与思路。通过本课程学习,不仅使学生掌握Java程序设计的基本知识和基本方法,更重要的是使之建立起较完整的应用系统设计的正确思想,培养学生系统程序设计的正确思路,适应信息化社会的要求。,41,课程主要内容,介绍Java语言的基础知识和面向对象的编程思想。主要包括Java的编程环境、Java语言基础、类与对象、基础类与工具类、异常、I/O及文件操作。Java的多线程机制、图形用户界面及事件处理、网络编程、JDBC及Web应用等。 引入若干实用案例,从功能定义、系统分析与设计、模块划分和代码实现等几个角度对案例进行介绍,学生通过案例可掌握Java语言软
22、件开发技术,提高程序设计能力和软件开发能力。,42,课程主要内容,Java概述 Java语言的发展及相关技术的介绍,Java技术和平台在网络计算及电子商务中的应用介绍;发展简史 、Java虚拟机和Java平台、垃圾回收机制,特点、应用、开发环境设置及开发工具 、程序的编译和运行、程序示例 。 Java语言基础 Java语言的基础知识:Java语言的基本语法规范,包括标识符、关键字、数据类型、常量与变量的基本概念、运算符与表达式、程序控制结构、数组数据类型。 类与对象 面向对象程序设计、面向对象技术的基本特点、Java语言的面向对象特性,类和对象的概念,对象属性与方法、几种关系、域和方法、构造方
23、法、抽象、封装、类定义、访问控制符、重载、继承、多态、接口、包、内部类与匿名类。,43,课程主要内容,异常处理 异常处理机制、 Java程序的例外处理机制和方法、异常的捕获与处理、finally、自定义异常类、异常规范、标准异常介绍。 基础类库和工具类库 Object、基本数据类型的封装、System、Math、String、StringBuffer、Date、Calendar、向量、堆栈、命令行参数。 Java输入输出 Java语言的输入/输出处理机制和方法,常用的输入/输出方法,输入/输出处理的应用。流、I/O 流、标准输入输出、文件I/O、对象流、管道流。,44,课程主要内容,多线程 进
24、程与线程、进程和线程的联系和区别、线程的生命周期、 Java中多线程的编程、多线程程序设计的一般方法、Thread类的主要方法、线程状态的控制、线程优先级、多线程的同步与互斥。 图形用户界面 Java语言的图形用户界面设计:AWT界面设计的基本方法,常用的组件类库,图形用户界面的事件处理模型和方法,Swing图形界面设计。设计原则、容器与布局、标准组件、事件处理、自定义成分。 Applet Java Applet程序设计、Applet程序的特点、Applet工作原理、Applet的生命周期、Applet的绘图周期、Applet的GUI编程、将Applet嵌入HTML、Applet的主要方法、A
25、pplet与Application、多媒体(图像的使用、动画的实现、声音的使用)。,45,课程主要内容,网络编程 Java语言的网络编程技术和应用、网络协议、URL编程、Socket程序设计,Client/Server程序设计。 JDBC 关系型数据库概述、JDBC简介、JDBC的使用。 Web应用 Web的基本概念、 web协议、HTML和XML语言、Servlet简介、Servlet的结构和生命周期、Servlet API、Cookies和Session、JSP简单例子、JSP基本语法、JSP标签与JavaBeans相关的语法标签、JSP的动作标签、 JSP编程部署、Web应用。,46,课
26、程性质,适用专业类:面向全校各专业,选修 总学时96=授课学时48+实验学时48,47,课程要点、难点,课程要点、难点 Java语言面向对象程序设计 面向对象的特点及其之间的关系、抽象类与接口、访问控制符、类变量与成员变量、类方法与成员方法、构造方法的继承、隐藏和覆盖、包、内部类与匿名类。 图形用户界面设计设计原则、容器与布局、标准组件、事件处理 异常处理系统定义异常、自定义异常、异常处理、异常转移。 输入输出I/O 流、标准输入输出、文件I/O、文件的随机访问、对象流、管道流。,48,课程要点、难点,多线程进程和线程的联系和区别,多线程程序设计的一般方法,线程的生命周期,线程状态的控制,多线
27、程的互斥和同步。 多媒体图像的使用、动画的实现、声音的使用。 网络编程Socket程序设计,Client/Server程序设计。 JDBC JDBC的使用。 Web应用web协议,Servlet编程,JSP编程部署,web应用。,49,Java 语言概述,面向对象基本概念,Java 语言基础,OO 程序设计(上) 类与对象,图形用户界面,OO 程序设计(下) 高级功能,1,6,3,授课时间安排,2,4,5,7,50,语言基础类,文件及输入输出,网络编程,12,异常处理,Applet,8,多线程,10,9,11,13,授课时间安排,51,15,14,JDBC,WEB应用,16,授课时间安排,52
28、,教学建议,经验 将基本概念、基本方法讲清楚 每一部分知识点给出学习目标和小结,便于学生有的放矢,总结提高 对概念、知识点通过小型案例说明使用的方法和技巧 通过综合案例将各个知识点连接起来,达到学以致用的目的 结合具体项目,使所学即所得,53,教学模式,课堂教学与实验教学相结合 课程作业与项目训练相结合 常规教学与网络教学相结合 通过网络平台使师生交流、学生协作不受时间和空间的限制,54,课堂教学与实验教学相结合,通过课堂教学传授基础理论和基本概念,实验课加强对基础知识的理解并培养基本的实践能力。贯彻少而精的原则,充分发挥学生的主动性加强实践环节,着重独立工作能力的培养超脱讲课和实践内容,培养
29、同学的创新精神,55,课堂教学与实验教学相结合,贯彻少而精的原则,充分发挥学生的主动性 着重启发学生的思维,拓宽学生的知识领域,更多地采用引而不发和举一反三的启发式教学,在内容上强调少而精,在教学安排上拿出更多的时间用于学生的实践环节。,56,课堂教学与实验教学相结合,这门课课内外学时为48/48,总共96学时,我们只用1/3时间来讲课,其余2/3时间用于同学实践。讲课主要讲一些关键技术。能少讲、不讲的,坚决不讲,把主动性交给学生。多指定一些参考书,让学生逐步形成自己选择资料和获取知识的能力,提高学习的积极性和主动性。对于与其他前续课程类似的语法,点到为止,让同学自己去复习、去综合、去取舍。讲
30、课时间缩短,实际训练加长,学生负担加重,一开始学生望课兴叹,但通过学习,同学们说:“付出的劳动是巨大的,收获的知识也是巨大的”。 针对不同层次的学生,可采取不同的搭配方式。,57,课堂教学与实验教学相结合,加强实践环节,着重独立工作能力的培养 首先打破同学依赖老师的心理。 其次,是让同学在实践中锻炼自己。,58,课堂教学与实验教学相结合,本课程中的案例或项目开发中的方案设计,老师不先拿出方案,让同学自己查找资料、自己设计,不少同学比老师拿出的方案更好,即使设计错了,通过实验走了弯路,也能给同学留下深刻的印象,提高同学独立工作能力。 我们强调在实验中碰到的问题尽可能自己去解决,我们采用的方针是有
31、求不应,有问不答。即使要应答也仅从思路上去引导,其目的是让同学学会自己分析问题、处理问题、解决问题的能力。,59,课堂教学与实验教学相结合,超脱讲课和实践内容 通过学习,得到的不仅是这门课的知识,而是程序设计的方法、分析问题和解决问题的能力。 把这门课和实验当作一个麻雀来解剖,这样一来,学生不仅学会了分析问题、解决问题的方法,而且学会了思索、对比、概括、提高,从怕出问题到主动找问题,从被动完成任务到主动寻找好的解决问题的方法,兴趣提高了,觉得越学越有滋味,同学的聪明才智也发挥出来,知识得到了升华、提高。,60,课程作业与项目训练相结合,以课程作业进行基本编程能力的培养,以项目训练培养独立分析问
32、题和解决问题的能力,以及应用开发能力。 以前过于强调“完成老师布置的任务”,不管大作业、小作业都循规蹈矩,遵从老师的要求。 现在要让学生自己去寻找和发现需要解决的问题,并用所学的知识去解决,培养同学的创新精神。,61,课程作业与项目训练相结合,通过实际项目提取出20-30个大作业题目,让学生自由选择,三个人为一组,自由组合,因此在每个案例开发过程中,同学都有新创造、新方法,有的还超出课程的要求。 一方面提高了学生的学习的兴趣和解决实际问题的能力,另一方面培养了学生团结协作的精神,为走向社会打下基础。,62,常规教学与网络教学相结合,以常规教学满足大多数学生的学习需求,以网络课程作为补充,以适合不同的学习需求、学习习惯,并鼓励自主学习。通过网络平台使师生交流、学生协作不受时间和空间的限制实时录像合成实时录音,剪切后贴讲稿,联系方式:,email: 电话: 01062781789,