## Data Structure and Algorithms

Prof. Michael Tsai Spring 2017

### - Course Information

[CSIE 1212 Class 02]

### Data Structure and Algorithm – What are they?

• Data structure –

store, represent, and manipulate DATA in the computer.

• Algorithm –

well-defined computational procedure that take

some value(s) as input and produces some value(s) as output.

### What are we learning?

• “Cookbook style”

- introduction of the most commonly used data structures

• Transformation of concept to program

• Learn by examples (C and pseudo code)

• **LOTS of opportunities (in-class exercises and homework)**

Know how to manipulate the data

**“graphically”**

**in a step-by-step manner**

Know how to implement the data structure using computer programs

### What are we also learning?

• Learn how to analyze the running time of your program / algorithm

• So that you write good, fast, efficient programs

• Some commonly used software development tools

& methodology (if time permits)

### Topics to be covered

Before Midterm:

• Array

• Stack & Queue

• Linked List

• String Matching

• Sorting

• Tree

(tree traversal and binary search tree)

After Midterm:

• Heap and hash table

• Disjoint set, selection

• Advance tree structure

• Graph basics

• Fast Fourier Transform (tentatively)

### “This is an experimental version of the DSA course”

Some English (new) slides Some English lectures

### Uncertain but fun!

Interactive classroom

課堂程式競賽、程式除錯、

分組討論、上台報告…

### My teaching style

• GOAL: 80% of the students will understand 80% of the content

• NEW GOAL: hopefully DURING THE CLASS

• I will ask you questions

(or nudge you if you fall asleep during class)

• I will repeat until you understand

(looking for signs of comprehension)

• I tell icy jokes (to keep you awake)

### Textbook

Introduction to Algorithms, 3^{rd} edition, 2009, MIT Press
by Cormen, Leiserson, Rivest, and Stein

### The teaching team

Name Picture Name Picture

李鈺昇 (Kevin) 邱筱晴 (Daphne)

謝明勳 (Leon) 林于智 (Steven)

許晉嘉 (Eddy) 楊承勳 (Hsun)

### The teaching team

• TA (Administrative)

• 吳浩平 (Paul)

• R424

A few more to join the team later…

### Grade

• 40% 4 Homework assignments

• 25% In-class performance

• 15% Midterm exam

• Covers all content before midterm

• 20% Final exam

• Covers all content taught in this semester

• Conversion between raw score & letter grade will be determined by the instructure

• Based on our experience:

“只要作業都有寫有交, 考試考卷每題都有寫不放棄, 就
**很難被當“**

### Homework

In each assignment:

• 2 Programming problems

• Will be graded by online judge

• **Maximum of 5 code submissions per day**

• Learn how to test your own code!

• 2-3 additional, non-programming problems

• Proofs, analysis

• Or design data structure / algorithm by “hands”

### Homework: references

• We encourage discussion

• Please note references for all problems

• Example 1: Reference: wikipedia page at [URL]

• Example 2: Discussion with B87506055

• Example 3: Reference: book [title] p.xx

• No COPYING!

(write with references in front of you)

• We will use tools to monitor code similarity

• CONFIRMED case of PLAGIARISM:

### F grade

### Homework: submission

• Electronic submission only

(details to be announced, SVN or git)

• Late submission: up to one day after the deadline

• For all late submission, you get linearly increased penalty for that assignment.

• Example: you submit your homework 3 hours late.

Then you get (1-(3600*3/86400))*100% = 87.5% of your score.

• Detailed rules will be available at the beginning of each homework problem description document.

### Exams

• 3-hour exam during the regular midterm & final exam time

• Both exams will feature

• Programming problems + online judge

• Additional hand-written problems

### Lecture time

• Official time:

• Lecture: Tuesdays, 678 (13:20-16:20)

• Breaks: 14:10-14:20, 15:10-15:30

• We might do minor adjustments according to how the students react (too sleepy, for example).

• Note the difference with the other class taught by Prof. 張智星 (Tuesdays, 789)

### For students

### who have not yet got in…

• Maximum number of students: 100

• Priority:

1. 資訊工程系大一雙班(不小心退選了?)

2. 資訊工程系大四(及以上)>大三>大二>大一

3. 資訊學群研究所

4. 電機資訊學院學生(大四及以上>大三>大二>大一) 5. 其他學院(大四及以上>大三>大二>大一)

• Please fill out the form:

https://goo.gl/forms/mWuWrW3YHA8iMV2A3

• Students who have special reasons and REQUIRE to take this course this semester:

please come and talk to me today after the lecture.

### Communications

• Course website:

http://www.csie.ntu.edu.tw/~hsinmu/courses/dsa_17spring

• How do you reach us?

1. Email to dsa1@csie.ntu.edu.tw 2. Facebook Group

https://www.facebook.com/groups/dsa17spring/

3. Please come to our office hour.

• How do we reach you?

• Email to your NTU mailbox (via CEIBA) [id]@ntu.edu.tw

• Important announcements will also be available on Facebook Group

Typical DSA office hour (when no HW due soon)

### TODO

• Get your textbook (required!)

• Reading assignment for week 3 will be available soon.

• Make sure that you can receive emails sent via CEIBA

• Sleep well and prepare for a productive new semester

• NO CLASS NEXT WEEK! (228 memorial day)