Title: Data Structures and Algorithms (for the students of Computer Science)
Venue: Shiraz University Department of Mathematics, Shiraz, Iran, Fall 2024
Instructor: Reza Rezazadegan
Course webpage: www.dreamintelligent.com/data-structures
Course Github: https://github.com/rezareza007/datastructs2024
Course notes are published as jupyter notebooks on Github.
Texts:
– Introduction to Algorithms from MIT Open Courseware, available here.
– Rance Nicaise, Data Structures and Algorithms Using Python, 2011
Prerequisites:
– Familiarity with Python programming, including lists, loops, conditionals and classes
– Basic discrete mathematics (induction, recursions, etc)
Course evaluation:
– In-class problem solving (40 minutes a week, 5 points)
– Coding project and presentation (4 points). Projects must be in for of a jupyter notebook. Please check the subject of your project with me in advance.
– Written exam (11 points)
Course syllabus
0- Introduction: Problems, algorithms and efficiency
1- Sequence structure: arrays
2- Sequence structure: linked lists
3- Sequence structures: Queues and Stacks
4- Sets and Maps
5- Sorting and Searching
6- Hashing
7- Advanced sorting
8- Binary Trees
9- AVL Trees
10- Breadth First Search
11- Depth First Search
12- Weighted Shortest Paths
13- Dijkstra algorithm
14- Recursive algorithms
15- Complexity