Pushpa Laxman

SNHU CS499 - Computer Science Capstone

Welcome

My ePortfolio showcases a comprehensive understanding of essential elements of computer science, such as programming languages, algorithms, data structures, and software development techniques that I gained and developed during my time studying Computer Science at Southern New Hampshire University (SNHU).   In my portfolio, I showcase projects that demonstrate designing, developing, and enhancing software solutions by employing best practices, coding methodologies, and the latest tools across multiple areas, including backend services, web applications, and system-driven frameworks.

Table of Content

 Professional Self-Assessment
 Refinement Plan and Code Review
     Code Review Videos Link
 Software Design and Engineering
     Artifact Software Design and Engineering
 Algorithms and Data Structure
     Artifact Algorithms and Data Structure
 Databases
     Artifact Databases
 Reviews

### _Professional Self-Assessment_ I am pleased to introduce you to my CS499 Capstone ePortfolio. This page presents my work as a student at Southern New Hampshire University.
It has been three years since August 2022, when I began studying Computer Science. Throughout the program, I consistently looked forward to acquiring new skills, ranging from computer systems and programming to developing cutting-edge technology. It was my passion for working with computers and technology that attracted me to this program, as well as enhanced my ability to solve complex problems, think critically, and contribute to the advancement of many fields. My experience in the Computer Science Program has helped me learn and improve my skills, Emphasizing my motivation, problem-solving skills, and solid grasp of the various components and tools essential for planning and programming.
Throughout the Computer Science Program, I have been able to enhance my abilities, highlighting my drive, analytical skills, and strong understanding of the different elements and tools necessary for effective planning and programming. Additionally, the expertise I have gained in various programming languages, including Java, Python, and SQL, as well as development tools and IDEs, has improved my capabilities. The technical competencies I have developed include problem-solving in coding, debugging, building robust applications, ensuring data security, and troubleshooting, all while placing a strong emphasis on adhering to industry best practices and standards. Coding in simple blocks and testing as part of my workflow helps me improve these skills and abilities by being organized, cautious, and cautious. As a project becomes more complex, testing becomes increasingly complicated to ensure that a program works and has no weaknesses or vulnerabilities. Through simple blocks of code and incorporating testing into my workflow, I continue to develop my skills. Increasing complexity makes testing software more challenging to ensure it functions correctly and is free of security risks or flaws. This program has made me more adept at making informed design choices, managing tradeoffs related to performance and scalability, and effectively communicating technical solutions. My passion for exploring new concepts and quickly mastering the skills needed drives me to excel and pushes me to achieve greater heights.
In my first project, I showcase my understanding of software engineering and design through a weight-tracking app designed to monitor a user's weight and health. This project emphasizes the user interface, where I applied object-oriented design principles to create software that is reliable, scalable, and easy to maintain. The second project focuses on Algorithms and Data Structures, featuring a website for an animal rescue organization with a training dashboard designed to recruit dogs for search-and-rescue initiatives. For my third project, I utilize MongoDB databases to examine and manipulate data through Python in the Jupyter environment.
I developed skills in problem-solving and analytical thinking, as well as the ability to break down problems into smaller components. Additionally, staying informed about the latest technologies and trends is essential. The importance of focusing on details cannot be overstated when programming, debugging software, or conducting data analysis.
It is important to think about security throughout the entire process instead of leaving it to the end, as this will help improve my coding skills. My ability to analyze code allows me to find mistakes and vulnerabilities I might have missed during my focus on code development. Using best practices and standards, I produce formatted, understandable, and maintainable software code and systems. Similarly, seeking help from peers to review my work is another way to enhance my attention to detail and communication skills. Looking at my work with a fresh set of eyes helps me quickly discover overlooked mistakes.
By actively participating in peer review every week through general discussion, I gained valuable insights, built stronger relationships with my colleagues, and ultimately improved the quality of my work. It provides a platform for giving and receiving constructive feedback, thereby improving skills in delivering and interpreting feedback effectively.
Engaging in peer review as both a reviewer and a contributor will enable me to acquire valuable knowledge, foster deeper connections with colleagues, and enhance the overall quality of my work. It offers an opportunity to provide and obtain constructive criticism, thereby honing my abilities to deliver and understand feedback effectively.
I came to realize the significance of algorithms and data structures for effective problem-solving and enhancing software performance. Computer science professionals need to possess a deep knowledge of algorithms such as sorting, searching, and graph algorithms, alongside data structures including arrays, linked lists, and trees.
During my course working in the SDLC, algorithms and data structures, security vulnerabilities etc became increasingly important to solving problems efficiently and optimizing software performance. Computer scientists should have a solid understanding of algorithms like sorting, searching, and graph algorithms, as well as data structures like arrays, linked lists, and trees. It is that knowledge that brings gratitude and satisfaction when it is applied. Over the course of my study and professional career, I have developed and enhanced all of the above soft skills, as well as others such as creativity, communication, and time management.
Throughout my course, I focus on developing a strong combination of technical and soft skills. It was helpful for me to learn about how the SDLC works by analysing, designing, coding (implementation), testing, and maintaining, a step that is crucial for delivering high-quality software products. This course taught me about algorithms, data structures, and security vulnerabilities, which have been extremely valuable for addressing challenges effectively and improving software performance. To succeed as a computer scientist, one must have a strong grasp of algorithms such as sorting, searching, and graphs, as well as data structures such as arrays, linked lists, and trees.
### _Refinement Plan and Code Review_ Code review is often referred to as a peer assessment of code, which helps developers ensure or improve code quality and identify and rectify errors that may have been missed during the initial development stage before integration and deployment. In other words, code reviews are a practice focused on maintaining software quality, wherein one or more individuals or tools methodically inspect and evaluate the program's source code. After a software developer completes coding, they can easily make mistakes. With this in mind, code reviews provide an excellent opportunity to gain a different perspective on the solutions and implementations, helping to identify bugs, logical errors, overlooked edge cases, or other concerns so we can collaboratively resolve them and prevent mistakes.
Code review videos feature an assessment of the three chosen artifact codes for the capstone project, focusing on their shortcomings and vulnerabilities, along with a description of my strategy for improvements. The code review involves a detailed examination of the current source code, providing a concise overview of the project, its purpose, and what the application accomplishes. Following this, I assessed the provided checklist in relation to the existing source code, discussing its limitations and sharing my insights on the proposed enhancements across three categories: software design and engineering artifacts, algorithms and data structures, and databases. Through the creation of these videos, I am enhancing my skills in professional communication across written, verbal, and visual channels. Furthermore, I am ensuring that my code review presentation is effectively communicated in a collaborative setting and expressing my ideas clearly.
In the artifact of the Code analysis, I illustrate the key components of: Current code and its operation: This segment examines the capabilities and performance of the current code.
Code Review: Highlight areas requiring improvement concerning structure, documentation, security, testing, loops, functionality, comments, etc.
Planned Improvements: This portion outlines intended enhancements that respond to the concerns identified in the code review.
### _Software Design and Engineering_ The chosen artifact for the code review of software design and engineering is the Weight Tracking Mobile App. This application was created as part of the computer science course CS360 Mobile Architecture and Programming. Its primary objective is to allow users to monitor their weight through an Android device. The mobile app was developed in JAVA and incorporates an SQLite database. Planned upgrades include implementing input validation for usernames and passwords, improving error handling, creating a new account page for new users, and adding graphs or charts to assist users in tracking their weight progress or changes. With these enhancements, I aim to improve data security, enhance account management and login functionalities, safeguard account information, ensure accessibility, and make the interface more user-friendly while also addressing exception handling. ADD LINK TO YOU TUBE OF POSTED VIDEO
### _Algorithms and Data Structure_ The code review for algorithms and data structures pertains to the Animal Shelter class. This program was planned, designed, and developed as part of the computer science curriculum, CS 340 Client-Server Development course. It aims to create a fully functional interactive web-based dashboard for the Grazioso animals training company, which specializes in identifying suitable dogs for their search and rescue training programs. The application is built using Python and the Dash framework, with MongoDB acting as its database. The connection between Python and MongoDB is established using the PyMongo driver, while Jupyter Notebook functions as a testing environment for the web application. The application is structured as a monolithic architecture, which limits its flexibility and scalability due to a tightly coupled codebase. I intend to decompose the code into smaller, individual services, ensuring that each service can be independently built, developed, and tested. Additionally, I plan to utilize advanced operations, as the list will facilitate sorting algorithms like quicksort and binary search, which are beneficial for dynamic data in this complex application. With these enhancements, I aim to improve the data structures and algorithms of the Animal Shelter class, thereby boosting the overall performance and value of the system. ADD LINK TO YOU TUBE OF POSTED VIDEO
### _Databases_ Code reviews in databases are an artifact of the Grazioso Salvare Search for Rescue Web Application. This web application was developed as part of the CS340 Client-Server Development course. Leveraging a pre-existing database from animal shelters, the application identifies and classifies available dogs for training in various rescue programs by developing a web interface. The project utilizes MongoDB alongside the Dash framework within the Python application. Integration between MongoDB and Python is achieved through the PyMongo library. Assessments of the web application are performed using Jupyter Notebook. The planned enhancement is to utilize advanced features of MongoDB by setting up indexes on commonly queried attributes such as age, animal ID, type, and color. This will allow the database to efficiently find data quickly instead of scanning the whole table, facilitating considerable horizontal scalability without necessitating changes to the application logic. The data entered the database is not validated, making it vulnerable to security risks, so I plan to implement strict input validation as my second enhancement to the project. In addition, I intend to execute the operations entirely within the database using Aggregation pipelines, eliminating the need for extensive result sets to be transferred over the network. The third improvement I have made to the project is this one. ADD LINK TO YOU TUBE OF POSTED VIDEO