课程概况
选修该课的同学一般已经具有了C语言程序设计的基础。对于学过“计算机基础、计算概论或C语言的学生”尤为适用。
本课程是在已有的基础上让学习者能够以Java语言编写具有一定规模、综合性的应用程序。对后面的操作系统、编译原理、数据库等课程来说,该课程是一个承上启下的课程。
从课时内容而言,主要有三部分:
第一部分是Java语言部分,包括Java概述,简单的Java程序,变量、语句、数组,类、包、接口,深入理解Java语言,异常处理等。这部分内容的目的是掌握Java语言的语法,能够较为深入理解Java语言机制,掌握Java语言面向对象的特点。
第二部分是Java的类库及应用,包括工具类及常用算法、多线程、流、文件及基于文本的应用、图形用户界面、网络、多媒体和数据库编程等,这部分的目标是掌握JavaSE中基本的API,掌握在集合、线程、输入输出、图形用户界面、网络等方面的应用。
第三部分是关于如何写出出高质量的代码,包括集成开发环境的使用,单元测试、日志、质量管理工具的使用,掌握重构和设计模式,这部分的目标是综合应用本课程的知识,能够编写有一定规模的应用程序,养成良好的编程习惯,能够编写高代码的质量。
课程一方面重视语言的基础和原理,另一方面注意实际编程能力的培养。
课程中除了视频、讨论区外,每周都有一些测验、还有一些小的作业,在课程结束还要求开发有一定工作量、有中等难度的项目。
课程大纲
课前准备
《Java程序设计》学习日历
准备教材及热身活动
第1讲 Java语言与面向对象的程序设计
1.1 Java语言的历史与特点
1.2 面向对象程序设计
week1 小结
Week1 测试
第2讲 简单的Java程序
2.1 Java程序的类型与基本构成
2.2 开发Java程序的基本步骤
2.3 程序中进行输入与输出
2.4 Java开发工具
week2 小结
Week2 测试
week2互评作业
第3讲 数据运算、流控制和数组
3.1 数据类型、变量与常量
3.2 运算符与表达式
3.3 流程控制语句
3.4 数组
week3 小结
Week3 测试
week3互评作业
第4讲 类、包和接口
4.1 类、字段、方法
4.2 类的继承
4.3 包
4.4 访问控制符
4.5 其他修饰符
4.6 接口
4.7 语法小结
week4 小结
Week4 测试
Week4 互评作业
第5讲 深入理解Java语言
5.1 变量及其传递
5.2 多态及虚方法调用
5.3 对象构造与初始化
5.4 对象清除与垃圾回收
5.5 内部类与匿名类
5.6 Lambda表达式(*)
5.7 其他几个高级语法(*)
5.8 没有指针的Java语言
week5 小结
Week5 测试
Week5 互评作业
第6讲 异常处理
6.1 异常处理
6.2 自定义异常
6.3 断言及程序的测试
6.4 程序的调试
week6 小结
Week6 测试
Week6 互评作业
第7讲 工具类及常用算法
7.1 Java语言基础类
7.2 字符串及日期
7.3 集合
7.4 排序与查找
7.5 泛型(*)
7.6 常用算法
week7 小结
Week7 测试
Week7 互评作业
第8讲 多线程
8.1 线程的创建
8.2 线程的控制
8.3 线程的同步(*)
8.4 并发API
8.5 流式操作及并行流(*)
week8 小结
Week8 测试
Week8 互评作业
第9讲 流、文件及基于文本的应用
9.1 输入输出流
9.2 文件及目录
9.3 正则表达式
week9 小结
Week9 测试
Week9 互评作业
第10讲 图形用户界面
10.1 组件
10.2 实现界面的三步曲
10.3 布局管理
10.4 事件处理
10.5 常用组件的便用
10.6 Applet
week10 小结
Week10 测试
Week10 互评作业
第11讲 网络、多媒体和数据库编程
11.1 网络编程
11.2 多媒体编程
11.3 数据库编程
week11 小结
Week11 测试
Week11 互评作业
第12讲 怎样写好程序
12.1 写好程序的一些经验
12.2 重构
12.3 设计模式
12.4 反射
week12 小结
预备知识
最好是学过一门程序设计语言(如C或C++或计算概论等)。
证书或学分
完成课程的同步学习,包括学习视频、完成测验与作业、参与论坛的讨论、完成期末的编程项目。
各部分的分值比例是:平时测验及编程作业(80%)、参与论坛讨论(5%)、期中期末考试(15%)。
积极参与论坛讨论者可以获得额外的加分。
总分数达到60分,可以获得合格证书;达到80分,可以获得优秀证书。
参考资料
唐大仕《Java程序设计(第2版)》(获第六届全国高校出版社优秀畅销书奖) 清华大学出版社, 北方交通大学大出版社,北京大学信息技术系列教材。
常见问题
1. Java是什么样的语言?
答:Java语言是一门用途广泛的、面向对象的语言。Java语言可以编写桌面应用、手机应用及企业应用。Java简洁优雅,易于学习。
2. 本课程系统吗?
答:会的。本课程要讲Java语言,对语言的一些机制会详细讲解,所以具有系统性。
3. 本课程实用吗?
答:实用。本课程要讲Java语言在文本、文件、窗体界面、图形、数据库、多线程、并行编程方面的应用。还会讲到编好代码的经验与技巧,包括面向对象的思想、软件工程中常用的方法。课程中有很多的趣的示例哟。
4. 主要讲桌面应用还是手机应用?
答:本课程要讲桌面应用。由于受课时的限制,本课程不讲手机应用,不过,除了界面不同,在文件、图形、数据库、多线程、并行编程方面手机应用与桌面应用是一样的。
5. 本课程难学吗?
答:本课程会循序渐进地讲解,对于大部分同学来说,是可以做到的。针对基础较弱的同学,我们会补充一些基础材料;针对基础很好的同学,我们也会提供一些深入的材料(不作为考试要求)。
6. 本课程会大量使用poj吗?
答:本课程在基本知识阶段会使用PoJ(在线自动判分)这种方式来提交作业,但是后面的程序要求综合应用、要求使用良好的设计模式、养成良好的编程习惯,这些不是POJ所能判断的,所以不太会使用POJ。我们会更多地使用“作业互评”的方式让大家互相学习、互相借鉴。
7. 我可以取得证书吗?
答: 是的,达到要求后将得到北京大学主讲教师签署的完成课程学习的证书。
8. 讲这门课的大仕老师如何啊?
答:传说中的大仕老师,平易近人。看他的照片,不帅;听他的声音,不亮;看来,他只剩下一个办法:将课讲好!