Copyright 2017 - CSIM - Asian Institute of Technology

Data Structures & Algorithms

Course code: AT70.02
Credits: 3(3–0)
This course is required

Course objectives

An algorithm describes how to carry out a problem-solving task implementable by computer programs. The design of an algorithm is tightly coupled with how information to be manipulated by it is organized i.e. data structuring. A course in Algorithm and Data Structure is therefore fundamental to a study in Computer Science.

Learning outcome

Fundamentals, Randomized Algorithms, Sorting, Hashing, Balanced Search Trees, Advanced Design Techniques, Graph Algorithms, Polynomials and the FFT, String Matching, Geometric Algorithms.

Course outline

I.        Foundations
1.     Asymptotic Analysis
2.     Recursion and Recurrences
 
II.      Randomized Algorithms
1.     Indicator Variables
2.     Probabilistic Analysis
 
III.     Sorting
1.     Quicksort
2.     Sorting in Linear Time
3.     Order Statistics
 
IV.     Hashing
1.     Hash Tables
2.     Hash Functions
3.     Universal Hashing
4.     Perfect Hashing
 
V.      Balanced Search Trees
1.     Red-black Trees
2.     B-Trees
 
VI.     Advanced Design Techniques
1.     Dynamic Programming
2.     Greedy Algorithms
 
VII.   Graph Algorithms
1.     Shortest Paths
2.     Maximum Flow
 
VIII. Polynomials and the FFT
1.     DFT and FFT
2.     Efficient FFT Implementation
 
IX.     String Matching
1.     Rabin-Karp Algorithm
2.     String Matching with Finite Automata
3.     Knuth-Morris-Pratt Algorithm
 
X.      Geometric Algorithms
1.     Segment Intersection Algorithms
2.     Convex Hull Algorithms

Learning resources

Textbook

 
Data Structures and Algorithm Analysis in C++, 3rd Ed. by Weiss. Addison Wesley.

Grading

Exams                                                      - 60%
Homework and Programming Assignments  - 40%

Back to the list

 

Login Form

Search

School of Engineering and technologies     Asian Institute of Technology