Good program comes from appropriately using the "resources" on the computer. There are two types of key resources: computational units (CPU, FPU, etc.) and storage units (memory, disk, etc., along with channels and networks). Data Structures and Algorithms discuss how to use those two types of resources suitably and effectively. Traditionally, data structures aim at the use of storage units, while algorithms aim at the use of computational units. But the two aims are actually inseparable: succinct data structures require coupling with corresponding algorithms; efficient algorithms require coupling with corresponding data structures. The course, designed as a required course for NTU CSIE students in the freshman year, introduces basic data structures and their corresponding algorithms. We will move from the concrete side of implementing basic data structures to the abstract side of analyzing the complexity of storage and computation.
date  syllabus  plan  documents and reading assignments 
02/17,02/18  class/DSA introduction 


02/24,02/25  C++ introduction  homework 1 announced 

03/03,03/04  array 


03/10,03/11  analysis tools  homework 1 due; homework 2 announced 

03/17,03/18  sparse array 


03/24,03/25  linked list/stack 


03/31,04/01  queue/dequeue  homework 2 due; homework 3 announced 

04/07,04/08  container/tree  
04/14,04/15  midterm exam from 2pm to 4pm of 04/13; no classes and good luck with your other finals  final project announced 

04/21,04/22  tree  homework 3 due; homework 4 announced 

04/28,04/29  heap 


05/05,05/06  hash  homework 4 due; homework 5 announced  
05/12,05/13  hash/skip list 


05/19,05/20  AVL tree/234 tree  homework 5 due; homework 6 announced 

05/26,05/27  234tree/redblack tree 


06/02,06/03  no class on 06/02 because of dragon boat festival; sorting  homework 6 due 

06/09,06/10  sorting 


06/16,06/17  summary on 06/16 10:30am to 11:30am (two classes together); no class on 06/17 and good luck with your other finals  final project due 
