Data Structures and Algorithms

Syllabus:


Session

Lecture 1

Introduction to “Data structures & algorithms”


Chapter 1 (Introduction to Data Structures, Tanenbaum)

Lecture 2

Lab 0

Abstract data types (ADT)

Introduction & installation (C/ C++ refresher)

Pointers, Arrays, Structures, Class


Lecture 3

Algorithmic analysis and complexity I: Mathematical review, Model, What to Analyze?


Chapter 2

(Algorithm analysis, Weiss)

Lecture 4

 

Lab 1

Algorithmic analysis and complexity II: Running Time Calculations with Examples

Implementation of basic data structures (vector)


Lecture 5

Algorithmic analysis and complexity III: Recursion, Masters Theorem


Chapter 2

(Algorithm analysis, Weiss, Corman)

Lecture 6

Lab 2

Lists, stacks, queues I: LIST ADT

Implementation of basic data structures (list)


Lecture 7

Lists, stacks, and queues II: LIST ADT (Contd.), STACK ADT

Chapter 3 (Lists, Stacks, and Queues, Weiss)

 Lecture 8

Lab 3

Lists, stacks, queues III: Queue ADT

Algorithmic complexity of elementary operations


Lecture 9

Sorting algorithms I: Insertion sort, lower bound for Simple Sorting Algorithms


Chapter 7 (Sorting)

Lab 4

Using lists, stacks, and queues I

  

Lab 5

Sorting algorithms II: Quick Sort, Analysis, Bucket Sort

 Using lists, stacks, and queues II


Lecture 10

Priority Queues, Heaps, Application of Heaps, Heap Sort

 

Chapter 7 (Sorting)

Lecture 11

 Lab                                                                   


Lecture 12

Lab 6

Trees I: Implementation, Trees Traversals

 Sorting algorithms


Chapter 4 (Trees)

Lecture 13

 

Trees II: Binary Trees: Implementation, Expression Trees

 Chapter 4 (Trees)

Lecture 14


Lab 7

Trees III: Search Tree ADT, Tree Operations (Find, Insert, Delete, Average Case Analysis)

 

Trees III: Balanced trees & AVL trees (**Nov 3**) 2-3:15 pm

 

Lecture 15

Trees IV: Balanced Trees, AVL Trees


Lecture 16

Lab 8

Graph algorithms I: Definitions, Representations

Binary search trees


Chapter 6 (Priority Queues)

Lecture 17

Graph algorithms II: Topological sorting, Shortest Path Algorithms (Dijkstra’s Algorithm)

 

Chapter 9 (Graph algorithms)

Lecture 18

 

Lab 9

Graph algorithms III: DFS, BFS, Applications

  

Tree traversals

 

Lecture 19

Graph algorithms IV: Minimum Spanning Trees, Prim’s, Kruskal’s Algorithm

 

Chapter 9 (Graph algorithms)

Lecture 20

Lab 10

Hashing I: General Idea, Hash Functions, Separate Chaining

Heaps


Lecture 21

Hashing II: Open Addressing, Rehashing, Extendible Hashing


Chapter 5 (Hashing)

Lecture 22

Lab 11

Other Topics: Introduction to NP-completeness

Graphs I

  

Lecture 23

Other Topics: Algorithm Design Techniques I (Greedy Algorithms, Dynamic Programming)


Chapter 5 (Hashing)

Lecture 24

Lab 12

Other Topics: Algorithm Design Techniques II (Randomized Algorithms, Backtracking)

Graphs II