Don't forget to hit the β if you like this repo.
Welcome to the Course on Data Structures and Algorithms! This course will teach you the fundamentals of data structures and algorithms, which are essential for developing efficient and optimised computer programs.
- Course Duration: 15 weeks
- Prerequisites: Programming Technique 1 and Programming Technique 2
By the end of this course, students will be able to:
- Choose the most suitable data structures and analyse the most effective algorithm for solving certain problem.
- Apply effectively data structure concepts in programming.
- Develop medium scale programs as a group mini project by applying data structure concepts in problem solving.
This course contributes to the following Program Learning Outcomes:
- PLO1: Ability to acquire theory and principles of computer science and equip with social science and personal development knowledge.
- PLO2: Ability to design and construct computer programs using standard approaches.
- PLO7: Ability to work effectively in a team.
- Introduction to Data Structures and Algorithms
- Abstract Data Type, C++ Revision and Advanced File Operations
- Recursive and Algorithm Efficiency
- Sorting
- Searching
- Linked Lists
- Stack
- Queue
- Tree
- Algorithm and Data Structure
- Types of Data Structure
- Programming Principle
- Abstract Data Type Concepts
- C++ Revision: C++ Class, Pass objects to functions, class as return value for functions, Array of class, and pointer to class
- Advanced File Operations: File Operations, Passing File Stream Objects to Functions, Member Functions for Reading and Writing Files, Binary Files, and Random-Access Files
- Recursive Principle and Design
- Tracing Recursive Algorithms
- Algorithm Efficiency: Analysis order of magnitude, Big O notation
- Simple Sort: Bubble Sort, Selection Sort, Insertion Sort, and Sorting Analysis
- Advanced Sort: Merge Sort and Quick Sort
- Sequential search
- Binary search
- Pointer Concepts
- Introduction to Linked lists
- Linked lists operations
- Types of Linked List
- Linked List Implementations: Declaring Nodes and Linked Lists class, Insert Node, Delete Node, Find Node, and Print Node
- Introduction to Stack
- Stack Operations: push() and pop()
- Stack implementations: Stack Array and Stack Linked List
- Stack Applications: Infix, Postfix and Prefix
- Introduction to Queue
- Queue Implementations: Array Implementation (Linear and Circular) and Linked List Implementation (Linear and Circular Queue)
- Introduction to Tree
- Terms related to Tree concepts
- Binary Search Tree
- Binary Search Tree Implementations: Declaring Tree node, Tree class, Create Node, Insert Node, Delete Node, Search Node
- Tree Traversals
- Assignments(2): 10%
- Lab Exercises(4): 10%
- Quizzes(2): 10%
- Project: 10%
- Test1(Theory): 15%
- Test2(Practical): 15%
- Final Exam: 30%
- Total: 100%
- Narasimha Karumanchi. (2010). Data Structures and Algorithms Made Easy. Careermonk Publications.β
- Dale, N. B. (2003). C++ Plus Data Structures. Jones & Bartlett Learning.
- Drozdek, A. (2012). Data Structures and Algorithms in C++. Cengage Learning.
- Sartaj Sahni. (2005). Data Structures, Algorithms, and Applications in C++. Silicon Press, Cop.
- Goodrich, M. T., Mount, D. M., and Tamassia, R. (2011). Data Structures and Algorithms in C++. John Wiley & Sons, Cop.β
- Carrano, F. M., and Henry, T. (2017). Data Abstraction and Problem Solving with C++ : Walls and Mirrors. Pearson.
- Gaddis, T. (2015). Starting out with C++. From control structures through objects. Pearson.β
- Lipschutz, S. (2011). Data Structures With C. McGraw-Hill Education.β
- Miller, B., Ranum, D. and Pearce, J. (n.d.). Problem Solving with Algorithms and Data Structures using C++. Runestone.academyβ
- Learn GitHub