TBYs Coding Academy Logo

Home > Programs > Data Structures and Algorithms

Data Structures and Algorithms

Course Description

Explore the foundational principles of data organization and algorithm design in this rigorous college-level course. Covering essential topics such as linked lists, queues, stacks, hash maps, sorting algorithms, trees, graphs, and various algorithmic strategies, students will learn to analyze, implement, and optimize data structures for efficient problem-solving. Emphasis will be placed on understanding asymptotic notation for algorithmic complexity, as well as practical applications of data structures and algorithms in software development. By the end of the course, students will be equipped with the skills to design robust algorithms, assess their efficiency, and apply them to real-world computational problems.

  • Nodes, Linked Lists,  Doubly Linked Lists
  • Queues / Stacks
  • Hash Maps
  • Asymptotic Notation
  • Pattern Searching
  • Sorting Algorithms
  • Brute Force Algorithms
  • Trees / Tree Traversal
  • Divide and Conquer Algorithms
  • Heaps  and Heapsort
  • Graph and Graph Search
  • Greedy Algorithms
  • Pathfinding Algorithms
  • This course is intended for students pursuing a degree in Computer Science or related fields who need a solid understanding of data structures and algorithms.
  • It is suitable for individuals with programming experience who want to deepen their knowledge and skills in data structures and algorithms.

  • Proficiency in programming

Course Module

Course Material

Course Details

Objective / Topics Covered
  • Introduction to nodes and their role in linked lists
  • Singly linked lists: insertion, deletion, traversal
  • Doubly linked lists: implementation, advantages over singly linked lists
  • Circular linked lists: implementation and applications
  •  
Objective / Topics Covered
  • Basic operations: enqueue, dequeue for queues; push, pop for stacks
  • Array-based implementation of queues and stacks
  • Linked list implementation and its advantages
  • Applications of queues and stacks in real-world scenarios
  •  
Objective / Topics Covered
  • Hash functions: definition, properties, collision resolution techniques
  • Implementation of hash maps using arrays and linked lists
  • Performance analysis: time complexity for insertion, deletion, and search operations
  • Applications of hash maps in data storage and retrieval
Objective / Topics Covered
  • Big O notation: definition and its significance in algorithm analysis
  • Omega notation and Theta notation: understanding different types of asymptotic bounds
  • Analyzing time complexity of algorithms using asymptotic notation
  • Space complexity: evaluating memory usage of algorithms
Objective / Topics Covered
  • Naive pattern searching algorithm
  • Knuth-Morris-Pratt (KMP) algorithm: principles and implementation
  • Boyer-Moore algorithm: key concepts and advantages
  • Applications of pattern searching in text processing and data mining
Objective / Topics Covered
  • Comparison-based sorting algorithms: bubble sort, insertion sort, selection sort
  • Efficient sorting algorithms: merge sort, quick sort, heap sort
  • Stability and adaptability in sorting algorithms
  • Performance comparison and selection criteria for different sorting algorithms
Objective / Topics Covered
  • Definition and basic principles of brute force approach
  • Subset generation and permutation using brute force
  • Applications in exhaustive search problems
  • Optimization techniques and trade-offs in brute force algorithms
  •  
Objective / Topics Covered
  • Binary trees: properties, types (complete, balanced, full), and operations
  • Tree traversal techniques: in-order, pre-order, post-order
  • Depth-first search (DFS) and breadth-first search (BFS) on trees
  • Applications of trees in hierarchical data representation
  •  
Objective / Topics Covered
  • Principles and advantages of divide and conquer approach
  • Examples: merge sort, quick sort, binary search
  • Solving problems using recursion and iterative methods
  • Analysis of time complexity for divide and conquer algorithms
Objective / Topics Covered
  • Binary heaps: properties, types (min-heap, max-heap), and operations
  • Heapify operation: maintaining heap property
  • Heapsort algorithm: implementation and analysis
  • Applications of heaps in priority queues and scheduling problems
Objective / Topics Covered
  • Graph representation: adjacency matrix, adjacency list
  • Depth-first search (DFS) and breadth-first search (BFS) on graphs
  • Shortest path algorithms: Dijkstra’s algorithm, Bellman-Ford algorithm
  • Minimum spanning tree: Prim’s algorithm, Kruskal’s algorithm
Objective / Topics Covered
  • Greedy strategy: definition and characteristics
  • Examples: Huffman coding, Prim’s algorithm for MST
  • Greedy vs dynamic programming approach
  • Analysis of correctness and efficiency of greedy algorithms
Objective / Topics Covered
  • Shortest path algorithms: Dijkstra’s algorithm, Bellman-Ford algorithm
  • A* search algorithm: principles and applications
  • Pathfinding in grid-based environments: breadth-first search (BFS), depth-first search (DFS)
  • Handling obstacles and optimizing pathfinding algorithms