Skip to content

Syncert/cs_300_data_structures_design_and_algorithms

Repository files navigation

CS-300-Data-Structures-Design-and-Algorithms

Repository for my DSA Analysis and Design Course

Overview

This repository contains the projects for the CS 300 Data Structures and Algorithms course at ABCU. The focus is on applying non-coding development methodologies for outlining algorithmic design, evaluating complex data structures using advanced algorithms, and developing code to solve basic programming problems.

Projects

Project One: Pseudocode and Data Structure Evaluation

Problem Statement

The academic advisors in the Computer Science department at ABCU need a program that can:

  1. Print a list of all the Computer Science courses in alphanumeric order.
  2. For a given course, print out its title and prerequisites.

Approach

I tackled this problem by exploring three data structures: vector, hash table, and tree. Each was designed to perform the required functions with pseudocode. The Big O analysis was performed to evaluate the runtime and memory of these structures.

Roadblocks

Understanding the best data structure to use for efficiency was a challenge. This was overcome by performing a comprehensive runtime analysis and evaluating the advantages and disadvantages of each structure.

Insights Gained

This project has expanded my approach to designing software and developing programs by considering the underlying data structures. It has also evolved the way I write programs that are maintainable, readable, and adaptable.

Project Two: Advising Assistance Program (Coding in C++)

Problem Statement

Building upon Project One, the goal here was to write the actual code for the application to assist academic advisors.

Approach

Using C++, I implemented the recommended data structure from Project One and designed code to:

  1. Read the course data file.
  2. Load data into the structure.
  3. Print an alphanumeric list of courses.
  4. Print the course title and prerequisites for any individual course.

Roadblocks

Ensuring that the code adhered to industry standard best practices required careful attention to error handling, in-line comments, and naming conventions.

Insights Gained

This project helped in understanding how to apply algorithms and data structures in real coding scenarios, making the code more robust and maintainable.

Questions and Answers

What was the problem you were solving in the projects for this course?

In Project One, the problem was to design a program (using pseudocode) that could efficiently handle course information, and in Project Two, it was to implement the designed pseudocode in C++.

How did you approach the problem? Consider why data structures are important to understand.

The approach involved selecting the appropriate data structures that would optimize performance and memory usage. Understanding data structures was crucial as it helped in creating a program that could handle large amounts of data efficiently.

How did you overcome any roadblocks you encountered while going through the activities or project?

Roadblocks were overcome by careful analysis, seeking additional resources when needed, and iterative testing of different solutions to find the most suitable one. There's always a solution, it's just a matter of finding it.

How has your work on this project expanded your approach to designing software and developing programs?

The work on these projects taught the importance of analyzing the problem first, choosing the right data structures, and considering the performance and maintainability of the code from the very beginning.

How has your work on this project evolved the way you write programs that are maintainable, readable, and adaptable?

These projects emphasized the importance of writing clean code with clear comments, following naming conventions, and considering scalability and maintainability from the outset.

Conclusion

These projects have been instrumental in understanding and applying data structures and algorithms, enhancing the ability to write efficient, maintainable, and adaptable code.

About

Repository for my DSA Analysis and Design Course

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages