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 |
3 |
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 |
|
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) |