This repository contains lab work for the CSC3310 - Algorithms and Advanced Data Structures course at the Milwaukee School of Engineering (Fall 2024), instructed by Dr. Sebastian Berisha. The focus of the course is on algorithm design, data structures, and computational complexity.
This was provided by the course syllabus:
- Determine and justify time and space complexity of a variety of algorithms (both recursive and non-recursive)
- Identify differences between best, expected, and worst-case runtimes
- Identify and apply strategies such as brute force, greedy, recursive backtracking, divide and conquer, and dynamic programming in algorithm analysis and design
- Describe, implement, analyze, and apply data structures such as self-balancing trees and heaps
- Demonstrate applications of graph algorithms including breadth-first search, depth-first search, and topological sort
- Describe applications, tradeoffs, and requirements for appropriate use of cryptographic and hash-based algorithms
- Identify NP-complete problems
- Execute empirical methods for analyzing and comparing data structures and algorithms
The labs are organized into separate folders, each containing the source code and supporting files for the respective lab assignments:
├── Lab1/ # Benchmarking Insertion and Selection Sort
├── Lab2/ # Benchmarking Heaps
├── Lab3/ # Iterative Algorithm Design
├── Lab4/ # Selection Problem
└── Lab5/ # Scapegoat Trees
Lab | Description |
---|---|
Lab 1: Benchmarking Insertion and Selection Sort | Implementing and benchmarking insertion and selection sort algorithms. |
Lab 2: Benchmarking Heaps | Implementing and benchmarking heap data structures. |
Lab 3: Iterative Algorithm Design | Implement an iterative algorithm for determining if a point is inside a polygon. |
Lab 4: Selection Problem | Implement a selection algorithm to find the k-th smallest element in an array. |
Lab 5: Scapegoat Trees | Implement a scapegoat tree data structure. |
- Algorithm Design and Applications by Michael T. Goodrich, Roberto Tamassia.
- Introduction to Algorithms 4th Ed. by Cormen, Leiserson, Rivest, and Stein, MIT Press, 2022.
This repository is published to showcase my work and document my learning progress throughout the course. If you are a student in the same course, please be aware of your academic institution's policies on academic honesty and integrity. Do not copy any part of these assignments for your own submission.