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
计算机系统设计及应用 A Computer System Design and Application A
2.
授课院系
Originating Department
计算机科学与工程系 Department of Computer Science and Technology
3.
课程编号
Course Code
CS209A
4.
课程学分 Credit Value
3
5.
课程类别
Course Type
专业选修课 Major Elective Courses
6.
授课学期
Semester
秋季 Fall
春季 Spring
7.
授课语言
Teaching Language
中英双语 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
赵耀,教学实验员,计算机科学与工程系 zhaoy6@sustech.edu.cn
Yao Zhao, Teaching laboratory technician, Department of Computer Science and
Engineering, zhaoy6@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
CS102A 计算机程序设计基础 A Introduction to Computer Programming A or
CS102B 计算机程序设计基础 B Introduction to Computer Programming B
13.
后续课程、其它学习规划
Courses for which this course
is a pre-requisite
14.
其它要求修读本课程的学系
Cross-listing Dept.
教学大纲及教学日历 SYLLABUS
15.
教学目标 Course Objectives
本课程旨为科和工类学深入解程设计,开计算应用统,习数处理GUI,流式编,程评价
正则表达式应用等广泛主题和技能,学习如何使用 java 编程开发软件项目来解决一定的实际问题。
The course aims to get a deeper understanding of programming and discover new topics with computer application
system design, especially on data processing, GUI, stream processing, program evaluation, regexp application and other
related programming topics & skills for scientific & engineering students. They will learn how to use java programming to
develop a software project to solve some practical problems.
16.
预达学习成果 Learning Outcomes
在课程结束时,学生应该获得以下技能:
1) 了解计算机应用程序设计和使用 Internet Web 的更多工作机制,适当的设计原则和良好实践。
2) 掌握更加可靠的编程概念和技能,增强面向对象编程能力。
3) 利用 Java 有效解决科学和工程领域的实际问题。
On completion of this course, the students should be able to:
1) Understand more working mechanism, proper design principles and good practice on Computer application design
and working with the Internet and the web.
2) Grasp more solid programming concepts and skills on obect-oriented programming.
3) Use Java to solve real world problems on scientific and engineering domains effectively and efficiently.
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 讲:计算,数据类型和数据 I / O
计算与信息处理,应用程序的内涵,数据类型,数据输入与输出,文件 I O
[Lab 1]取一文件将其的字转换指定编码并按指定的格保存另一文件练习 IO 编码
换。
2 讲:ADTs:使用和创建数据类型,图像和图形基础
抽象数据类型(ADTs), 使用和创建数据类型,图像和图形基础: Color, Picture 类与 StdDraw
[Lab 2]继承与多态结合图形图像的应用,制作一个有趣的动画。
3 讲:按位运算符,泛型,Lambda 表达式和 Collection 基础
逻辑运算符,按位运算符,泛型方法,泛型类,Lambda 表达式,Collection 基础,Set Map
[Lab 3]Collection 结合 Lambda 表达式练习对数据的处理
4 讲:GUI JavaFX 基础
用户图形界面(GUI)基本要素,JavaFX 基本组件
[Lab 4]安装 JavaFX 以及使用入门
5 讲:使用 JavaFX 进行数据可视化
数据可视化的概念与作用,java.scane.chart 包的应用
[Lab 5] JavaFX 实现一个功能比较完整的 Application(一)
6 讲:事件处理与 JavaFX 交互组件
GUI 事件交互机制,JavaFX 事件处理工具,JavaFX 高级组件介绍
[Lab 6] JavaFX 实现一个功能比较完整的 Application(二)
7 讲:函数式编程和流处理
函数式编程概念,Java 流处理机制,主要生成流,变换流,归结流的方法
[Lab 7]练习使用 Stream 进行文本处理,熟悉 Stream 的处理流程,并了解如何进行性能评估
8 讲:正则表达式,文本处理和网页爬取
正则表达式与正则语言,Java regex 细则,利用 regex 输入/校验数据,搜索匹配文本,网页爬取
[Lab 8]练习使用正则表达式进行文本分析
9 讲:程序质量评估:正确性,稳健性和效率
介绍良好程序的特征,基于契约的设计,讨论评估程序的维度和基本方法
[Lab 9]练习编写网页爬虫程序,结合理论课讨论如何保证程序质量
10 讲:多线程编程和 Web 服务器
多线程与并发程序,生产者与消费者问题,线程同步概念,Java 线程同步机制,Web 服务器实例
[Lab 10]Demo 一个客服端与服务端的交互
11 讲:数据格式,数据库连接和对象关系映射
Json, XML, .xsv 等文件格式的处理,数据库连接与 O/R 映射(选讲)
[Lab 11]练习数据持久化,用 Json XML 保存 Application 的数据
12 讲:课程项目设计与相关技术研讨
课程项目涉及的设计方法及技术实现方法专题研讨
[Lab 12]结合具体课程项目讨论设计方法和技术实现
13 讲:Java 类型系统,反射和 JVM 的工作机制
4
Java 类型系统,Class 类与反射编程,JVM 工作机制与优化问题
[Lab 13]使用 Reflection 设计一个简单的框架
14 讲:单元测试,重构和设计模式
介绍 Junit,测试驱动的设计,代码重构及设计模式概念
[Lab 14]结合课程项目,练习测试用例设计
15 周:复习
课程总结与复习。
[Lab 15]课程项目答辩
16 周:优秀课程项目演示
从课程项目中挑选若干优秀项目在课堂演示。
[Lab 16]复习、答疑
The course will cover all the following topics below.
Topic 1: Computing, Data Types and Data I/O
Essence of Application, Computing and Info Processing;
Data Types, Data input and output, File IO
[Lab 1] Read a file, convert its characters into the target encoding, and save it to another file in the specified format.
Practice file IO and encoding conversion.
Topic 2: ADTs: Using & Creating Data Types, Basics of Images & Graphics
Abstract Data Types(ADTs), Using & Creating Data Types;
Basics of Images & Graphics: Color, Picture & StdDraw
[Lab 2] Combine Inheritance and polymorphism with the application of graphics and images to make an interesting
animation.
Topic 3: Bitwise Operators, Generic Types, Lambda Expressions and Basics of Collections
Logical Operators, Bitwise Operators; Generic Types, Generic Methods, Generic Classes;
Lambda Expressions, Basics of Collections: Set & Map
[Lab 3] Apply Collection and Lambda to do some data processing.
Topic 4: Basics of GUI and JavaFX
Basic Elements of Graphics User Interface, Fudementals of JavaFX
[Lab 4] Installation of JavaFX and start to use.
Topic 5: Data Visualization with JavaFX
Objectives of Data Visualization, Package java.scane.chart with Application
[Lab 5] Implementing a Complete Application using JavaFX (I)
Topic 6: Events Handling and More on JavaFX
Machenism of GUI interactive events, JavaFX Events Handlers, Advanced Features of JavaFX
[Lab 6] Implementing a Complete Application using JavaFX (II)
Topic 7: Functional Programming and Stream Processing
Functional Style Programming, Stream Processing in Java;
Stream Producing, Stream Transforming, Stream Collecting
[Lab 7] Implementing a Complete Application using JavaFX (II)
Topic 8: Regular Expression, Text Processing & Web Crawlers
Regular Expressions & Regular Languages, Java Regex in details,
5
Regex for input & validate data, search/match text, Web page (URL) Crawling
[Lab 8] Using Stream for text processing and learn the workflow of Stream processes and how to evaluate performance
Topic 9: Program Qualities EvaluationCorrectness, Robustness & Efficiency
Characters of Good Programs, Contract-based Design, Dimentions & Methods on Program Evaluation
[Lab 9] Writing a web crawler program, and discuss how to ensure the quality of the program
Topic 10: Multi-Thread Programming & Web Servers
Multithreading and Concurrent Programs, Producers and Consumers Problem,
Thread Synchronization Concepts, Java Thread Synchronization Mechanisms, Simple Web Server
[Lab 10] Demo: Interaction between a client and a server
Topic 11: Data Formats, DB Connection & Object-Relation Mapping
Json, XML, .xsv and Other File Formats, Database Connection and O/R Mapping ((partially optional)
[Lab 11] Data persistence and save application data with Json or XML
Topic 12: Course Project Design and Related Technical Discussions
The Design Methods and Technical Implementation Methods involved in the course project.
[Lab 12] Discuss the design method and technical implementation based on the course project
Topic 13: Java Type System, Reflection & JVM Working Mechanism
Java Type System, Class class and Reflection Programming,
JVM Working Mechanism and Optimization
[Lab 13] Design a simple framework using Reflection
Topic 14: Unit Test, Refactoring & Design Patterns
Introducing JUnit, Test-Driven Design, Code Refactoring, and Design Pattern Concepts
[Lab 14] Test case design
Week 15: Review
A Summary and Review Session on the Course.
[Lab 15] Project presentation
Week 16: Excellent Course Projects Presentation
Presentations for Seleted Excellent Course Projects.
[Lab 16] Revision, Q&A.
18.
教材及其它参考资料 Textbook and Supplementary Readings
6
Textbook A:
1) Robert Sedgewick & Kevin Wayne: Computer Science: An Interdisciplinary Approach, Addison-Wesley, Pearson,
2016. 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 Books:
3) Cay Horstmann. Big Java, Eraly Objects, 6e, Wiley 2015
4) Robert C. Martin. Clean Code: A Handbook of Agile Software Craftsmanship. Prentice Hall, Pearson, 2009
5) John Ousterhout. A Philosophy of Software Design. Yaknyam Press, 2018
课程评估 ASSESSMENT
19.
评估形式
Type of
Assessment
评估时间
Time
占考试总成绩百分比
% of final
score
违纪处罚
Penalty
备注
Notes
出勤 Attendance
10%
课堂表现
Class
Performance
小测验
Quiz