Course Information
Course title
資料結構與程式設計
Data Structure and Programming 
Semester
103-1 
Designated for
COLLEGE OF ELECTRICAL ENGINEERING AND COMPUTER SCIENCE  DEPARTMENT OF ELECTRICAL ENGINEERING  
Instructor
黃鐘揚 
Curriculum Number
EE3011 
Curriculum Identity Number
901 31900 
Class
 
Credits
Full/Half
Yr.
Half 
Required/
Elective
Elective 
Time
Wednesday 6,7,8(13:20~16:20) 
Room
明達231 
Remarks
The upper limit of the number of students: 190. 
Ceiba Web Server
http://ceiba.ntu.edu.tw/1031DSnP 
Course introduction video
 
Table of Core Capabilities and Curriculum Planning
Table of Core Capabilities and Curriculum Planning
Course Syllabus
Please respect the intellectual property rights of others and do not copy any of the course information without permission
Course Description

In this class, you will learn the practical issues and gain the real experiences in implementing various data structures with C++ on Linux workstations.
1. Data Structure in Programming: Why is data structure (implementation) so important?
2. Programming on Linux Workstations: A peek in the real engineering world
3. C++ Advanced Features Review: When can/should I use them?
4. What is a Good Program? A software engineering point of view
5. Computational Complexity: Time and space tradeoffs
6. Memory Management: How to gain 30% performance improvement easily
7. Dynamic Array vs. Linked List: Which one is better?
8. Tree: How to search data faster than linear time?
9. Graph and Circuit: From CS to EE Applications
10. Heap, Set and Map: How to store sorted data?
11. Cache vs. Hash: Virtual memory in your program
12. Bit Vector and Matrix: All about numerical operations
13. Putting What You Learn Together: Implementing an advanced data structure (e.g. BDD) 

Course Objective
Course Requirement
1.成績評量:Homework (50%), Final Project (50%), Bonus (TBD)
2.預修課程:程式設計 (C++) 
Student Workload (expected study time outside of class per week)
 
Office Hours
 
Designated reading
待補 
References
教科書: 1. None, but you are encouraged to use any data structure or programming textbooks as references
2. Class slides: Please download and/or print out for yourself
3. Referenced papers and handouts 
Grading
   
Progress
Week
Date
Topic
第1週
9/17  00. Class Introduction <br>
01. Data Structure in Programming 
第2週
9/24  02. Programming on Linux Workstations 
第3週
10/01  03. C++ Review (Variable) 
第4週
10/08  04. C++ Review (Class) 
第5週
10/15  05. C++ Review (Overloading and Polymorphism) 
第6週
10/22  06. C++ Review (I/O Libraries and Exception Handling) 
第7週
10/29  06. C++ Review (I/O Libraries and Exception Handling) 
第8週
11/05  07. Memory Management 
第9週
11/12  08. Software Engineering<br>
09. Computational Complexity 
第10週
11/19  10. Dynamic Array and Linked List 
第11週
11/26  11. Tree 
第12週
12/03  12. Graph and Circuit 
第13週
12/10  13. Heap, Set, and Map 
第14週
12/17  14. Cache and Hash 
第15週
12/24  15. Final Project Discussion (I) 
第16週
12/31  16. Final Project Discussion (II) <br>
(Note: If time allows, I will introduce BDD as a functional ADT.) 
第17週
1/07  17. Special Topic (TBD)