Professional Self-Assessment

Hi, my name is Steven Armenta, and I am currently pursuing my Bachelor of Science in Computer Science at Southern New Hampshire University. I am currently completing my final course and this ePortfolio serves as a capstone of my academic journey here at SNHU, showcasing my growth, achievements, and skills in solving real-world problems through innovative solutions. I want to thank SNHU’s Computer Science program for providing me hands-on experience throughout my education specifically in software design and engineering, algorithms and data structures, and databases. The program also provided me the tools to develop high quality software. The experiences I have gone through have prepared me to make a meaningful impact in the tech industry.

My journey at SNHU has taught me so much in shaping my technical and professional skills. The CS program has also provided me with a solid foundation in software development and has empowered me to design, implement, and enhance practical solutions that align with industry standards. I learned to develop meaningful code in many different environments and languages such as Visual Studio with OpenGL/C++ for creating a 3D scene, Android Studio with Java for building a mobile Inventory application, and Jupyter Notebook with Python for creating an Animal Shelter dashboard. I have learned how to create a Full Stack website with MEAN stack for a travel website using four technologies MongoDB, Express, Angular, and Node. Outside technical expertise, the program has prioritized teamwork, communication, and security, ensuring I am prepared for collaboration and professional development environments.

The artifacts I’ve included in this ePortfolio demonstrate my ability to develop, design, and enhance solutions in three major critical areas of computer science: Software Design and Engineering, Algorithms and Data Structures, and Databases. Each project artifact showcases my technical proficiency and my dedication to creating user-friendly, efficient, and secure applications that align with industry standards.

Course Outcome 1: Employ strategies for building collaborative environments

I met this outcome by fostering collaboration and engaging with peers and stakeholders throughout my projects and discussion boards. I have also applied feedback from my professor in this Capstone course to enhance my application further. Also, my newly enhanced artifacts have several code comments that I have rewritten and iterated so it could provide seamless collaboration in the future with development teams. The enhanced applications' design I have generated allow for collaborative data entry and usage for users, making them accessible to work teams of varying technical expertise. My experience conducting code reviews of the three artifacts and working on team projects helped me understand the importance of collaboration in creating high-quality solutions that align with organizational goals.

Course Outcome 2: Design, develop, and deliver professional-quality oral, written, and visual communications

I achieved this outcome by ensuring clear and professional communication in every aspect of my work throughout my program and with these application artifacts. Each artifact is accompanied by detailed documentation, code comments and narratives that explain the rationale behind enhancements, making the projects comprehensible to technical and non-technical audiences alike. I have conducted a professional code review of the artifact before the enhancements and the narratives after the enhancement in a manner that is understandable for stakeholders, developers and users. These efforts demonstrate my ability to deliver professional-quality communications tailored to diverse audiences and contexts.

Course Outcome 3: 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

I met this outcome by designing and evaluating efficient computing solutions in my algorithms and data structures artifact two. Enhancements such as binary search trees, sorting algorithms, and performance optimizations addressed specific user needs within the Inventory Tracker application while balancing trade-offs in complexity and performance. Furthermore, a search function was applied to the new iOS application as the initial Android application did not have that design and the new application uses computing solutions such as binary trees. These updates demonstrate my ability to apply algorithmic principles to develop practical and scalable solutions.

Course Outcome 4: 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

I fulfilled this outcome through the advanced tools and techniques utilization across all three artifacts. By leveraging modern development frameworks and migrating applications to newer platforms such as in artifact one and two migrating from Android and Java to Xcode and Swift, I developed secure and dynamic applications that showcase my ability to adopt innovative technologies to create impactful and industry-relevant solutions. In my third artifact, I enhanced the application's database by implementing asynchronous database functionality, a manual refresh button with timestamps, dynamic record counts, and successfully migrated the system from an inaccessible virtual machine environment to a local environment.

Course Outcome 5: Develop a security mindset that anticipates adversarial exploits in software architecture and designs

I met this outcome by implementing security-focused enhancements in my projects, particularly through input validation, authentication mechanisms, and secure coding practices. In Artifact one and two in my iOS Inventory Tracker I designed functionality to allow users to create accounts and validation so no two usernames are the same therefore providing security to users’ information. In my third artifact I moved the application from an inaccessible unsecure environment to a locally hosted enviornment users can access. Furthermore, I incorporated measures to prevent vulnerabilities and tested these security features thoroughly to ensure the protection of user data. These efforts reflect my commitment to designing secure systems that prioritize privacy and data integrity.

Code Review

Professional Code Review

This code review involves quality assurance on my artifacts by reviewing their source code and output. Code Reviews are highly important to the success of computer science professionals, since it ensures a level of consistency in the development of a project and allows for a higher level of coding standards to be met. Below is my Code Review of my Artifacts.

Enhancement One: Software Design and Engineering

iOS Inventory Management Application

Narrative

The first artifact I have included in my ePortfolio is a mobile inventory management application. I originally developed the Android version in Android Studio using Java in a Mobile applications course at Southern New Hampshire University. I redesigned the application for iOS using SwiftUI and Xcode as part of my Capstone course. This updated version reflects my continued effort to deepen my understanding of full-stack development.

I chose to include this artifact because it demonstrated my foundational and growing skills as a Software Developer. This artifact showcases my ability to design user interfaces for different mobile applications. The component of the artifact that showcases my skills and abilities is being able to enhance the original Android Studio application into a fully functional iOS app I pushed myself past my comfort zone, and used new tools like Xcode, Swift language syntax and Apple’s declarative framework. This enhancement improves the application by offering the application on another platform which is iOS.

In Module One, I planned to meet the outcomes one, two and three: Employ strategies for building collaborative environments that enable diverse audiences to support organizational decision making in the field of computer science, Design, develop, and deliver professional-quality oral, written, and visual communications that are coherent, technically sound, and appropriately adapted to specific audiences and contexts, and 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. To meet course outcome three more clearly, I will also try to meet this course outcome with my second enhancement updating the applications algorithms for adding an item. I learned so much enhancing and modifying this artifact and I learned to make more time for these enhancements because it took longer than anticipated for specific steps. I learned that it is possible to learn new languages like Swift and how to use Git version control to make sure my changes are updated on different machines I use. I am still learning how to use Xcode and that is a challenge I face being able to understand where all the features are at in that environment and getting the emulator to work properly. Overall, I will continue improving and enhancing my artifact so that it runs successfully and I am able to list it on the app store.

Through this enhancement, I demonstrated the ability to use well-founded software engineering techniques to create maintainable and efficient applications. The implementation of a new iOS application from an originally Android application and the application of features such as input validation, and user authentication showcases my commitment to developing secure applications. The enhanced user interface and user experience design reflects my ability to create user-centered solutions that align with industry standards.

Before and After Screenshots

Original Android Inventory Tracker Application

Original Android Inventory Application

Basic inventory interface

Enhanced iOS Inventory Tracker App Demo

Enhanced iOS Inventory Application Demo

Improved UI with advanced features

Original Artifact 1 Code

Before Database and Algorithms Code

Original code layout and logic

Enhanced Artifact 1 Swift Code

artifact 1 Code

Refactored code with improvements

Enhancement Two: Algorithms and Data Structures

iOS Inventory Management with Advanced Algorithms

Narrative

Artifact two for the algorithms and data structures category is my enhanced inventory management application, which I migrated from Android to iOS/Swift while implementing sophisticated algorithms and data structures. This transformation demonstrates my ability to work across different platforms and apply advanced computer science concepts to improve application performance and functionality.

As part of my second enhancement project, I significantly improved the application by integrating a Binary Search Tree (BST) for efficient item look-up by ID and implemented algorithmic principles to optimize the programs search performance. The original application did not have search features as it only displayed the inventory items as a list, but I enhanced the project by creating a search function using BST which would be faster than a linear search.

This artifact was selected for my ePortfolio because it demonstrated my ability to apply key Computer Science principles like data structures and algorithm optimization in a real-world scenario. The integration of BST specifically showcases my ability to go beyond default Swift UI features and use fundamental algorithms to improve application performance. The app’s filtering and search capabilities previously were not existent but would be linear if created and these were enhanced to logarithmic time complexity (O (log n)) through BST search while a HashMap structure supports constant-time (O (1)) access. These features reflect my understanding of both theoretical and applied aspects of data structures.

The course outcomes I planned to target were course outcomes three: 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 and the fourth course outcome: demonstrate an ability to use well-founded and innovative techniques, skills, and tools in computing practices for the purpose of implementing computer solutions that deliver value and accomplish industry-specific goals. This second enhancement fulfills those objects by showing how a BST can manage large volumes of inventory data more effectively.

The process of enhancing this artifact was deeply educational and I learned so much about BST search and HashMaps. I learned how to design a binary search tree in Swift manage its nodes and integrate it with Swift IO components for dynamic search results. One of the biggest challenges I faced was keeping the UI responsive while implementing the underlying tree-based data structure. Swift UI doesn’t natively support complex structures like BSTs, so I had to write the logic manually which strengthened my skills in algorithm design and object-oriented programming. I learned how to bridge the gap of applying what I do know and learning a new skill as a Developer such as learning on the job and learning how to complete the BST search as I did not have a strong grasp of the concept before, but I was able to learn and apply this to my artifact. The challenges I face are ensuring this artifact and IOS application works on the different iPhone models and testing my application with Xcode emulator or with my physical phone as I have not had a chance to ensure the program functions as expected. My plan to overcome these challenges is to make sure I spend time these next few weeks to test and improve my IOS application using precise iterations to ensure the application functions as expected.

Before and After Screenshots

Original List Android Inventory Application

Original Android Inventory Application

Basic inventory interface

Enhanced BST iOS App Demo

Enhanced iOS Inventory Application Demo

Improved UI with advanced search and sort features

Original Artifact 2 Code

Before Artifact 1 Code

Original code layout and logic

Enhanced BST Class Artifact 2 Code

After Artifact 1 Code

BST implentation code with improvements

Enhancement Three: Databases

Animal Shelter Application with Advanced Database Integration

Narrative

The third artifact I have enhanced for my eportfolio is an interactive web-based dashboard that was built using dash for monitoring and analyzing animal shelter data stored in a MongoDB database for a client/server course I have taken at Southern New Hampshire University. I enhanced this artifact by supporting auto-refresh functionality so the database and dashboard is always updated with the latest information in the database and improves data interaction without requiring page reloads. I have also included a Pie chart for data visualization. The final version of the artifact includes dynamic updates, a new manual refresh button that has now been added with time stamp listed for verification of the latest information displayed, an enhanced pie chart for data visualization and improved user experience with updates like record counts.

I included this artifact as part of my ePortfolio because it best demonstrates my ability to develop a complete user-friendly software application that integrates frontend and backend components. The dashboard showcases several skills like web development using Dash, asynchronous data handling, real-time data visualization with Plotly and database integration with MongoDB. The enhancement specifically added updates to the dashboard every 30 seconds, a manual refresh button, visual indicators like current record counts, and latest update timestamps. I have also updated the Pie chart data visualization for a more insightful breed distribution visual. These enhancements made the dashboard more robust, user-friendly, and aligned with modern data dashboard expectations.

I met the course outcomes I planned to meet with this enhancement in Module One which were outcomes two, four and five. I’ve met the fifth course outcome by developing a security mindset that anticipates adversarial exploits in software architecture and designs to expose potential vulnerabilities mitigate flaws, and ensure privacy and enhanced security of data and resources by creating a database for a company that has transparency of the records kept and also ensure privacy by hosting this web application away know from the SNHU apporto virtual machine to the user’s local machine. I plan to add more coverage for the courser outcomes by ensuring each of my artifact covers two or three course outcomes to ensure that each of the outcomes are met.

Reflecting on my enhancement project I learned about managing asynchronous updates and state persistence in web applications. I learned about Dash’s callback system enabling real-time interactions and how to coordinate multiple parts of code together. I also learned how to create this web application for myself as I lost access to the original database and website due to that virtual machine being removed from me because I finished that class, I had to change everything to get it to work in my local machine. I learned how to install MongoDB, get the server working, install Jupyter Notebook and how to load the CSV file data to populate the database with command prompt and to continue iterate till the application runs as expected. Overall, I am happy with how this enhancement turned out and I learned so many lessons along the way.

Before and After Screenshots

Original Animal Shelter Dashboard

Original artifact 3

Basic Apporto interface

Enhanced Animal Shelter Dashboard Application

Enhanced Animal Shelter Application

Improved with advanced Database features

Original Artifact 3 Animal Shelter Code

Before Artifact 3 Code

Original code in Apporto virtual environment

Enhanced Artifact 3 Enhancment Code

After Artifact 3 Code

Enhanced code with real-time data handling

Contact

If you would like to connect, collaborate, or learn more about my work, please feel free to reach out using the links below: