SNHU Computer Science Capstone

Software Design and Engineering:

  • Both the Dashboard from CS-340 and the Cartpole program from CS-370, will be enhanced within the scope of software design and engineering. 
  • The enhancement plan includes restructuring both applications to allow for their interoperability and integration into a single application. Code will be updated to eliminate deprecated libraries and methods, wherever possible. I intend to include a Python script that allows for the automated installation of project dependencies, or convert the final artifact into a Docker image; project documentation will be further articulated for new users. An extensible data visualization dashboard for training artificial intelligence learning models can be created by combining the core functionality of the two artifacts. The specific type of model implemented by the Cartpole program can be the first of many learning model types facilitated by the dashboard, allowing for numerous subsequent improvements to this project over time.
  • Work within this category will demonstrate my ability to integrate the functionality of multiple packages into a cohesive whole and design software that meets specific requirements, provides value to potential users, simplifying complicated tasks to increase accessibility of complex functionality to a larger audience. Doing so will show that I can execute well-founded and innovative techniques, skills, and tools in computing practices to implement computer solutions that deliver value and accomplish industry-specific goals.

Algorithm and Data Structures:

  • The Cartpole program, from CS-370, can be improved upon within the scope of algorithms and data structures.
  • The project can be enhanced by changing its structure to be more modular and responsive to user input; the amount of code needed to represent it can probably be reduced by approximately 80%. The storage and manipulation of the resulting data must be handled using suitable data structures implemented with consideration for efficiency and speed. Data may need to be cleaned, manipulated, and organized when being stored or retrieved from the MongoDB database(s) to be useful for informative data visualization. There may also be modifications made to the Cartpole code that improve performance in the current problem space or that allow for the program to solve a more complicated problem space. Improving the capabilities or efficiency of the Cartpole program (or any learning algorithm) allows it to be useful in a greater variety of potential applications. Cartpole programs can be used in the development of different kinds of intelligent software applications, such as video games, simulators, and robotics. Part of the utility associated with a data visualization dashboard used for training learning models is that it assists developers in optimizing learning algorithm parameters so that effective algorithms can be created using fewer computational resources. This leads to the production of higher-quality models using less computational overhead.
  • Enhancements in this category will demonstrate my knowledge of how to implement data structures that optimize efficiency and/or performance, and my ability to improve existing algorithms to solve problems more effectively. This will show that I can Design and evaluate computing solutions that solve a given problem using algorithmic principles and computer science practices and standards appropriate to its solution while managing the trade-offs involved in design choices.

Databases:

  • The Dashboard program from CS-340 can be improved within the scope of databases.
  • The program can be improved by repurposing it to query dynamically populated databases (generated with data produced by the Cartpole program), and through the modification of the interface functionality to produce labor-saving feedback to the Cartpole model training process. The program is already integrated with a Python compatible version of a non-relational database (MongoDB), with prespecified database queries made available to common users through easy-to-use graphical user interface elements. Some of these elements will be repurposed to access data stored by the Cartpole program, and additional controls will be created to augment the Dashboard functionality for use in the new context. I am also considering implementing fast encryption and decryption for data contained in the database to demonstrate how sensitive data can be worked with while still being protected.
  • By implementing strategies that improve the security of data at rest and data at flight, I will demonstrate a security mindset that anticipates adversarial exploits in software architecture and designs to expose potential vulnerabilities, mitigate design flaws, and ensure privacy and enhanced security of data and resources.

Additional Course Objectives:

Through the use of GitHub (public-facing repositories) and GitHub Pages (a site with which to highlight select portfolio items), I will position myself for collaborative development of future iterations of the target artifact. Additionally, I will have the opportunity to integrate feedback from my peers, Professor Goggin, and past professors. This will facilitate well-documented updates and proper versioning of my portfolio project while demonstrating my ability to employ strategies for building collaborative environments that enable diverse audiences to support organizational decision-making in the field of computer science. The production of my final project will require that I communicate my progress through narratives and a professional self-assessment; this will demonstrate my ability to design, develop, and deliver professional-quality oral, written, and visual communications that are coherent, technically sound, and appropriately adapted to specific audiences and contexts.

This site was built using GitHub Pages You can find the source code for Jekyll at GitHub