/dsa

Coursework for edX certificate in Data Structures & Algorithms

Primary LanguageC

dsa: Data Structures & Algorithms

Professional Certificate: Data Structures and Algorithms

The Georgia Institute of Technology (GTx)

  • Learn how to differentiate between linear data structures like linkedlists, arrays, arraylists, stacks, and queues, and select the correct structure for a given situation. Analyze data structure performance with the course visualization tool.
  • Visualize and study nonlinear/hierarchical data structures such as Binary Trees, BSTs and Heaps. Examine tree operations & algorithms. Implement a HashMap that uses key-value pairs to store data. Explore probabilistic data structures like SkipLists.
  • To differentiate between complex tree data structures, like AVL and (2-4) trees, understand their self-balancing techniques and implementations. Visualize and examine various Divide and Conquer sorting algorithms along with their performance.
  • Analyze & implement various Pattern Matching algorithms from KMP to Rabin-Karp. Study essential graph traversal algorithms in order to implement Dijkstra’s Shortest Path, and construct Minimum Spanning Trees. Delve in Dynamic Programming.

Note: Although the course is taught in Java, solutions here will be rewritten in C.

Contents

Module Assignment
1 ArrayList
2 TODO
3 TODO
4 TODO
5 TODO
6 TODO
7 TODO
8 TODO
9 TODO
10 TODO
11 TODO
12 TODO
13 TODO
14 TODO

Usage

System Requirements

  • Linux (test on Debian 12)
  • make
  • task
  • gcc

To build all binaries, run:

make all

Run each binary to interact with data structure or algorithm covered in each module:

$ ./bin/mod1.elf     
*** Module 1: ArrayList (integers only) ***   
                                              
Choose an action:                             
-----                                         
0       Quit                                  
1       Print array                           
2       Add to front                          
3       Add to back                           
4       Remove from front                     
5       Remove from back                      
-----                                         

Disclaimer

This repository is intended to showcase work completed in pursuit of a professional certificate as part of a professional portfolio. This code is not intended for redistribution, and the original author of this repository is not responsible for any academic penalties or other damages incurred from plagiarized code.