/SECJ2013-DSA

This repository offers educational resources, code examples, and implementations relating to data structures and algorithms using C++ programming language.

Primary LanguageC++

Stars Badge Forks Badge Pull Requests Badge Issues Badge GitHub contributors Visitors

Don't forget to hit the ⭐ if you like this repo.

Data Structures and Algorithms (SECJ2013)

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 Overview πŸ“š

  • Course Duration: 15 weeks
  • Prerequisites: Programming Technique 1 and Programming Technique 2

Course Learning Outcomes (CLO) 🎯

By the end of this course, students will be able to:

  1. Choose the most suitable data structures and analyse the most effective algorithm for solving certain problem.
  2. Apply effectively data structure concepts in programming.
  3. Develop medium scale programs as a group mini project by applying data structure concepts in problem solving.

Program Learning Outcomes (PLO) 🌟

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.

Table of Contents πŸ“‘

  1. Introduction to Data Structures and Algorithms
  2. Abstract Data Type, C++ Revision and Advanced File Operations
  3. Recursive and Algorithm Efficiency
  4. Sorting
  5. Searching
  6. Linked Lists
  7. Stack
  8. Queue
  9. Tree

Course Content πŸ“–

Introduction to Data Structures and Algorithms

  • Algorithm and Data Structure
  • Types of Data Structure
  • Programming Principle

Abstract Data Type, C++ Revision and Advanced File Operations

  • 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 and Algorithm Efficiency

  • Recursive Principle and Design
  • Tracing Recursive Algorithms
  • Algorithm Efficiency: Analysis order of magnitude, Big O notation

Sorting

  • Simple Sort: Bubble Sort, Selection Sort, Insertion Sort, and Sorting Analysis
  • Advanced Sort: Merge Sort and Quick Sort

Searching

  • Sequential search
  • Binary search

Linked Lists

  • 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

Stack

  • Introduction to Stack
  • Stack Operations: push() and pop()
  • Stack implementations: Stack Array and Stack Linked List
  • Stack Applications: Infix, Postfix and Prefix

Queue

  • Introduction to Queue
  • Queue Implementations: Array Implementation (Linear and Circular) and Linked List Implementation (Linear and Circular Queue)

Tree

  • 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

Evaluation πŸ“Š

  • Assignments(2): 10%
  • Lab Exercises(4): 10%
  • Quizzes(2): 10%
  • Project: 10%
  • Test1(Theory): 15%
  • Test2(Practical): 15%
  • Final Exam: 30%
  • Total: 100%

Additional Resources πŸ”—