Overview of the course
Data structure and Algorithms
University of Technology and Engineering
Vietnam National University Hanoi
Outline
➢Objectives of the course
➢Main contents of the course
➢Materials and requirements
Data Structures and Algorithms 2
Objectives
➢ Understand basic structures to
represent data in computer
➢ Understand basic algorithms to solve
problems
➢ Analyze time complexity of algorithms
➢ Apply an appropriate data structure and
a suitable algorithm to solve a particular
problem
➢ Implement data structures and
algorithms on a particular programming
language (prefer C++ programming
language)
Data Structures and Algorithms 3
The main content
➢Lecture 1: introduction to DSA
➢Lecture 2: basic data structures
➢Lecture 3: complexity analysis
➢Lecture 4: set, map and hash table
➢Lecture 5&6: Tree
➢Lecture 7: introduction to
algorithms
➢Lecture 8&9: advanced algorithms
Data Structures and Algorithms 4
The main content
➢Lecture 10: introduction to graphs
➢Lecture 11&12: Algorithms on
graphs
➢Lecture 13: string processing
➢Lecture 14: data structure review
➢Lecture 15: algorithm and graph
review
Data Structures and Algorithms 5
Lecture 2
basic data structures
➢Array structure:
❖Build structure
❖Operations
• Initialization
• Checking whether a list is empty or full
• Insertion
• Deletion
• Travelling a list
Data Structures and Algorithms 6
Lecture 2
basic data structures
➢ Linked list
❖ Singly linked list
❖ Double linked list
❖ Operations: Initialization, insertion, deletion,
traversal list
➢ Stack
❖ Structure
❖ Operations
➢ Queue
❖ Structure
❖ Operations
Data Structures and Algorithms 7
Lecture 3
complexity analysis
➢The concept of time complexity
concept
➢Types of time complexity: worse
case, average case, best-case
➢ Big Oh notation
Data Structures and Algorithms 8
Lecture 4
set, map and hash table
➢Set
❖Concept of set
❖Operations: Union, Minus, intersection
❖C/C++ Library
➢Map
❖Concept of map
❖Operations: get, put, remove
❖C/C++ Library
Data Structures and Algorithms 9
Lecture 4
set, map and hash table
➢Hash table
❖Concept of hash function
❖Collisions and collision handling
❖C/C++ Library
Data Structures and Algorithms 10
Lecture 5&6
Tree
➢ Tree definition
➢ Tree terminology:
❖Root
❖external and internal nodes
❖Ancestors of a node, Descendant of a
node
❖Depth of a node
❖Height of a tree
❖Siblings
❖Edge
❖Path
Data Structures and Algorithms 11
Lecture 5&6
Tree
➢ Tree structure
➢ Tree traveling algorithms
❖Pre-order
❖Post-order
❖In-order
➢ Binary tree: structure and operations
➢ Heap tree
❖Structure
❖Operations
Data Structures and Algorithms 12
Lecture 7
Introduction to algorithms
➢Algorithm concept
➢Characteristics of an algorithm
➢Algorithm designing strategies:
basic algorithms, Bruce-force,
Greedy, divide and conquer,
Dynamic programming, graph
theories, string/text algorithms
Data Structures and Algorithms 13
Lecture 8&9
Advanced algorithms
➢ Divide and conquer
❖Paradigm
❖Binary searching
❖Merge sort
➢ Dynamic programming
❖Problem solving strategy
❖Examples
➢ Greedy algorithms
❖Problem solving strategy
❖Examples
Data Structures and Algorithms 14
Lecture 10
Graph
➢ Definition of graph
➢ Graph terminology
❖Directed and undirected edge
❖Directed and undirected graph
❖End vertices
❖Edges incident on a vertex
❖Adjacent vertices
❖Degree of a vertex
❖Self-loop
Data Structures and Algorithms 15
Lecture 10
Graph
➢ Graph terminology
❖Cycle
❖Simple cycle
❖Weighted and un-weighted graphs
❖Sub-graph
❖Connectivity
➢ Graph representation
❖Adjacency matrix
❖ Linked list
Data Structures and Algorithms 16
Lecture 10
Graph
➢Travelling algorithms
❖Breath-First Search (BFS)
❖Depth-First Search (DFS)
Data Structures and Algorithms 17
Lecture 11&12
Algorithms on graph
➢ Shortest path finding algorithms
❖Dijkstra algorithm
❖Floyd algorithm
➢ Topological sorting
❖Naïve
❖Using Depth-First Search (DFS)
➢ Minimum spanning tree
❖PRIM algorithm
❖KRUSKAL algorithm
Data Structures and Algorithms 18
Lecture 13
string processing
➢Definition of string
➢String matching
❖Definition
❖Algorithms: Naïve and Knuth Morris
Pratt algorithms
➢Regular expression
❖Definition
❖Examples
Data Structures and Algorithms 19
Learning methodology
➢ Theoretical learning
➢ Practical learning:
❖Divided to groups to practice in practical
rooms (G2 building)
❖Programing language: C/C++ (or others)
❖Implement basic structures and
algorithms
❖Tested on standard inputs and output
❖Solving small projects
➢ Self-study: student using the
CodePower system (codepower.vn) to
self
Data practice
Structures and Algorithms 20
Requirements for the
course
➢Prerequisite subject: THCS 4;
advanced programming language
(prefer C/C++)
➢Attending to class and practical
rooms (90%)
➢Assignments:
❖Middle assignment: on practical
rooms
❖Structures
Data Finalandexam:
Algorithms paper based exam 21
Materials
➢Cấu trúc dữ liệu và giải thuật:
PGS.TS. Đinh Mạnh Tường
➢Introduction to Algorithms, Second
Edition Thomas H. Cormen
➢Fundamentals of Data Structures
by Ellis Horowitz and Sartaj Sahni
Addison Wesley –The Practice of
programming How to program C+
+
Data Structures and Algorithms 22