Data Structures and Algorithm with Python (CSD203)
Vietnamese title: Cấu trúc dữ liệu và giải thuật với Python
Credits: 3
Prerequisites: PFP191

Description:
This course introduces the basic concepts of data structures and algorithms in data structures with the use of Python. Topics introduced in the course include the basics of algorithm analysis, basic data structures (including stack, queue, linked list, hashtable, tree), recursion and some important applications of these data structures and algorithms.

Learning outcomes:
LO1. Describe the list data structure and its’ different way of implementations. Implement the singly linked list.
LO2. Define stack and queue. Describe basic operations and the use of these structures.
LO3. Describe about recursive definitions, algorithms, functions and their implementation and use.
LO4. Explain about general tree, Binary Tree and Binary Search Tree (BST). Implement BST with basic operations.
LO5. Díscuss about graphs and their application. Implement a graph with some basic operations.
LO6 Explain the operation and performance of some basic and advanced sorting alggorithms
LO7 Explain about hashing and application.
LO8 Describe the Text Processing problem and its’ application. Explain the Huffman, LZW and Run-length encoding Algorithms.

Student tasks:
- Students must attend at least 80% of contact slots in order to be accepted to the final examination.
- Student is responsible to do all exercises, assignments and labs given by instructor in class or at home and submit on time
- Use laptop in class only for learning purpose
- Promptly access to the https://flm.fpt.edu.vn/ for up-to-date course information

Tools:
- Thonny
- PyCharm
- Visual Studio Code

Materials:
description: Data Structures and Algorithms in Python
author: Michael T. Goodrich, Roberto Tamassia, Michael H. Goldwasser
publisher: Wiley
published_date: 2013
edition: 1st
isbn: 9781118290279
note: Sách online (Wiley platform)
description: - PowerPoint Slides
description: - Assignments
description: - Labs
description: Data Structures and Algorithms using Python
author: Rance D. Necaise
publisher: Wiley
published_date: 2011
edition: 1st
isbn: 9788126562169
description: Data Structures and Algorithms with Python
author: Kent D. Lee Steve Hubbard
publisher: Springer
published_date: 2015
edition: 1st
isbn: 9783319130712

Assessments:
category: Assignment 1
type: on-going
weight: 10.0
duration: 45
no_question: Written test questions
knowledge_and_skill: 2
grading_guide: - cover content 1,2,3,4
note: in class, by instructor
category: Assignment 2
type: on-going
weight: 10.0
duration: 45'
no_question: Written test questions
knowledge_and_skill: 2
grading_guide: - cover content 5,6,7,8
note: in class, by instructor
category: Practical exam
type: on-going
weight: 30.0
duration: 85'
no_question: Written test questions
knowledge_and_skill: 2
grading_guide: - cover content 1,2,3,4,5,6,7
note: by exam board,
using computer
category: Progress test 1
type: on-going
weight: 10.0
duration: 10'-30'
no_question: Multiple choices
Marked by Computer or a suitable format
knowledge_and_skill: 30
grading_guide: - cover content 1,2,3,4
note: in class, by instructor
category: Progress test 2
type: on-going
weight: 10.0
duration: 10'-30'
no_question: Multiple choicesMarked by Computer or a suitable format
knowledge_and_skill: 30
grading_guide: - cover content 5,6,7,8
note: in class, by instructor
category: Final exam
type: Final exam
weight: 30.0
duration: 60'
no_question: Multiple choices
Marked by Computer
knowledge_and_skill: 50
grading_guide: concepts, algorithms;
all studied chapters
note: by exam board,
using computer

Schedule:
session: Course Introduction
1.1. Using Arrays
1.2. Singly Linked Lists
learning_outcomes: IT
materials: mat1
session: 1.3. Circularly Linked Lists
1.4. Doubly Linked Lists
learning_outcomes: IT
session: Progress test and/or
Review Exercises
Guiding Exercises/Assignment
learning_outcomes: U
session: Progress test and/or
Review Exercises
Guiding Exercises/Assignment (cont.)
learning_outcomes: U
session: 2.1 Stacks
Guiding Exercises/Assignment
learning_outcomes: T
U
materials: drive.google.com
session: 2.1 Stacks
Guiding Exercises/Assignment (cont.)
learning_outcomes: T
U
materials: drive.google.com
session: 2.2 Queues
2.3 Double-Ended Queues (Deque)
learning_outcomes: T
materials: drive.google.com
session: 2.4 The Priority Queue
learning_outcomes: T
materials: drive.google.com
session: Progress test and/or
Review Exercises
Guiding Exercises/Assignment
learning_outcomes: U
session: Progress test and/or
Review Exercises
Guiding Exercises/Assignment (cont.)
learning_outcomes: U
session: 3.1 Illustrative Examples
3.1.1 The Factorial Function
3.1.2 Binary Search
3.1.3 File Systems
3.2 Analyzing Recursive Algorithms
learning_outcomes: T
materials: drive.google.com
session: 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
learning_outcomes: T
materials: drive.google.com
session: Progress test and/or
Review Exercises
Guiding Exercises/Assignment
learning_outcomes: U
session: Progress test and/or
Review Exercises
Guiding Exercises/Assignment (cont.)
learning_outcomes: U
session: 4.1 General Trees
4.1.1 Tree Definitions and Properties
4.1.2 The Tree Abstract Data Type
4.2 Binary Trees - . 317
4.2.1 The Binary Tree Abstract Data Type
4.2.2 Properties of Binary Trees
learning_outcomes: T
materials: drive.google.com
session: 4.3 Implementing Trees
4.4 Tree Traversal Algorithms
learning_outcomes: T
materials: drive.google.com
session: Progress test and/or
Review Exercises
Guiding Exercises/Assignment
learning_outcomes: U
session: Progress test and/or
Review Exercises
Guiding Exercises/Assignment (cont.)
learning_outcomes: U
session: 4.5 Binary Search Trees
4.5.1 Searching Within a Binary Search Tree
learning_outcomes: T
materials: drive.google.com
session: 4.5.2 Insertions and Deletions
learning_outcomes: T
materials: drive.google.com
session: Progress test and/or
Review Exercises
Guiding Exercises/Assignment
learning_outcomes: U
session: Progress test and/or
Review Exercises
Guiding Exercises/Assignment (cont.)
learning_outcomes: U
session: 4.6 Balanced Search Trees
4.7 AVL Trees
learning_outcomes: T
materials: drive.google.com
session: 4.8 Heaps
learning_outcomes: T
materials: drive.google.com
session: Progress test and/or
Review Exercises
Guiding Exercises/Assignment
learning_outcomes: U
session: Progress test and/or
Review Exercises
Guiding Exercises/Assignment (cont.)
learning_outcomes: U
session: Progress test 1 and review
learning_outcomes: U
session: Progress test 1 and review (cont.)
learning_outcomes: U
session: 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
learning_outcomes: T
materials: drive.google.com
session: 5.3 Graph Traversals
5.3.1 Depth-First Search
5.3.3 Breadth-First Search
learning_outcomes: T
materials: drive.google.com
session: Progress test and/or Assignmen
Review Exercises
Guiding Exercises/Assignmen
learning_outcomes: U
session: Progress test and/or Assignmen
Review Exercises
Guiding Exercises/Assignmen (cont.)
learning_outcomes: U
session: 5.4 Shortest Paths
5.4.1 Weighted Graphs
learning_outcomes: T
materials: drive.google.com
session: 5.4.2 Dijkstra’s Algorithm
learning_outcomes: T
materials: drive.google.com
session: Progress test and/or
Review Exercises
Guiding Exercises/Assignmen
learning_outcomes: U
session: Progress test and/or
Review Exercises
Guiding Exercises/Assignmen (cont.)
learning_outcomes: U
session: 5.5 Minimum Spanning Trees
5.5.1 Prim-Jarn´ık Algorithm
5.5.2 Kruskal’s Algorithm
learning_outcomes: T
materials: drive.google.com
session: 5.6. Euler's tour and Euler's cycle
learning_outcomes: T
materials: drive.google.com
session: Progress test and/or
Review Exercises
Guiding Exercises/Assignmen
learning_outcomes: U
session: Progress test and/or
Review Exercises
Guiding Exercises/Assignmen (cont.)
learning_outcomes: U
session: 6.1 Selection-Sort
6.2 Insertion-Sort
learning_outcomes: T
materials: drive.google.com
session: 6.3 Bubble-sort
6.4 Quick-Sort
learning_outcomes: T
materials: drive.google.com
session: Progress test and/or
Review Exercises
Guiding Exercises/Assignmen
learning_outcomes: U
session: Progress test and/or
Review Exercises
Guiding Exercises/Assignmen (cont.)
learning_outcomes: U
session: 6.5 Merge-Sort
6.6 Heap-Sort
learning_outcomes: T
materials: drive.google.com
session: 6.7 Linear-Time Sorting: Bucket-Sort and Radix-Sort
6.8 Comparing Sorting Algorithms
learning_outcomes: T
materials: drive.google.com
session: Progress test and/or
Review Exercises
Guiding Exercises/Assignmen
learning_outcomes: U
session: Progress test and/or
Review Exercises
Guiding Exercises/Assignmen (cont.)
learning_outcomes: U
session: 7.1 Hash Tables
7.2 Hash Functions
7.3 Collision-Handling
learning_outcomes: T
materials: drive.google.com
session: 7.4 Load Factors, Rehashing, and Efficiency
7.5 Python Hash Table Implementation
learning_outcomes: T
materials: drive.google.com
session: Progress test and/or
Review Exercises
Guiding Exercises/Assignmen
learning_outcomes: U
session: Progress test and/or
Review Exercises
Guiding Exercises/Assignmen (cont.)
learning_outcomes: U
session: 8.1 Abundance of Digitized Text
8.2 Pattern-Matching Algorithms
8.2.1 Brute Force
8.2.2 The Knuth-Morris-Pratt Algorithm
learning_outcomes: T
materials: drive.google.com
session: 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
learning_outcomes: T
materials: drive.google.com
session: Progress test and/or
Review Exercises
Guiding Exercises/Assignmen
learning_outcomes: U
session: Progress test and/or
Review Exercises
Guiding Exercises/Assignmen (cont.)
learning_outcomes: U
session: Course review
Practical Exam
learning_outcomes: I
session: Course review
Practical Exam (cont.)
learning_outcomes: I
session: Progress test 2 and review
learning_outcomes: U
I
session: Progress test 2 and review (cont.)
learning_outcomes: U
I