Author: Joshua Wozny
Copyright 2023, portions Copyright 2017 Southern New Hampshire University, COCE
This project contains assignments, milestones and projects used to explore several data structures, including vectors, linked lists, hash tablees, and binary search trees. Through these projects we gained a better understanding of how they work, and when each should be used. With pseudocode, we explored time and space complexity and evaluated the overall performance of each data structure accordingly. Through the assignments and projects I was able to practice using DRY principals of Object Oriented Programming as well as the single responsibility principle.
Practice with pseudocode and flowcharts has improved my ability to plan coding projects to reduce the amount of intial refactoring and reduce the number of logic errors. I've also learned to appreciate the debugging process. Even well planned and architected projects will produce errors that need to be debugged and represents a significant portion of time spent on any project. Learning the continuous development process of planning, coding, testing, debugging, and refactoring will allow me to better manage the software development process.
Assignment One: VectorSorting
This assignment is designed to explore sorting algorithms by implementing both a selection sort and quicksort of a vector of bids loaded from a CSV file. Refelction and Pseudocode here.
Assignment Two: LinkedLists
This assignment is designed to explore linked lists, we will implement a singly linked list to hold a collection of bids loaded from a CSV file. Refelction and Pseudocode here.
Assignment Three: HashTables
This assignment is designed to explore hash tables, we will implement a hash table using a vector of LinkedLists to hold a collection of bids loaded from a CSV file. Refelction and Pseudocode here.
Assignment Four: BinarySearchTrees
This assignment is designed to explore binary search trees, we will implement a binary search tree using a node structure to hold bids loaded from a CSV file. Reflection and Pseudocode here.
Milestone One: Course Objects with vectors
This assignment explored how to open and parse a CSV file and creating objects to store each object that is described on each line of the imported file by developing an appropriate set of pseudocode, storing in a vector.
Milestone Two: Course Objects with HashTables
This assignment explored how to open and parse a CSV file and creating course objects, each described on a single line of the imported file by developing an appropriate set of pseudocode, storing in a Hash Table
Milestone Three: Course Objects with BinarySearchTrees
This assignment explored how to open and parse a CSV file and creating course objects, each described on a single line of the imported file by developing an appropriate set of pseudocode, storing in a Binary Search Tree
Project One: Course Catolog: Data Structure Analysis
This project compared and contrasted each of the data structures we've explored in our Milestones. The project required us to provide an analysis using Big-O notation of the time and space complexity of each, and make a recomendation regarding which data structure should be used for the application and describe why.
Project Two: Course Catolog: Development
This project requires that we use the skills, and knowledge acquired throught the course to develop code using algorithms and data structures to solve basic programming problems by using the recomended data structures andf algorithms discussed in Project One.