[major=SE | course_id=CSD201 | syllabus_id=10368 | semester=4 | combo=core | title=Data Structures and Algorithm]
Course ID: CSD201
Title EN: Data Structures and Algorithm
Title VI: Cấu trúc dữ liệu và giải thuật
Credits: 3.0
Prerequisites: PRO192
Description: Upon finishing the course, students can:
1) Knowledge: Understand (ABET e)
- the connection between data structures and their algorithms, including an analysis of algorithms' complexity;
- data structurre in the context of object-oriented program design;
- how data structure are implemented in an OO programming language such as Java
2) Able to (ABET e)
- organize and manipulate basic structures: array, linked list, tree, heap, hash
- use algorithms for traversing, sorting, searching on studying structures
- select a suitable algorithm to solve a practical problem
3) Able to (ABET k)
- use JAVA programming language for solving some problems
- use Eclipse tool for developing programs in JAVA
- Implement some programs in JAVA to solve practical problems based on the studying algorithms
4) Others: (ABET i)
- Improve study skills (academic reading, information searching, ...)
Student tasks: - Students must attend at least 80% of contact sessions in order to be accepted to the final examination.
- Student is responsible to do all exercises given by instructor in class or at home and submit on time
- Promptly access to the https://flm.fpt.edu.vn/ for up-to-date course information
Tools: 
Course type: traditional
Decision: 358/QĐ-ĐHFPT dated 04/03/2024
Approved date: 2024-04-03
CLO1: Describe the list data structure and its’ different way of implementations. Implement the singly linked list. LO1.1 Demonstrate the list data structure with basic operations: insert, remove, edit, search, sort,... LO1.2 Explain two ways of implementing a list: using arrays and using linked lists. LO1.3 Write programs to implement the singly linked list with basic operations: add (last, first, before, after, at position), search, edit, remove, reverse, sort... ) LO1.4 Understand the doubly linked-list data structure with basic operations. LO1.5 Write code snippets which manipulate operations on doubly linked list, and use diagrams to illustrate the effect. LO1.6 Describe the circularly linked-list data structure with some basic operations like add, remove. LO1.7 Expain why the Java code library provides the ArrayList and LinkedList classes
[1] category=Progress test (PT); type=quiz; weight=20.0; duration=Option 1: 20'-40' Option 2 (For Constructivism Approach only): Follow lecturer's proposal; question_type=; grading_guide=PT 1
LO1 - LO4
PT 2
LO5 - LO8
Number of questions:
3-8 for each LOx; completion_criteria=; clos=>0
[2] category=Assignment (AS); type=on-going; weight=20.0; duration=Option 1: at home Option 2 (For Constructivism Approach only): Follow lecturer's proposal; question_type=; grading_guide=AS1: LO1 - LO3
AS2: LO4-LO6; completion_criteria=; clos=>0
[3] category=Practical Exam; type=practical exam; weight=30.0; duration=85'; question_type=; grading_guide=problem(s) to solve by programming (LO1, LO2, LO4, LO6); completion_criteria=; clos=>0
[4] category=Final exam; type=Final exam; weight=30.0; duration=60'; question_type=; grading_guide=questions distribution:
LO1.x: 5 - 8
LO2.x: 5 - 8
LO3.x: 3 - 7
LO4.x: 5 - 10
LO5.x: 5 - 8
LO6.x: 3 - 5
LO7.x: 3 - 5
LO8.x: 3 - 5

more than 70% new questions (for the current semester);; completion_criteria=; clos=4
[1] desc=Michaelt T. Goodrich, Roberto Tamassia, Michael H. Goldwasser: Data Structures and Algorithms in Java, 6th Edition, 2014; author=Michaelt T. Goodrich, Roberto Tamassia, Michael H. Goldwasser; publisher=Wiley; edition=6th; isbn=978-1-118-77133-4; main=True; online=True; note=Sách online (Wiley platform)
[2] desc=FU slides (ppt); author=; publisher=; edition=; isbn=; main=; online=; note=
[3] desc=FU exercises (pdf); author=; publisher=; edition=; isbn=; main=; online=; note=
[4] desc=Code files for students (java files); author=; publisher=; edition=; isbn=; main=; online=; note=
Session 1: Course Introduction

1.1. Using Arrays
1.2. Singly Linked Lists
Topic: Offline; Teaching type: CLO1; LO: IT
ITU: Text book, slides, exercises and sample practical examples
Materials: CSD201
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 1

Session 2: 1.3. Circularly Linked Lists
1.4. Doubly Linked Lists
Topic: Offline; Teaching type: CLO1; LO: IT
ITU: Text book, slides, exercises and sample practical examples
Materials: CSD201
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 1

Session 3: Progress test and/or
Review Exercises
Topic: Offline; Teaching type: CLO1; LO: U
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 1

Session 4: Guiding Exercises/Assignment
Topic: Offline; Teaching type: CLO1; LO: U
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 1
CLO2: Define stack and queue. Describe basic operations and the use of these structures. LO2.1 Define stack and queue. LO2.2 List and demonstrate the operations common to stacks and queues. LO2.3 Describe specific tasks to which stacks and queues are suited. LO2.4 Apply stacks to a specific application. LO2.5 Apply queues to a specific application. LO2.6 Write programs to implement stack and queue in Java programming language. LO2.7 Define and explain the need of priority queue.
Session 1: 2.1 Stacks
Topic: Offline; Teaching type: CLO2; LO: ITU
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 1

Session 2: Guiding Exercises/Assignment
Topic: Offline; Teaching type: CLO2; LO: ITU
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 1

Session 3: 2.2 Queues
2.3 Double-Ended Queues (Deque)
Topic: Offline; Teaching type: CLO2; LO: T
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 1

Session 4: 2.4 The Priority Queue
Topic: Offline; Teaching type: CLO2; LO: T
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 1
CLO3: Describe about recursive definitions, algorithms, functions and their implementation and use. LO3.1 Describe the basic ideas of recursion and how to set up recursive systems that represent certain real-world phenomena. LO3.2 Know how to develop recursive algorithms and programs LO3.3 Write programs in Java using recursion to solve some problems, like creating the Fibonacci sequence. LO3.4 Analyse a recursive function to find out its’ ouput without running. LO3.5 Explain type of recursive functions, give examples and comparing them. LO3.6 Compare recursion with iteration, analyzes their pros and cons
Session 1: Progress test and/or
Review Exercises
Topic: Offline; Teaching type: CLO2; LO: U
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 1

Session 2: Guiding Exercises/Assignment
Topic: Offline; Teaching type: CLO2; LO: U
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 1

Session 3: 3.1 Illustrative Examples
3.1.1 The Factorial Function
3.1.2 Binary Search
3.1.3 File Systems
Topic: Offline; Teaching type: CLO3; LO: IT
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 1

Session 4: 3.2 Analyzing Recursive Algorithms
3.3 Further Examples of Recursion
3.3.1 Linear Recursion
3.3.2 Binary Recursion
3.3.3 Multiple Recursion
3.4 Designing Recursive Algorithms
3.5 Eliminating Tail Recursion
Topic: Offline; Teaching type: CLO3; LO: IT
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 1
CLO4: Explain about general tree, Binary Tree and Binary Search Tree (BST). Implement BST with basic operations. LO4.1 Define general tree, Binary Tree and Binary Search Tree (BST). LO4.2 Given a BST and a sequence of insert and delete operations on it, draw the resulted tree. LO4.3 Find the smallest and largest elements, number of nodes in a tree and its’ height. LO4.4 Write code to implement features of a binary search tree, such as insertion, deletion, searching, traversals, nodes and height calculation, rotation ... LO4.5 Derive the time complexities for the above operations on a binary search tree. LO4.6 Compare a binary search tree over other data structures that we have discussed in class. LO4.7 Identify applications where a binary search tree will be useful. LO4.8 Define balanced BST and explane simple balancing algorithm. LO4.9 Define AVL Tree and explain by examples the insertion and deletion operations in it. LO5.10 Define heap and explain its’ application.
Session 1: Progress test and/or
Review Exercises
Topic: Offline; Teaching type: CLO3; LO: U
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 1

Session 2: Guiding Exercises/Assignment
Topic: Offline; Teaching type: CLO3; LO: U
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 1

Session 3: 4.1 General Trees
4.1.1 Tree Definitions and Properties
4.1.2 The Tree Abstract Data Type
Topic: Offline; Teaching type: CLO4; LO: T
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 1

Session 4: 4.2 Binary Trees
4.2.1 The Binary Tree Abstract Data Type
4.2.2 Properties of Binary Trees
4.3 Implementing Trees
4.4 Tree Traversal Algorithms
Topic: Offline; Teaching type: CLO4; LO: T
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 1
CLO5: Díscuss about graphs and their application. Implement a graph with some basic operations. LO5.1 Demonstrate graphs and their applications. Define an undirected graph and directed graph. LO5.2 Explain basic notions about a graph: vertex, edge, adjacent vertices, incident edge,... LO5.3 Know how to represent a graph using matrix and list LO5.4 Able to apply BFS and DFS to traverse a graph LO5.5 Write prorams to implement Graph with BFS and DFS traversals using Java LO5.6 Explain the shortest path problem and Dijkstra’ algorithm. LO5.7 Write program in Java to implement Dijkstra’s shortest path algorithm. LO5.8 Define the minimum spanning tree and using the Kruskal’s algorithm to find it. LO5.9 Define Euler cycle/path and the necessary and sufficient conditions for their existance. LO5.10 Explain the algorithm to find Euler path / circuit using Stack and implement it in Java lannguage. LO5.11 Define Halmilton cycle/path and able to determine them using backtracking algorithm. LO5.12 Demonstrate the graph coloring and can apply Sequential coloring algorithm to color a graph.
Session 1: Progress test and/or
Review Exercises
Assignment evaluation
Topic: Offline; Teaching type: CLO4; LO: U
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 1

Session 2: Guiding Exercises/Assignment
Topic: Offline; Teaching type: CLO4; LO: U
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 1

Session 3: 4.5 Binary Search Trees
4.5.1 Searching Within a Binary Search Tree
Topic: Offline; Teaching type: CLO4; LO: T
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 1

Session 4: 4.5.2 Insertions and Deletions
Topic: Offline; Teaching type: CLO4; LO: T
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 1
CLO6: Explain the operation and performance of some basic and advanced sorting alggorithms LO6.1 Explain the operation and performance of selection sort applying to arrays. LO6.2 Explain the operation and performance of insertion sort applying to arrays. LO6.3 Explain the operation and performance of bubble sort applying to arrays. LO6.4 Explain the operation and performance of quick sort applying to arrays. LO6.5 Explain the operation and performance of merge sort applying to arrays. LO6.6 Explain the operation and performance of heap sort applying to arrays. LO6.7 Demonstrate the operation and performance of radix sort.
Session 1: Progress test and/or
Review Exercises
Topic: Offline; Teaching type: CLO4; LO: U
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 1

Session 2: Guiding Exercises/Assignment
Topic: Offline; Teaching type: CLO4; LO: U
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 1

Session 3: 4.6 Balanced Search Trees
4.7 AVL Trees
Topic: Offline; Teaching type: CLO4; LO: T
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 1

Session 4: 4.8 Heaps
Topic: Offline; Teaching type: CLO4; LO: T
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 1
CLO7: Explain about hashing and application LO7.1 Explain the concept of "hash". Define concepts hash function and hash table and their application. LO7.2 Demonstrate the types of hash functions: Division, Folding,... LO7.2 Explain the collision and collision-handling. LO7.3 Explain the open addressing method for collision-resolution: lear and quadratic probing. LO7.4 Explain the chaining method for collision-resolution: separate chaining and Coalesced chaining. LO7.5 Define perfect hash function and extendible hashing.
Session 1: Progress test and/or
Review Exercises
Topic: Offline; Teaching type: CLO4; LO: U
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 1

Session 2: Guiding Exercises/Assignment
Topic: Offline; Teaching type: CLO4; LO: U
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 1

Session 3: Progress test 1 and review
Topic: Offline; Teaching type: CLO4; LO: U
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 2

Session 4: Review
Topic: Offline; Teaching type: CLO4; LO: U
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 2
CLO8: Describe the Text Processing problem and its’ application. Explain the Huffman, LZW and Run-length encoding Algorithms. LO8.1 Describe the Text Processing problem and its’ application. LO8.2 Explain the Brute Force Text Pattern-Matching algorithm LO8.3 Describe the main idea of The Knuth-Morris-Pratt Algorithm LO8.4 Explain The Huffman Coding Algorithm. LO8.5 Explain steps needed to use The Huffman Coding Algorithm for compressing a text file. LO8.6 Explain the LZW encoding algorithm. LO8.7 Explain the Run-length encoding algorithm.
Session 1: 5.1 Graphs
5.2 Data Structures for Graphs
5.2.1 Edge List Structure
5.2.2 Adjacency List Structure
5.2.3 Adjacency Matrix Structure
Topic: Offline; Teaching type: CLO5; LO: IT
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 2

Session 2: 5.3 Graph Traversals
5.3.1 Depth-First Search
5.3.3 Breadth-First Search
Topic: Offline; Teaching type: CLO5; LO: IT
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 2

Session 3: Progress test and/or
Review Exercises
Topic: Offline; Teaching type: CLO5; LO: U
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 2

Session 4: Guiding Exercises/Assignment
Topic: Offline; Teaching type: CLO5; LO: U
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 2
Session 1: 5.4 Shortest Paths
5.4.1 Weighted Graphs
Topic: Offline; Teaching type: CLO5; LO: T
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 2

Session 2: 5.4.2 Dijkstra’s Algorithm
Topic: Offline; Teaching type: CLO5; LO: T
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 2

Session 3: Progress test and/or
Review Exercises
Topic: Offline; Teaching type: CLO5; LO: U
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 2

Session 4: Guiding Exercises/Assignment
Topic: Offline; Teaching type: CLO5; LO: U
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 2
Session 1: 5.5 Minimum Spanning Trees
5.5.1 Prim-Jarn´ık Algorithm
Topic: Offline; Teaching type: CLO5; LO: T
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 2

Session 2: 5.5.2 Kruskal’s Algorithm
5.6. Euler's tour and Euler's cycle
Topic: Offline; Teaching type: CLO5; LO: T
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 2

Session 3: Progress test and/or
Review Exercises
Topic: Offline; Teaching type: CLO5; LO: U
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 2

Session 4: Guiding Exercises/Assignment
Topic: Offline; Teaching type: CLO5; LO: U
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 2
Session 1: 6.1 Selection-Sort
6.2 Insertion-Sort
Topic: Offline; Teaching type: CLO6; LO: IT
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 2

Session 2: 6.3 Bubble-sort
6.4 Quick-Sort
Topic: Offline; Teaching type: CLO6; LO: IT
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 2

Session 3: Progress test and/or
Review Exercises
Topic: Offline; Teaching type: CLO6; LO: U
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 2

Session 4: Guiding Exercises/Assignment
Topic: Offline; Teaching type: CLO6; LO: U
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 2
Session 1: 6.5 Merge-Sort
6.6 Heap-Sort
Topic: Offline; Teaching type: CLO6; LO: T
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 2

Session 2: 6.7 Linear-Time Sorting: Bucket-Sort and Radix-Sort
6.8 Comparing Sorting Algorithms
Topic: Offline; Teaching type: CLO6; LO: T
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 2

Session 3: Progress test and/or
Review Exercises
Topic: Offline; Teaching type: CLO6; LO: U
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 2

Session 4: Guiding Exercises/Assignment
Topic: Offline; Teaching type: CLO6; LO: U
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 2
Session 1: 7.1 Hash Tables
7.2 Hash Functions
7.3 Collision-Handling
Topic: Offline; Teaching type: CLO7; LO: IT
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 2

Session 2: 7.4 Load Factors, Rehashing, and Efficiency
7.5 Java Hash Table Implementation
Topic: Offline; Teaching type: CLO7; LO: IT
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 2

Session 3: Progress test and/or
Review Exercises
Topic: Offline; Teaching type: CLO7; LO: U
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 2

Session 4: Guiding Exercises/Assignment
Topic: Offline; Teaching type: CLO7; LO: U
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 2
Session 1: 8.1 Abundance of Digitized Text
8.2 Pattern-Matching Algorithms
8.2.1 Brute Force
8.2.2 The Knuth-Morris-Pratt Algorithm
Topic: Offline; Teaching type: CLO8; LO: IT
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 2

Session 2: 8.3 Text Compression
8.3.1 The Huffman Coding Algorithm
8.3.2 The LZW Algorithm
8.3.3 The Run-length Encoding Algorithm
Topic: Offline; Teaching type: CLO8; LO: IT
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 2

Session 3: Progress test and/or
Review Exercises
Topic: Offline; Teaching type: CLO8; LO: U
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 2

Session 4: Progress test and/or
Review Exercises
Topic: Offline; Teaching type: CLO8; LO: U
ITU: Text book, slides, exercises and sample practical examples
Download: Study just learned materials, do writing exercises and redo practical examples and do assignment 2
Session 1: Assignment evaluation
Topic: Offline; Teaching type: ; LO: 
ITU: 

Session 2: Assignment evaluation
Topic: Offline; Teaching type: ; LO: 
ITU: 

Session 3: Progress test 2 and review
Topic: Offline; Teaching type: ; LO: 
ITU: 

Session 4: Review
Topic: Offline; Teaching type: ; LO: 
ITU: