1
课程详述
COURSE SPECIFICATION
以下课程信息可能根据实际授课需要或在课程检讨之后产生变动。如对课程有任何疑问,请联
系授课教师。
The course information as follows may be subject to change, either during the session because of unforeseen
circumstances, or following review of the course at the end of the session. Queries about the course should be
directed to the course instructor.
1.
课程名称 Course Title
计算机程序设计基础 B Introduction to Computer Programming B
2.
授课院系
Originating Department
计算机科学与工程系 Department of Computer Science and Technology
3.
课程编号
Course Code
CS102B
4.
课程学分 Credit Value
3
5.
课程类别
Course Type
通识必修课程 General Education (GE)Required Courses
6.
授课学期
Semester
秋季 Fall
春季 Spring
7.
授课语言
Teaching Language
英文 English
中英双语 English & Chinese
8.
他授课教师)
Instructor(s), Affiliation&
Contact
For team teaching, please list
all instructors
何明昕,外聘教师,mx.he@yeah.net
Mingxin He, External teacher, mx.he@yeah.net
9.
/
方式
Tutor/TA(s), Contact
王薇,教学实验员,计算机科学与工程系,wangw6@sustech.edu.cn
Wei Wang, Teaching laboratory technician, Department of Computer Science and
Technology, wangw6@sustech.edu.cn
10.
选课人数限额(不填)
Maximum Enrolment
Optional
授课方式
Delivery Method
习题/辅导/讨论
Tutorials
实验/实习
Lab/Practical
其它(请具体注明)
OtherPlease specify
总学时
Total
11.
学时数
Credit Hours
32
64
2
12.
先修课程、其它学习要求
Pre-requisites or Other
Academic Requirements
13.
后续课程、其它学习规划
Courses for which this course
is a pre-requisite
14.
其它要求修读本课程的学系
Cross-listing Dept.
教学大纲及教学日历 SYLLABUS
15.
教学目标 Course Objectives
本课程面向没有编程基础的大学本科生,培养程序设计的基础知识和基本编程技术。通过 Java 程序设计语言,学习程序设
计基本要素和结构,利用 Java 解决简单的编程问题。
The course is designed for freshmen who nearly have no programming experience, and aims to cultivate them on basic
concepts and techniques of programming. Students will learn Java programming language, understand basic elements of
programming and fundamental program structures, and use Java to solve simple programming problems.
16.
预达学习成果 Learning Outcomes
在课程结束时,学生应该获得以下技能:
1) 了解软件系统的基本模块,因特网和互联网的运行机制;
2) 掌握 Java 程序设计语言的基本语法;
3) 了解面向对象程序设计的基本特性(抽象,封装,继承,多态),可阅读理解 Java 面向对象程序。
4) 熟悉集成开发环境,能设计程序解决简单的实际问题。
On completion of this course, the students should be able to:
1) Understand the basic components in a software system and the working mechanism of the Internet and the Web.
2) Know the basic syntax of the Java programming language.
3) Understand the basic features of object-oriented programming (abstraction, encapsulation, inheritance,
polymorphism) and can read Java OO programs.
4) Develop programs to solve simple real problems using integrated development environments.
17.
课程内容及教学日历 (如授课语言以英文为主,则课程内容介绍可以用英文;如团队教学或模块教学,教学日历须注明
主讲人)
Course Contents (in Parts/Chapters/Sections/Weeks. Please notify name of instructor for course section(s), if
this is a team teaching or module course.)
3
第课程内容覆盖以下主题:
1 周:计算机和程序的基础知识
硬件和软件,计算机组织
编程之道,Java 开发环境
第一个 Java 程序:编辑,编译,运行;调试
Lab1 练习 java 开发环境 JDK 以及 java IDE eclipse 的安装、配置及使用,实验完成第一个 java 程序从源代码到运行的全
过程
2 周:基本编程概念
变量,值,操作,表达式,语句,
命令行参数,基本输出 (System.print println)
Lab2:练习不同类型的数据定义及使用,练习带格式输出及基本输出处理,包括转义字符和格式化说明符的使用,练习基
本输入处理,重点联系如何使用主方法的参数作为输入
3 周:基本 IO,控制结构(1):条件和循环
if 语句,while for 语句,基本 IOScannerprintf
Lab3:练习运算符和表达式,三种基本结构语句,通过不同的控制结构实现不同功能
4 周:数组与函数(静态方法)
一维数组,数组的常见用法;
函数(静态方法)概念,模块化编程和函数库(应用程序接口 API)
Lab4:练习一维数组的定义及使用,数组与数组元素以及元素下标之间的关系。结合循环实现数组元素的遍历,练习基本
的函数使用
5 周:方法重载和控制结构(II
更多关于函数,重载,do-while 循环,for-each 循环,switch 语句
Lab5:通过嵌套循环及 break continue 的配合使用,强化对循环的练习,练习多分支语句以及 break 在其中的作用。
6 周:多维数组
两维及高维数组;
java.util.Arrays, java.util.System.tocopy()
Lab6:练习多维数组的定义及使用,数组与字符串之间的转换,重点练习二维数组与一维数组的关系以及多维数组中下标
的灵活使用
7 周:更多 I / O,问题求解决和算法设计
PostfixPrefix ++ / - ,重定向与管道,StdDraw 绘图包
求解编程问题的步骤
Lab7:重点练习方法的定义及调用,方法重载,形参与实参,不同类型的形参之间的差别
4
8 周: 抽象数据类型,使用类和对象
抽象数据类型(ADT),封装,类:用户定义的数据类型;
构造函数和方法, 颜色和图像,字符串(String)
Lab8:抽象数据类型和普通数据类型之间的关系与差异,属性与方法
9 周:创建数据类型: 设计类
面向对象程序设计; 创建类; 方法重载;
构造函数,属性,启动者,访问者与改变者; 访问修饰符; final 修饰符
Lab9:练习类的基本组成,类的构造方法,类和对象的关系
10 周:集合体,列表与对象思维
CollectionArrayListLinkedList; 包装类;
BigIntergerBigDecimal StringBuilderStringBuffer
Lab10:重点练习 arrayList 以及 StringBuiler 的基本属性及方法,练习该类对象的使用
11 周:枚举(enum),文件 IO,异常处理
枚举(enum)类型,文件 IO,异常和 Try 语句,其他 IO:音频与图形
Lab11:练习枚举类型,文件处理,异常和 try 的处理
12 周:深入研究类和对象
示例,组合与对象引用,包,静态导入,垃圾收集
Object ; protected final 修饰符
Lab12:练习如果定义类的继承,类的继承与类及对象的关系
13 周:继承和多态性
扩展类,继承,多态和动态绑定,覆盖方法;
Lab13:练习方法的重写以及 方法的重载
14 周:接口,抽象类,泛型,集合与映射
接口,抽象类,泛型,Sets Map
Lab 14:接口的定义及使用
15 周:扩展主题简介,复习
Lambda 表达式,流处理简介,复习
Lab15:项目验收
16 周:优秀项目演示
课程优秀项目演示
Lab16 复习及答疑
5
The content includes all the following topics below.
Week 1: Basics of Computers and Programs
Hardware and software, Computer Organization
Way of Program, Java Development Environment
First Java Program: Edit, Compile, Run; Debugging
[Lab1]: practice on how to install set and use JDK and eclipse, edit, compile a java source file then make it run.
Week 2: Basic Programming Concepts
Variables, Values, Operations, Expressions, Statements,
Command-Line Arguments, Basic output (System.print & println)
[Lab2]: practice on definition and usage of different type of data, practice on using format description and escape
character while print out, practice on using arguments of main method to get the data while programming begin to run.
Week 3: Basic IO, Control Structures(I): Conditionals and Loops
If statement, while and for statements, Basic IO: Scanner, printf
[Lab3]: practice on operator and expression in java, the difference between the definition and usage of three kind of
structured statement
Week 4: Arrays and Functions (Static Methods)
One-Dimentional array, General usage of arrays;
Concepts of Functions, Modular Programming and Libraries (APIs)
[Lab4]: practice on One-dimensional array, including the length, index, how to use loop to go through all the elements in
an array.
Week 5: Method Overloading & Control Structures(II)
More on functions, overloading, do while loop, for each loop, switch statement
[Lab5]: practice on nested-loop, the usage of break and continue in a loop. Practice on multi-branch statement switch,
the definition and the behavior of it and the usage of break in switch
Week 6: Multi-dimentional Arrays
Two and more dimentional arrays;
java.util.Arrays, java.util.System.tocopy();
[Lab6]: practice on multi-dimensional array, including its definition and usage, practice on the transformation between
array and string, the relationship between one-dementional array and two dimentional array
Week 7: More on I/O, Problem Solving & Algorithm Design
Postfix & Prefix ++/--, Redirection & Piping, StdDraw
Steps in Problem Solving for Programming
[Lab7]: practice on the definition of method, the formal parameter and the actual argument, the method reload
Week 8: ADTs, Using Classes and Objects
6
Abstract Data Types, Encapsulation, Classes: user-defined data types;
Constructors and Methods; Colors and Images, Strings
[Lab8]: practice on the usage of abstract data, its attribute and method the difference between the abstract data and
normal data
Week 9: Creating Data Types and Design Classes
OOP vs Procedural Design; Creating Classes; Method Overloading;
Constructors, Attibutes, Driver, Accessors and Mutators; Access Modifiers; final Modifier
[Lab9]: practice on the definition of class, its constructor attribute and method, to create an object based on a class
Week 10: Collections, ArrayLists and Thinking in Objects
Collections and ArrayLists; Wrapper Classes;
BigInterger, BigDecimal, StringBuilder, StringBuffer
[Lab10]: practice on the arrayList and StringBuiler
Week 11: Enum, IO with Files, Exceptions
Enumerate Types, More IO: Audio, Graphics & IO with Files, Exceptions and Try statement
[Lab11]: practice on the definition and usage of enum, the stream with file and the exception handle
Week12: Deeper Look on Classes and Objects
Examples, Composition & Object Reference, Packages, static import, Garbage Collections
Object class: equals(); protected and final modifiers
[Lab12]: practice on the inherit between class, the difference between inherit and instance
Week 13: Inheritance and Polymorphism
Extends class, Inheritance, Polymorphism & Dynamic Binding, Overriding Methods;
Object class: equals(); protected and final modifiers
[Lab13]: practice on the method override and method reload
Week 14: Interface, Abstraction Classes, Generics, Collection Interface, Sets and Maps
Interface, Abstraction Classes, Generics, Collection Interface, Sets and Maps
[Lab 14]: practice the definition and usage of interface
Week 15: Extended Topics Intro., Reviews
Lambda Expressions, Stream Processing Introduction, Reviews
[Lab15]: the evaluate on project
Week 16: Excellent Projects Presentation
Excellent Lab Projects Presentation
[Lab16]: Reviews, Q&A
18.
教材及其它参考资料 Textbook and Supplementary Readings
7
Textbook A:
1) Robert Sedgewick & Kevin Wayne: Computer Science: An Interdisciplinary Approach, 2016 Addison-Wesley,
Pearson. Booksite: http://introcs.cs.princeton.edu/java/
Textbook B:
2) David J. Eck. Introduction to Programming Using Java V8.0, Dec. 2018. http://math.hws.edu/javanotes8/
Reference Textbooks:
3) Y. Daniel Liang. Introduction to Java Programming, Brief Version, 11ed, Pearson, Prentice Hall, 2018.
4) Cay Horstmann. Java Concepts, Late Objects, 3e, Wiley 2018
5) Allen B. Downey and Chris Mayfield. Think Java, How to Think Like a Computer Scientist, O'Reilly, 2016.
Think Java is available under the Creative Commons Attribution-NonCommercial 3.0 Unported License. The author
maintains an online version at: http://greenteapress.com/wp/think-java/
课程评估 ASSESSMENT
19.
评估形式
Type of
Assessment
评估时间
Time
占考试总成绩百分比
% of final
score
违纪处罚
Penalty
备注
Notes
出勤 Attendance
10%
课堂表现
Class
Performance
小测验
Quiz
课程项目 Projects
20%
平时作业
Assignments
10%
期中考试
Mid-Term Test
期末考试
Final Exam
30%
期末报告
Final
Presentation
其它(可根据需
改写以上评估方
式)
Others (The
above may be
modified as
necessary)
30%
实验作业
Lab Assignments
20.
记分方式 GRADING SYSTEM
A. 十三级等级制 Letter Grading
B. 二级记分制(通/不通过) Pass/Fail Grading
8
课程审批 REVIEW AND APPROVAL
21.
本课程设置已经过以下责任人/员会审议通过
This Course has been approved by the following person or committee of authority