Welcome to the Data Structure and Algorithms course repository! This repository contains course materials, assignments, lecture notes, and additional resources designed to teach the fundamentals and advanced concepts of secure software design.
- Clone the repository using:
git clone https://github.com/ZAhmaad/Data-Structure-and-Algorithms
This course aims to introduce the fundamental concept of data structures and to emphasize the importance of data structures in developing and implementing efficient algorithms. Efficient data structure provides basis for a good algorithm (code). This course focuses on the most common data structures utilized in various computational problems. It will be taught that how these data structures work and their implementation. Students will practice implementing them in a number of programming assignments. This will help them understand the nuts and bolts of various data structures and enable to write efficient programs. In addition, another objective of the course is to develop effective software engineering practice, emphasizing such principles as decomposition, procedural abstraction, and software reuse.
-
🎯 Data Structure/Algorithm Analysis
Utilize the basic techniques of data structure/algorithm analysis. -
🛠️ Application of Primitive Data Structures
Apply the primitive data structures to design solutions for computational problems. -
🔍 Algorithmic Problem Solving
Analyze problems and write program solutions using algorithmic techniques with a variety of data structures and techniques..
Week | Topics Covered |
---|---|
Week 1 | - Fundamentals of data structures - An overview of computer programming - Data types, abstract data types - Review of pointers: defining pointer variables, pointer arithmetic, memory diagrams |
Week 2 | - Review of pointers continued: pointers and arrays, pointer indirections, structures and pointers - Passing pointer arguments to a function and returning pointers from a function |
Week 3 | - Computational complexity of algorithms and their time-space analysis - Running time calculations - Asymptotic notations for algorithmic complexity analysis |
Week 4 | - Lists: simple arrays, linked lists - Linear search vs binary search |
Week 5 | - Lists continued: double linked lists, circular linked lists |
Week 6 | - Stacks & Queues: sequential/array implementation of stacks and queues, linked list implementation of stacks and queues |
Week 7 | - Arithmetic expressions, polish notation - Recursion: recursive implementation of stacks and queues |
Week 8 | - Sorting: bubble sort, insertion sort, selection sort |
Week 9 | - Sorting continued: merge sort, quick sort, counting sort & radix sort, heap sort (tentative) |
Week 10 | - Trees: data structure definition and generic implementation - Tree traversals and its application - Binary tree, binary search tree, expression trees |
Week 11 | - Trees continued: AVL trees, Huffman coding (tentative), B-Tree (tentative) |
Week 12 | - Graphs: adjacency matrix implementation, linked list implementation |
Week 13/14 | - Graphs continued: depth-first traversal of graphs, breadth-first traversal of graphs, shortest distance algorithms - Hashing and searching: hashing techniques, implementation of hashing techniques |
Week 15 | - Priority Queues: binary heap, applications |
You can find the soft version of the books below here.
Books |
---|
Introduction.to.Algorithms.4th.Leiserson.Stein.Rivest.Cormen.MIT.Press.9780262046305.EBooksWorld.ir. |
Data Structures and Algorithm Analysis in C++ by Mark Allen Weiss, Fourth edition |
Data Structures and Algorithms in C++ by Adam Drozdek |
If you have any questions or need assistance, feel free to reach out:
- 📧 Email: [email protected]
- 🌐 Website: zahmaad.github.io
I am available during the office hours to discuss course-related topics or other queries:
- 📍 Office Location:
Room G14, FCSE lobby, GIKI
Feel free to book an appointment in advance by email or visit during the office hours.