Syllabus
The topics to be covered in the lecture can be divided into several parts (depending on the time and progress):
- Part 1: Basic Concepts and Abstract Data Types
- What are data structures?
- Why do we study data structures?
- What is an abstract data type(ADT)?
- Relationship between data structures and ADTs
- Classification of data structures
- Algorithms and performance analysis
- Complexity and asymptotic notations
- Part 2: OO and C++ Review
- Object orientation
- Object-oriented programming(OOP)
- C++ review
- C++ templates
- Data structures in C++
- OOP with C++
- Part 3: Linear Data Structures
- Arrays and strings
- Array ADT
- Polynomial ADT
- Sparse matrices
- String ADT
- Stacks and queues
- Stack ADT
- Queue ADT
- Maze
- Expression Evaluation
- Linked lists
- Singly linked lists
- Circular lists
- Doubly linked lists
- Lists applications
- Part 4: Non-linear Data Structures
- Trees
- Tree ADT
- Binary trees
- Threaded binary trees
- Heaps
- Binary search trees
- Selection trees
- Graphs
- Graph ADT
- Graph operations
- Minimum cost spanning trees
- Shortest paths and transitive closure
- Graph search
- Part 5: Sorting
- Internal sorting (insertion sort, quick sort, merge sort, heap sort, radix sort)
- External sorting
- Part 6: Hashing
- Associative arrays
- Hash functions
- Hash tables and dictionaries
- Part 7: Priority Queues**
- Priority queues
- Double-ended priority queues
- Part 8: Search Structures**
- AVL trees
- Red-black trees
- B-Trees
- B+-Trees
- Digital search structures
- Part 9: Advanced Data Structures**
- Advanced lists
- Trie
- Data structures for spatiotemporal data
- Data structures for big data
- Data structures for streaming data
- Data structures for social network analysis(SNA)
**: Topics to be covered depending on the time and progress.