This course introduces the data representation and problem solving methods required by electrical, communication, and computer engineering. The abstract data type concept is used in realizing such techniques, and algorithm design and complexity analysis are exercised throughout the course. Development of software systems is another important focus in the course for introducing the importance of analysis and design before implementation. C programming language is used in the class.
* This is an EMI (English as a Medium of Instruction) course. The course is taught in English.
學習目標:
1. To understand different data structures, their characteristics, and applications
2. To learn problem solving methods.
3. To practice through software system development
教科書:
Either one of the following is suggested but any DS textbook will also work:
1. Ellis Horowitz, Sartaj Sahni, & Susan Anderson-Freed, Fundamentals of Data Structures in C (2nd Edition), Silicon Press, 2008
2. Richard F. Gilberg and Behrouz A. Forouzan, Data Structures: a Pseudocode Approach with C (2nd Edition), Course Technology, 2005
課程大綱
分配時數
核心能力
備註
單元主題
內容綱要
講授
示範
隨堂作業
其他
Basic concept in data structures and software development
Introduction to data structures
Abstract data types
Algorithm efficiency
Introduction to basic software engineering concept
Introduction to analysis and design
3
1.11.21.32.12.23.13.24.14.24.34.4
Reviews on programming skills in C
Recursion
Pointers and structures
Linked lists
Pointers to functions
6
3
1.11.21.32.12.23.13.24.14.24.34.4
Fundamental data structures and techniques
Searching
Stacks, queues, hash
Queues
3
3
1.11.21.32.12.23.13.24.14.24.34.4
Tree and related representation
Basic tree representation
Tree traversals
Expression Trees
Binary search trees
AVL trees
Heaps
5. 教學相關配合事項: two in-class onsite programming exams
課程目標與教育核心能力相關性
請勾選:1.11.21.32.12.23.13.24.14.24.34.4
1.1
瞭解電機工程基礎知識。()
為何有關:
The course helps the students understand how they can solve problems in the electrical engineering and communication engineering field such as memory organization in computers, scheduling problems in operating systems, queuing concept in network communications, minimal spanning trees in circuits, etc.
達成指標:
Obtaining the knowledge
評量工具(可複選):
Quizzes and final exam
1.2
培養電機工程實作能力。()
為何有關:
Many of the concepts and the problem solving methods will be realized in software. The students will also learn how to analyze and design a software system before implementing the system in C.
達成指標:
Programming skills
評量工具(可複選):
Programming exercises, onsite programming exams
2.1
培養分析問題的能力。()
為何有關:
The importance of analysis and design is stressed in the course by introducing basic software engineering concept. The students will not only enhance their ability in programming, but also practice analysis and design of a software system with an incremental and iterative approach. After such training, the students will have the ability to build simple simulation systems.
達成指標:
Able to analyze and design a system
評量工具(可複選):
Project
2.2
培養善用資源以解決問題的能力。()
為何有關:
The problem solving methods taught in the course have many applications. The students are assigned with projects to implement such applications by developing software systems. The topics of the projects are designed to incorporate the concepts learned in the course with applications, so that the students can use their solutions to experiment the usage of such concepts.
達成指標:
Constructing a software system
評量工具(可複選):
Project
4.3
培養良好的資訊能力。()
為何有關:
All assignments are conducted in writing programs in C.