Instructor:

Prof. 黃鐘揚 Chung-Yang (Ric) Huang, Department of Electrical Engineering
Office hours: Stop by or (better) by e-mail appointment
Office: EE Building II, Room 444
Phone: 3366-3644
Email: ric@cc.ee.ntu.edu.tw

TA:

Name: 徐常  吳政穎  吳濟安

Email: r97921023 at ntu.edu.tw  d97943038 at ntu.edu.tw  gro070916 at yahoo.com.tw

Office hours: By e-mail appointments (Title started with [DSnP])

Time:

Wednesday 9:10pm – 12:00pm

Location:

Ming-Da Building Room 205

Objectives:

In this class, you will learn the importance of various data structures, and how to cleverly design and utilize them in object oriented programming (C++). You will also be guided to work on Linux workstations.

Course Description:

The lectures of this class are divided into 4 parts:

(1) Introduction: Through in-depth discussion, the students are guided to comprehend the true meaning of why they should learn data structure and eventually appreciate its importance. Basic knowledge about Linux workstations will also be covered so that the students can survive on the later homework and project assignments.

(2) Polishing your programming skill: Afraid of writing programs? Or having trouble in managing large program assignment? Try to answer this basic C++ question: “what’s the difference between object and pointer type of variables?” In this part of the class we will first review the rationale of how the different C++ constructs are defined, followed by some basic software engineering guidance, and concluded with a memory management implementation.

(3) Data structure revisited: You may have learned about various types of data structures but you may not know when and how to use them wisely. We will look into the implementation details of various abstract data types, from “linked list”, “dynamic array”, “set and map”, “tree and graph”, to “hash and cache”. You will have the chance to create you own version of the above data types in C++ template classes.

(4) Class project: The topic for the class project may vary from year to year. Here’s what we did last year: “Binary Decision Diagram (BDD)” is a compact and canonical representation of Boolean functions. It has been widely used in various fields like logic synthesis and verification. Its implementation includes the utilization of “graph”, “hash”, “cache” and “dynamic array”, etc. It also requires the understanding of memory management and familiarity of recursive algorithms. Therefore, it serves a very good topic to conclude this class as the final project.

Grading (may subject to change):

·            Homework          60%

·            Final project        40%

·            Bonus                  TBD

The final grades are subject to linear adjustment. Instructor will determine the mid-point and standard deviation.

Required textbook:

1.       None, but you are encouraged to use some data structure or programming textbook as references.

2.       Class slides: Please download and/or print out for yourself.

3.       Referenced papers & handouts

Prerequisites:

1.       程式設計 (Computer Programming in C++)

Links:

1.         Class website: http://cc.ee.ntu.edu.tw/~ric/teaching/DataStructureProgramming/latest/

2.         BBS discussion board: telnet://ptt.cc --> EE_DSnP