課程概述 |
一. 內容
This course is an advanced course of (1) Computer Programming, (2) Data Structure, and (3) Object Oriented Programming. You will learn the practical issues and gain the real experiences in using C++ to implement various data structures on Linux workstations.
1. Class overview: why data structure (implementation) is 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. link list: which one is better?
8. Map, set, heap, etc: How to store sorted data?
9. Vector, matrix, etc: all about numerical operations
10. Tree, diagram, graph, circuit netlist: from CS to EE applications
11. Cache vs. hash: virtual memory in your program
12. Logic simulator: putting what you learn together (1)
13. Binary Decision Diagram (BDD): putting what you learn together (2)
二. 教科書
1. Textbook: TBA
2. Class slides
3. Referenced papers
三. 成績評量方式
Homework (30%), Midterm project (20%), Final Project (50%)
四. 預修課程
1. 資料結構
2. 程式設計
或具有良好程式基礎 (C++) 且經收課老師同意者
|