Data Structures and Algorithms
Instructorhsuan-tien lin
DepartmentBachelor of Arts in Interdisciplinary Studies in College of Social Sciences、Department of Computer Science & Information Engineering
Credits3
Last Offered Semester113-2

Average Rating


 Quality
4.7
 Easy A's
1.5
 Freedom
0.8
 Workload
5.0

Class ScheduleSerial NumberCourse Number
Tue 6 7 8
38273CSIE1212

Quality

Easy A's

Freedom

Workload



📌 Course Contents
各類Sorting ,BST,Red Black tree ,btree, AVL, heap,hash,linear,graph,disjoint set, linked list,stack,queue,enqueue,KMP,BT,BFS,DFS

📌 Teaching Method
線下都會有錄影(會有用Slido來做互動),線上NTU Cool

📌 Course Materials
NTU Cool,老師簡報,還有各類其他網上有的資源

📌 Assignments and Exams
作業有程式作業(有分大作業跟小作業)、手寫作業(有分大作業跟課堂作業)

程式作業
- 大作業:每一個大作業每兩個星期交一次,總共有4個大作業。大作業裏面有2大題的程式作業跟2大題手寫題; 一個學期會有8個金牌可以利用在這裏,一個金牌抵用一天。如果遲交,然後沒有用金牌的情況,扣分制度是遲交一天就扣20%,遲交5天就是沒分。

- 小作業: 每個星期都會出一個,截止日期是第二/四個大作業一起收(也就是期中收6個minihw 一次,期末收另6個minihw 一次); 總共是 8個HW0 + 12 mini-HW(小作業)

手寫作業
- 跟程式的一樣:每一個大作業每兩個星期交一次,總共有4個大作業。大作業裏面有2大題的程式作業跟2大題手寫題
- 課堂作業: 每個星期課堂結束會出一題,在下一次上課前截止

考試:
- 都是手寫,總共包含小題目至少會有10題以上。只看大題目的話就是5-6題左右(裏面的小題目就是有2-3題)

📌 Grading
程式:手寫:活動:期中:期末=20:20:10:25:25

程式題目算法為這樣:
prog = min(20, (total - min(hw1 prog, hw2 prog, ..., hw4 prog, fundamental)) / 800 * 20)

📌 Reviews & Feedback
(甜度跟涼度不能0,差評)
但我的評比就是會很扎實5,涼度0,甜度0,品質5

你會C語言最好,你有朋友是加分,你原本就會DSA那就基本上很棒,這樣分數可能就會有C了。

會有很多TA幫忙。但是你沒朋友可以討論也是很容易死。
但這裏蠻容易交到朋友的,因爲期中的時候會有課外團康活動,在那邊就能教到朋友。但是你前期就是要靠TA hour,看看能不能認識到可以一起討論的朋友。啊如果被當掉還能下一個學期一起修。

反正基本上很容易被當,沒朋友會更慘(對我説的是碩班要補課的孤立學奴們)。
加油

Quality

Easy A's

Freedom

Workload



📌 Course Contents
上半學期是林軒田老師授課,範圍是:
Performance Analysis
Linked List
Stacks and Queues
Tree, Heap
Sorting

下半學期是蔡欣穆老師授課,範圍是:
String Matching
Linear-time Sorting
Disjoint Set
Hashing
RB Tree
B Tree

📌 Teaching Method
林軒田老師是較傳統的上課方式(現場用投影片上課,也會錄影)

蔡欣穆老師是採課前先看預錄影片,課堂上稍微講解重點/開放大家問問題,有時候會有活動(kahoot/分組寫專案/大地遊戲)。活動除了分組寫專案的活動有點混亂以外,其他活動蠻有趣的。

兩位老師上課都非常不錯,個人覺得蔡欣穆老師的上課模式較有效率我比較喜歡,不過這個部分蠻見仁見智。

📌 Course Materials
Introduction To Algorithm

📌 Assignments and Exams
共四次作業,分為手寫題(3題左右)與程式題(2題左右)
手寫題通常較為簡單,程式題則需要有耐心並花大量時間在上面
但作業想法卡關時,很推薦跟助教詢問想法!助教人都很nice,不過要說明清楚自己的想法與困境,不要什麼方法都沒試,單純為了拿答案或而去詢問

考試有兩次,相較於作業簡單一點,兩次考試都可以開書
請好好把握用考試拿分的機會

📌 Grading
Homework 0 (100 homework pts) + Homework 1 (500 homework pts) + Homework 2 (500) + Homework 3 (500) + Homework 4 (400): 40% of raw score
Class activities (first TA hour, in-class quizzes, activity participation, etc.): 20% of raw score (幾乎能拿滿)
Midterm exam: 20% of raw score
Final exam: 20% of raw score

等第並非按照學校給的標準來切,111-2的等第切法如下:

A+ 95
A 87
A- 80
B+ 74
B 70
B- 68
C+ 66
C 63
C- 57

A+ 約10%

📌 Reviews & Feedback
修這門課要有心理準備,需要花極多的時間在它上面,且要有良好的時間規劃
我自己沒有妥善運用時間,因此在作業截止的當週會花到30hr左右在它上面,十分不建議這樣搞qq
大家平均應該是花10-20hr/week,但我身邊的大神沒花什麼時間在DSA上 ^_^

Quality

Easy A's

Freedom

Workload



📌 Assignments and Exams
Homework 0 (100 homework pts) + Homework 1 (500 homework pts) + Homework 2 (500) + Homework 3 (500) + Homework 4 (400): 40% of raw score
Class activities (first TA hour, in-class quizzes, activity participation, etc.): 20% of raw score
Midterm exam: 20% of raw score
Final exam: 20% of raw score

📌 Reviews & Feedback
是一門要花許多功夫,分數卻不一定好看的課。但是這門課對於資工的未來十分重要,我覺得林軒田老師教得很好,教學方式也算是有趣。

Quality

Easy A's

Freedom

Workload



📌 Course Contents
(C語言)

Linked Lists

Stacks and Queues

Tree

Heap

Sorting

————-Mid-term

String Matching

Linear-time Sorting

Disjoint Set

Hashing

RB Tree

B Tree

—————Final

Graph

📌 Teaching Method
同步,但直播都會留著,可以當成非同步,偶爾課堂活動還是要跟課

📌 Course Materials
ITA 3e, 2009

📌 Assignments and Exams
作業:

作業共有HW0~HW4共五次,去年還有期末專案但今年無,扣掉期中週每次時間皆為3週。HW0鑑別度蠻高的,想修的人可以試試水溫

(1)作業-手寫:

我是用紙+筆,每次作業大概會寫滿5~7頁A4,建議先去網路找類似的題目解答,然後跟人討論+自己改寫,速度會比較快。

有評價會寫到20頁的,可能是因為
1)平板寫字時,字和間距一般會比手寫大
2)因為可以排版空格會比較大或是會換下一頁(我每題都會擠在一起
3)平板一頁大小比A4小
4)他寫得比較詳細(我寫得太簡單

(2)作業-程式:

每次都是兩題,其中一題會較為簡單(我60~100行),另一題看情況(我150~250行都有,不算吉如一那題),建議想清楚再開始寫,最困難的部分通常都會是剛開始的想法

跟打字速度沒有太大關係,只有18wpm都能修這門課了。

跟我一樣不太擅長使用debug的相關工具,只會用word 把測資ctrl +c +v的人也是可以修啦,但真的建議想清楚

(3)作業-Gradescope:

提交手寫作業的平台,眼睛張大一點看清楚所有需要做的事,這個部分被扣到分真的很蠢(我就是在說我

(4)作業-討論:

跟朋友討論想法、思路和分享參考資料就好,其他像是看code、看pseudocode和證明過程之類的都建議不要做

(5)作業-時間分配

約3週會有一次作業

我大概是:
week1 程式簡單題完成+困難題開始
week2 困難題開始debug+手寫1/4~1/3
week3 寫完+通常還有3、4天休息

優點是時間比較平均分配,如果外系還有其他作業loading 重的課,建議安排平均一點,比較不會寫的很厭世,尤其是debug我常常會花3、4天慢慢來,不要壓死線會輕鬆很多

對題目有想法會建議找TA確認是否可行,不要浪費時間在錯誤的地方

考試:

今年皆為線上,但以後不知道

約15題,分數依總分比例算,今年(2022)題目較簡單,所以今年考古題可能沒有鑑別度(?

📌 Grading
作業 40%
課程參與 20%
期中期末 20% 20%

📌 Reviews & Feedback

1/ 修DSA的基礎&條件:(個人心得)

* 只會Python:★★

* 至少會C or C++:★★★★+

我修資管系的程式設計(C++),超甜又涼推推

* 修過任何的程式設計:同上,自行判斷

* 新手單刷DSA:X

* 抱團參加:★★+正負★★

新手單刷是真的會生不如死,沒什麼好說的,除非你只求不要被當。

抱團的話其實蠻看本身跟隊友的穩定度,建議找能跟你討論的隊友,能省很多時間。free-rider就不要來修了。

* 一週平均能花10小時或以下:★(適合有大腿或本身是大腿的人)

* 平均10~20小時:★★★

* 20~30小時:建議不要修了,可以去做其他比修這門課更重要的事情

要花多少時間在這個課程上面,看每個人和你朋友的能力,教授說每週平均大約15小時,我差不多也是這樣,這基本上會是你這學期loading最重的課,尤其外系的人還有系上十幾學分的必修要顧,真的要慎重考慮,每天都還是要睡7、8小時啦> <

* 抗壓不好、作業都要寫出來、一定要A+:X
(要做好即使很努力只能A-或甚至更低的心理準備)

* 想花更多時間換分數:★★
(痛苦與快樂並存 畢竟AC還是很爽啦)

心態調整好或是有朋友可以討拍,修這門課會比較輕鬆。

7/ 其他資訊:

(1)加簽: 一類加簽。教授的目標可能是開成超大的課(?

(2)旁聽: 可以填表單申請,但不能使用線上批改系統

(3)不調分: 依照等地切,差零點幾A真的很衰,所以作業考試都要盡量寫

8/評價:

痛苦與快樂並存的一門課,我其實也不知道花那麽多時間跟我所放棄的相比到底值不值得。學習動機不強如我,還是不太會debug 技巧、也不太會用git
Not Detailed Enough?