Your Name

Christine Emerson

CS-499 Capstone

View My GitHub Profile

 Welcome to my CS-499 Capstone portfolio! I am deeply passionate about Computer Science, and I am thrilled to present the culmination of my efforts in the form of the Android app, "FitTrack." This project has undergone significant enhancements during the CS-499 Capstone class at Southern New Hampshire University, with a dedicated focus on refining aspects such as software design and engineering, implementing advanced algorithms and data structures, and optimizing database functionality. I invite you to explore the evolution of "FitTrack" through this showcase, highlighting the application of key principles and skills acquired throughout my academic journey.

Professional Self-Assessment

 Reflecting on my transformative journey through the Computer Science program at Southern New Hampshire University, I am compelled to articulate its profound impact on shaping my identity as a proficient and adept computer scientist. This professional self-assessment serves as an introduction to my ePortfolio and stands as a testament to my growth, accomplishments, and readiness to contribute meaningfully to the dynamic field of computer science. I outline the skills I developed throughout my undergraduate studies in the categories aligning with the course outcomes below.

...

Collaborating in a Team Environment:

Course Outcome A: I employed strategies for building collaborative environments that enable diverse audiences to support organizational decision-making in the field of computer science by completing the following enhancements:

 Collaboration has been pivotal throughout my educational journey, notably in participating in the Google UX Design Professional Certificate program. One significant project involved designing an intuitive user interface for a mobile application. This experience went beyond individual design skills, showcasing my ability to seamlessly integrate into a team, harmonize diverse perspectives, and collectively strive towards ambitious design goals.

 This project highlighted the importance of effective teamwork in the UX design process. Collaborative brainstorming sessions, iterative prototyping, and constructive feedback cycles contributed to the successful creation of a user-centered design that addressed the needs and preferences of our target audience. It underscored that the combined effort of a collaborative team is more powerful in achieving innovative and user-friendly design solutions than individual brilliance alone. This project, demonstrating my capacity to work synergistically with diverse talents, aligns with Outcome A, emphasizing collaborative skills in building environments that support decision-making.

 The Google UX Design Professional Certificate program significantly enriched my understanding of user experience principles and honed my ability to collaborate efficiently in a team environment. This collaborative design project serves as a testament to my capacity to work synergistically with diverse talents, a crucial skill in the dynamic field of UX design.

High Fidelity Image High Fidelity Image 1 Low Fidelity Image Low Fidelity Image 1

Communicating to Stakeholders:

Course Outcome B: I designed, developed, and delivered professional-quality oral, written, and visual communications that are coherent, technically sound, and appropriately adapted to specific audiences and contexts by completing the following enhancements:

 Throughout my coursework, I honed the skill of communicating intricate technical concepts to diverse stakeholders, with a standout moment in the CS-255 System Analysis and Design course. Here, I refined my communication skills while developing the DriverPass project, a crucial aspect of the CS-255 course. Effectively communicating with the client, Liam, was paramount to the success of the system design.

 The CS-255 course provided valuable insights into translating complex technical concepts into language accessible to diverse stakeholders while emphasizing the importance of clear and concise communication; the coursework highlighted the need to ensure that design decisions are technically sound and understandable to non-technical stakeholders, such as clients or end-users.

 Applying these learnings to the DriverPass project, I meticulously communicated intricate technical aspects of the system design to Liam, breaking down complex system requirements, design decisions, and potential challenges into easily digestible information. Ensuring that Liam, as a stakeholder, had a comprehensive understanding of the proposed system.

 This experience significantly enhanced my ability to communicate effectively with stakeholders, making me proficient in conveying technical concepts with clarity and precision. As a result, I can navigate discussions with clients, ensuring that their needs are understood and seamlessly incorporated into the system design. This skill is invaluable; collaboration and transparent communication are essential to successful project outcomes. This experience aligns with Outcome B, emphasizing the ability to deliver coherent and technically sound communications adapted to specific audiences and contexts.

 In this course, I learned to translate complex technical details into accessible language, ensuring that my design decisions were sound and understandable to stakeholders. This experience elevated my communication skills, making me adept at conveying technical concepts with clarity and precision.

View my work on GitHub: CS-255-System-Analysis-and-Design

Uml Uml2

Data Structures and Algorithms:

Course Outcome C: I designed and evaluated 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 by completing the following enhancements:

 In my CS-300 course, I undertook a significant project focused on the analysis and design of data structures. The objective was to develop a course planner application for ABC University using C++11 and vectors. This project encompassed creating pseudocode for various data structures, performing runtime analysis, and optimizing operations, aligning with Outcome C.

 The project efficiently managed a dynamic dataset of course information. I formulated pseudocode for each data structure—vectors, binary, and hashtable—and conducted a runtime analysis to determine the optimal choice. The course planner optimized run time for various operations like adding, subtracting, sorting, displaying, reading, parsing, and opening CSV files. This project underscored the importance of selecting appropriate algorithms tailored to the chosen data structure, ensuring optimal functionality.

 The experience gained through the CS-300 project significantly evolved my approach to designing software. Before diving into coding, I recognized the importance of exemplary pseudocode and meticulous project planning. This shift in approach increased project efficiency and eliminated the need for extensive rewrites when dealing with dynamic datasets. The project emphasized the significance of using flexible data structures to handle varying data sizes, allowing the application to adapt seamlessly to changing datasets. This understanding has become integral to my approach, ensuring that my code is efficient, scalable, and adaptable to evolving project requirements. By integrating insights from this project, I highlight my ability to apply theoretical knowledge to real-world projects, showcasing a practical understanding of data structures and algorithms.

View my work on GitHub: CS-300-DSA-Analysis-Design

Software Engineering and Database:

Course Outcome D: I demonstrated an ability to use well-founded and innovative techniques, skills, and tools in computing practices to implement computer solutions that deliver value and accomplish industry-specific goals by completing the following enhancements:

 The synthesis of software engineering and database management reached its pinnacle in the CS-465 Full Stack Development I project, where I led the creation of the Travlr full-stack web application. This project demanded the application of software engineering principles and necessitated the integration of a MongoDB database using MEAN stack technologies.

 This project's front-end development involved creating a customer-facing website using HTML, JavaScript, and Handlebars. This combination facilitated dynamic interaction with the MongoDB backend, providing customers real-time travel information. Additionally, a significant code refactoring effort was undertaken to enhance functionality, introducing innovative approaches such as Handlebars "partials" to streamline development and ensure consistency throughout the application.

 The backend, developed as a single-page application (SPA) using Angular, Express, Node.js, and MongoDB, empowered administrators to log in, manage trips, and synchronize updates with the customer-facing front-end seamlessly. Implementing multi-layer security measures, thorough API testing, and understanding HTTP request methods and endpoints reflected the depth of knowledge and skill applied in this project.

 This project showcased my full-stack development, database management, API development, and problem-solving proficiency. The skills I acquired in creating secure and feature-rich applications have made me a more marketable candidate in web development, aligning with my professional goals. The Travlr project is a testament to my ability to architect comprehensive solutions at the intersection of software engineering and database management. This complete solution applied techniques, skills, and tools to deliver value and accomplish industry-specific software engineering and database management goals, aligning with Outcome D.

View my work on GitHub: CS-465-Full-Stack-Development with MEAN

Logged in Front End

Security:

Course Outcome E: I developed 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 by completing the following enhancements:

 Security considerations have consistently taken precedence in my academic journey throughout the program. The emphasis on addressing potential design flaws, eliminating security vulnerabilities, and ensuring data validation underscored my commitment to fostering a security mindset. This experience fortified my resolve to prioritize data confidentiality and system integrity in every project undertaken.

 An exemplary instance showcasing my commitment to security is my participation in the CS305 - Software Security class. It was not merely hypothetical or academic in this case but a practical application in a real-world context to address design flaws, eliminate vulnerabilities, and ensure robust data validation strategies.

 In my role at Global Rain, collaborating with Artemis Financial, I played a crucial part in enhancing their software security. Modernizing their operations was coupled with the imperative need for the most current and effective software security measures. The task involved protecting Artemis Financial from external threats and ensuring the security of client data and financial information. A significant contribution was adding a file verification step to their web application, enhancing secure communications through checksum data verification.

 My adeptness in identifying vulnerabilities through static testing was a key strength. Recognizing that secure coding is pivotal in preventing data theft and upholding a company's reputation, I focused on integrating industry best practices and solutions. Understanding that software security is an evolving field, I acknowledged the importance of leveraging accepted libraries and dependencies to build on proven solutions.

 A challenging yet beneficial aspect of the vulnerability assessment was the dependency check tool, which significantly saved time by automatically detecting vulnerabilities in dependencies. To increase layers of security, I refactored the code to incorporate HTTPS, prioritizing industry-standard security practices. Post-refactoring involved rerunning the dependency check and conducting manual code reviews and unit testing to ensure the code's functionality and security. Maven tools and continuous research on current practices and algorithms from the Internet were pivotal in this process.

 Adding a file verification step and using the dependency check tool demonstrated a security mindset. This experience aligned with Outcome E, emphasizing the development of a security mindset to anticipate exploits, mitigate flaws, and ensure privacy and enhanced security in software architecture and designs. In showcasing my work to future employers, I will highlight meticulous static testing, effective vulnerability identification and mitigation, and creating a secure HTTP application. These experiences demonstrate my technical skills and emphasize my commitment to robust and secure software development practices.

View my work on GitHub: CS-305-Software-Security

Before After
Image Description

Introduction to Artifacts:

 The artifacts in this e-portfolio, centered around my current capstone project that enhanced my Android app FitTrack, offer a comprehensive glimpse into the breadth and depth of my computer science skills. FitTrack is the focal point, showcasing my proficiency in software design and engineering, my expertise in user experience design, and the strategic implementation of innovative security techniques. The enhancements in algorithms and data structures reveal a depth of understanding of algorithmic principles while optimizing the database, highlighting skills in SQL, data modeling, and performance improvement.

 These artifacts weave together to create a cohesive narrative that provides a holistic view of my capabilities as a computer scientist. FitTrack is not just a project but a testament to my journey through the Computer Science program at Southern New Hampshire University. The forthcoming sections will delve into the technical artifacts, each a masterpiece, that breathes life into the narrative outlined in this self-assessment. Brace yourself for an immersive exploration of FitTrack's architecture, algorithms, and database intricacies. These artifacts are more than mere milestones; they are the pillars supporting the tower of my expertise in computer science. Join me on this expedition through the technical marvels that follow.

All of my enhancements for this course were made to one project, FitTrack. Feel free to view the original code here.

Projects

Milestone 2: Code Review

 Code review is a foundational practice in the software development process. It encompasses the systematic examination and evaluation of code authored by a colleague or team member. There must be at least one person who did not write the code. The primary aim is to ensure the code's quality, reliability, and security before it becomes an integral part of the project. This multifaceted process includes compliance with coding standards, functional assessments, identification of potential security vulnerabilities, and bug detection.

...

 In this dynamic video, I lead a meticulous code review for essential classes within a fitness application, FitTrack, showcasing a steadfast commitment to code quality and best practices in software development. We're not just reviewing the application -- we're securing its reliability, security, and user experience.

 We kick off with the SignUpActivity class, diving deep into existing functionalities and confidently laying out a plan for enhancements. Security takes center stage as I propose implementing bcrypt hashing, introducing password strength validation, and elevating the code's clarity through comprehensive comments.

 Transitioning to the LoginActivity class, we confidently navigate its robust user login functionalities. Pinpointing areas for refinement in code structure, documentation, and user feedback, the planned enhancements aren't just tweaks—they're confident strides toward crafting a login experience that's seamless and user-friendly.

 The BmiCalculatorActivity class, an unsung hero in the fitness application, gets its well-deserved spotlight. Confidently discussing existing features and proposing enhancements, this class becomes more than just functional—it's an opportunity for confident strides in code modularization, meticulous documentation, and a refined user interface.

 WeightRecordActivity, the powerhouse managing weight entry and visualization, undergoes a confident evaluation. Commending its extensive features and proposing enhancements with unwavering assurance for code modularization, UI improvements, and assertive validation and error handling. The goal? To confidently redefine and elevate the user's weight tracking experience.

 Finally, the GoalWeightEntry class, a simple yet effective player in the application, gets its due recognition. I confidently discuss its attributes, getters, and setters and propose minor yet impactful enhancements. In addition, validation, unit testing, and improved error handling become not just suggestions but confident moves toward a more resilient class.

 Throughout this video, my voice resonates with confidence, underlining the importance of code review as a strategic endeavor. It's not just about identifying problems; it's about setting the stage for continuous learning, collaboration, and top-notch software delivery. By including this video and narrative in my portfolio, I project not just competence but confidence—confidence in scrutinizing code intricacies, proposing bold enhancements, and ultimately delivering software that stands out in functionality and quality.

Enhancement One: Software Design and Engineering

Artifact Description

 FitTrack emerged as a comprehensive Android weight-tracking application coded in Java and XML in Android Studio, meticulously developed during the CS 360 Mobile Architect & Programming course, which concluded last term. Its inception was fueled by offering users a seamless platform to track their weight, set goals, and monitor their fitness journey.

Download the ZIP file for Enhancement One: Click here

...

Justification of the Inclusion of FitTrack

 The selection of FitTrack for my ePortfolio is rooted in its embodiment of diverse software development skills. It serves as a canvas illustrating my proficiency in various vital areas. Integrating bcrypt for password hashing reflects a commitment to security, ensuring user data is safeguarded against potential threats. Password strength validation, a feature that was not initially present, was introduced to enhance the application's robustness, encouraging users to adopt strong and secure passwords. Furthermore, the transition from hard-coded strings to string resources represents a step toward improved internationalization and easier maintenance. The crown jewel, however, is incorporating a settings page with a dark mode feature, enriching the user experience and aligning the app with modern design trends.

Course Objectives

 The enhancements made to FitTrack flawlessly align with the outlined course objectives. The meticulous attention to software design principles is evident in the revamped UI, offering a more consistent and engaging user experience. Proficiency in user experience design is showcased through the introduction of the settings page, providing users with customization options like dark mode. These enhancements, coupled with incorporating bcrypt and other security measures, exemplify the strategic use of innovative techniques and tools in computing practices. No updates to outcome-coverage plans are necessary, as the enhancements seamlessly achieved the objectives outlined in Module One.

Outcome A:

Illustrated Skills: Proficiency in software design principles and engineering practices.

Artifact Impact: The revamped UI in FitTrack demonstrates meticulous attention to software design principles, providing users with a more consistent and engaging experience.

Outcome B:

Illustrated Skills: Proficiency in user experience (UX) design.

Artifact Impact: The introduction of the settings page in FitTrack showcases expertise in user-centric design, offering customization options like dark mode and aligning the app with modern design trends.

Outcome C:

Illustrated Skills: Strategic use of innovative techniques and tools in computing practices.

Artifact Impact: Integration of bcrypt for password hashing and other security measures exemplifies the strategic use of innovative techniques to ensure the security and privacy of user data.

Outcome E:

Illustrated Skills: Development of a security mindset.

Artifact Impact: Integrating bcrypt for password hashing and introducing password strength validation contribute to developing a security mindset, ensuring the safeguarding of user accounts and sensitive information.

Reflection of Enhancements

 The journey of enhancing FitTrack was a profound learning experience. Delving into UI/UX design and user-centered principles, I acquired a deeper understanding of creating interfaces that meet functional requirements and elevate the overall user experience. The introduction of bcrypt for password hashing challenged ensuring a balance between security and performance. Overcoming this challenge required careful consideration and thorough testing to guarantee the app's integrity and user satisfaction. Additionally, aligning the UI design across the app demanded meticulous attention to detail, emphasizing the importance of consistency in user interfaces.

Enhancements Created:

1. Security Enhancement: Integrating the bcrypt password hashing algorithm in the SignUpActivity ensures a robust security layer. The application mitigates potential risks associated with unauthorized access by securely storing user passwords in the database. This enhancement reflects a commitment to safeguarding user accounts and sensitive information.

2. String Resources: The transition from hard-coded strings to string resources in SignUpActivity demonstrates a dedication to best practices in Android development. Centralizing and managing string resources contributes to easier localization and maintenance of the application.

3. Password Strength Validation: The SignUpActivity now features password strength validation, setting criteria for a secure password, including considerations for length and a combination of upper- and lower-case letters, numbers, and special characters. This proactive measure aims to enhance the overall security posture of user accounts.

4. Enhanced Comments: All Java class code comments have been refined for improved clarity and maintainability, including header comments in the Java classes. The enhanced comments serve as valuable documentation, aiding in understanding the logic behind each code segment and facilitating collaboration with other developers who may work on the project in the future.

5. Settings Activity for Dark Mode: A SettingsActivity has been introduced to empower users to switch the app to dark mode. This user-centric feature enhances the overall user experience by providing customization options that align with modern design trends and user expectations.

Addressing Challenges and Learning

 A meticulous approach was adopted to address the challenges encountered during the enhancement process of FitTrack, particularly in integrating bcrypt for password hashing. One key challenge was finding the right balance between security and performance. Bcrypt, chosen for its slow and computationally intensive nature, posed potential performance concerns. As a result, extensive testing was conducted to fine-tune bcrypt's configuration parameters to maintain high levels of security and performance.

 The introduction of password strength validation in SignUpActivity presented another challenge, requiring careful consideration of the criteria for a secure password. It involved setting specific password length requirements and combining upper- and lower-case letters, numbers, and special characters. The challenge here was to balance creating stringent criteria for enhanced security and maintaining user-friendliness. The iterative refinement of these criteria and continuous testing allowed for the development a robust yet user-friendly password strength validation system.

 Furthermore, aligning the UI design across the app demanded meticulous attention to detail to develop a consistent and engaging user interface, which required refining the layout, color schemes, and design elements. Ensuring the transition to a modern and cohesive design maintained the application's usability. This process involved iterative testing and feedback gathering to make informed design decisions that resonated with the user base.

Enhancement Two: Algorithm and Data Structures

Artifact Description

 The chosen artifact for this section is FitTrack, an Android weight-tracking application developed in Java and XML using Android Studio during the CS 360 Mobile Architect & Programming course. This project, associated with enhancement two, focuses on optimizing the data sorting algorithm within the FitTrack Android app. Initially utilizing a basic sorting algorithm, I enhanced its efficiency by implementing the Quick Sort algorithm. The objective was to significantly improve the app's overall performance in handling and presenting sorted data.

Download the ZIP file for Enhancement Two: Click here

...

Justify the Inclusion of the Artifact in your ePortfolio

 Incorporating the FitTrack artifact into my ePortfolio aligns with my ambition to excel as a software engineer. It symbolizes my commitment to mastering fundamental algorithms and data structures crucial for robust software development. Implementing the Quick Sort algorithm in FitTrack is a tangible representation of my ability to translate complex algorithmic principles into practical solutions. This artifact demonstrates technical prowess and underscores my dedication to effective communication through expanded comments and improved documentation. It reflects the challenges faced during implementation and the iterative refinement process. Its direct alignment with course outcomes solidifies its place as a comprehensive representation of my evolving capabilities in software engineering.

How was the Artifact Improved?

 The enhancement of the FitTrack artifact involved a fundamental transformation of the data sorting algorithm, transitioning from a basic sorting method to the implementation of the Quick Sort algorithm. This strategic modification significantly elevated the app's efficiency in handling and presenting sorted data.

Impact of Enhancements:

• Time Complexity: The Quick Sort algorithm implemented in FitTrack is O(n log n), where n is the number of weight entries. This time complexity signifies efficient sorting, making the algorithm well-suited for real-time applications.

• Optimization: Optimization involves carefully designing and implementing the Quick Sort algorithm, ensuring a balance between algorithmic efficiency and code readability. This optimization directly contributes to the improved performance of FitTrack in handling large datasets.

  Beyond algorithmic enhancement, a conscientious effort was made to bolster documentation by expanding comments and modularizing the code, prioritizing improved readability. This multifaceted approach showcases technical proficiency in algorithm design and reflects a commitment to effective communication within the codebase. By meticulously addressing algorithmic efficiency, including time complexity and code clarity, the artifact stands as a testament to my evolving capabilities in software engineering, fulfilling course objectives related to algorithmic principles, computing techniques, and professional communication.

Did You Meet the Course Objectives in Module One?

 The introduction of the Quick Sort algorithm fulfills the goal of addressing algorithmic efficiency, including time complexity, and the added emphasis on documentation code modularization aligns with the overall objective of enhancing computing practices. The enhancements in this module align with the course objectives in module one as follows:

•  Outcome C: Design and Evaluate Computing Solutions that Use Algorithmic Principles: Quick Sort is an algorithm for sorting data, and its implementation requires a deep understanding of algorithmic principles, involving designing the sorting solution and evaluating its efficiency.

•  Outcome D: Demonstrate an Ability to Use Techniques, Skills, and Tools in Computing Practices: Implementing Quick Sort involves applying various programming techniques, utilizing skills in algorithm design, and using programming tools effectively. Understanding the details of the algorithm and employing programming skills to translate the algorithm into a functional program is necessary.

•  Outcome B: Design, Develop, and Deliver Professional-Quality Oral, Written, and Visual Communications: While not explicitly used in the Quick Sort implementation, effective communication is crucial in a collaborative coding environment, including writing clear and concise comments in the code and creating documentation.

How the Quick Sort Algorithm Was Implemented

 In the WeightEntryDatabaseHelper class, the Quick Sort algorithm was implemented to optimize data sorting within the FitTrack Android app. Below is a detailed breakdown of how the Quick Sort algorithm was integrated into the existing codebase:

1. Before Sorting:

 • The original list of weight entries was logged using Log.d("SortDebug", "Before sorting: " + weightEntries).

2. Quick Sort Invocation:

  • The Quick Sort algorithm was invoked using the nested class WeightEntrySorter.quickSort(weightEntries).

3. After Sorting:

 • The sorted list of weight entries was logged post-Quick Sort for verification using Log.d("SortDebug", "After sorting: " + weightEntries);.

Implementation of the Quick Sort Algorithm

 The Quick Sort algorithm was encapsulated within the nested class WeightEntrySorter to ensure modularity and maintainability. Key components of the Quick Sort algorithm include:

 • quickSort Method:

   o Recursively divides and conquers the list of weight entries.

   o Utilizes the partition method for selecting a pivot and rearranging elements.

 • partition Method:

   o Determines the pivot element and partitions the list accordingly.

   o Employs a swap mechanism to rearrange elements around the pivot.

 • swap Method:

   o Facilitates the swapping of elements in the list.

•  compareDates Method:

   o Enables the comparison of dates for sorting weight entries in ascending order.

Documentation Enhancement:

•  Approach:

   o Expanded comments and improved code documentation.

 • Objective:

   o The aim was to provide comprehensive and clear explanations within the codebase to facilitate understanding for current and future developers.

 • Importance:

   o Enhanced documentation improves code readability, maintenance, and collaboration among developers.

Code Modularization:

 • Approach:

   o Broke down the code into smaller, more focused methods or classes.

 • Objective:

   o The goal was to enhance code readability and maintainability by organizing it into logical, manageable components.

 • Importance:

   o Code modularization simplifies troubleshooting, debugging, and future enhancements, adhering to best practices for efficient software development.

Reflecting on the Process of Enhancing the Artifact

 Reflecting on enhancing the FitTrack artifact in the context of algorithms and data structures offered a profound learning experience. Initially, the focus was on analyzing the data sorting mechanism within the FitTrack Android app. Transitioning from a basic sorting algorithm to the Quick Sort algorithm marked a critical improvement, demanding a meticulous balance between algorithmic efficiency, including time complexity and code readability. The iterative testing and refinement process provided valuable insights into optimizing speed while maintaining clear and understandable code. Strategically placed debugging statements throughout the Quick Sort algorithm facilitated the identification and resolution of challenges, highlighting the importance of systematic troubleshooting. This experience deepened my understanding of algorithmic principles, including time complexity, and honed my ability to navigate the complex landscape of algorithm implementation in real-world applications.

What I Learned as I Was Creating and Improving FitTrack

 Throughout the creation and improvement of the artifact, I learned the critical importance of balancing algorithmic performance, including time complexity, with code clarity. The Quick Sort implementation demanded a deeper understanding of algorithmic principles, pushing me to refine my algorithm design and analysis skills. Additionally, the emphasis on documentation taught me the significance of clear communication in a collaborative coding environment.

Challenges Faced and How They Were Overcome

 The implementation process presented challenges, primarily centered around optimizing for speed while maintaining code readability. These challenges were overcome through iterative testing and the Quick Sort implementation refinement. Clear and concise comments were added to enhance readability, ensuring the final algorithm met efficiency, time complexity, and comprehensibility standards. The process underscored the delicate balance between algorithmic efficiency and code clarity, providing valuable insights into effective algorithm implementation in real-world applications. As a solution to these challenges, debugging statements were strategically placed throughout the Quick Sort algorithm to log the state of the list before and after sorting. This meticulous approach facilitated identifying and resolving any issues during the implementation.

Enhancement Three: Database

Artifact Description

 The artifact chosen for enhancement in the databases category is FitTrack, a critical component developed during the CS 360 course last term. This database plays a pivotal role in storing user information, weight records, and goal weights, facilitating efficient data retrieval and management for users of the FitTrack application.

Download the ZIP file for Enhancement Three: Click here

...

Justification for Inclusion

 The decision to include the FitTrack SQLite Database in my ePortfolio is rooted in its significance in supporting the FitTrack application's functionality. The database showcases my SQL, data modeling, and performance improvement skills. The enhancements align with the overarching outcomes of the computer science program, specifically Outcome D, which emphasizes the ability to use innovative techniques, skills, and tools in computing practices. Furthermore, integrating data mining within the Android app demonstrates a commitment to Outcome E, developing a security mindset and ensuring data and resources' privacy and enhanced security.

Enhancements and Their Impact

WeightEntryDatabaseHelper Class:

1. Index Creation:

 • Original Code: Lacked explicit index creation for COLUMN_DATE.

 • Enhancement: Introduced a new line of code to create an index on COLUMN_DATE, optimizing queries involving date-based sorting or filtering.

2. Cursor Handling:

 • Original Code: Used @SuppressLint("Range") annotations without explicit checks for valid column indices.

 • Enhancement: Checks have been added to ensure valid column indices, enhancing code robustness and preventing potential issues.

3. Cursor Closing:

 • Original Code: Cursor.close() was used outside of a try-catch block.

 • Enhancement: I added a try-with-resources statement to ensure cursors are adequately closed, improving resource management and reducing leak risk.

4. Logging and Exception Handling:

 • Original Code: Used Log.d for logging and caught general exceptions without specific handling.

 • Enhancement: Maintained Log.d for logging and introduced more specific exception handling, providing better insights into potential issues during database operations.

 Collectively, these enhancements improve code robustness, address potential issues, and enhance resource management and logging for better overall maintainability.

DatabaseHelper.java Class:

1. Indexed Username Column:

 • Enhancement: An index was added to the username column for faster username-based queries.

 • Explanation: Indexing the username column significantly improves the speed of operations involving username-based searches.

2. Prepared Statement for Update:

 • Enhancement: Used a prepared statement for the update operation in the addUserPhoneNumber method.

 • Explanation: Prepared statements are more efficient and prevent SQL injection, contributing to code efficiency and security.

3. Try-With-Resources for Cursors:

 • Enhancement: Management of Cursor instances was done via try-with-resources.

 • Explanation: Try-with-resources ensures cleaner and safer resource handling, automatically closing the cursor after the block finishes.

 These modifications aim to optimize SQL queries, simplify code, and enhance database performance and data retrieval efficiency in the FitTrack Android application.

GoalWeightDatabaseHelper Class:

The modifications made to the GoalWeightDatabaseHelper class aim to enhance the database by optimizing SQL queries for better performance and data retrieval efficiency. Key improvements include:

1. Constructor and Database Name:

 • Original: A separate static constant was used for the database name.

 • Modified: Removed the separate constant, specifying the database name directly in the constructor for conciseness.

2. Query Optimization in getMostRecentGoalWeightEntry and getAllGoalWeightEntries:

 • Original: Used a standard query without try-with-resources.

 • Modified: Utilized try-with-resources for automatic Cursor closing, improving resource management.

3. Column Index Validation:

 • Original: Accessed columns without explicit validation of column indices.

 • Modified: Explicit validation for column indices was introduced, ensuring their validity before retrieving data.

4. Minor Code Cleanup:

 • Original: Used unnecessary @SuppressLint annotation.

 • Modified: Removed the annotation and directly used validated column index for improved readability.

 These modifications improve code readability, resource management, and code robustness by validating column indices before use.

Reflection on the Enhancement Process:

 The enhancement process was smooth, and no significant issues were encountered. The thoughtful consideration of the original code's shortcomings and the incorporation of best practices were integral to the modification process. Insights gained during the enhancements include:

 • The importance of index creation for optimizing query performance.

 • The significance of explicit validation for column indices.

 • The benefits of using try-with-resources for effective resource management.

Iterative dialogues with the instructor, initiated in Module One, played a crucial role in refining the enhancement plan and ensuring a seamless integration of improvements without compromising existing functionality.

Meeting Course Objectives:

 The enhancements made align with the course objectives outlined in Module One, specifically in the following aspects:

1. Outcome D:

 • Illustrated Skills: The skills demonstrated are SQL database optimization, data modeling, and database performance improvement.

 • Artifact Impact: The enhancements showcase proficiency in using innovative techniques and tools in computing practices to deliver value, as evidenced by the optimized SQL queries and improved database performance.

2. Outcome E:

 • Illustrated Skills: Development of a security mindset and ensuring privacy and enhanced security of data and resources.

 • Artifact Impact: While not directly addressing security concerns, the enhancements contribute to overall code robustness and reliability, indirectly aligning to maintain data privacy and security.

What I Learned:

 Enhancing and modifying the FitTrack SQLite Database provided valuable insights into various database management and software development aspects. Here's a deeper exploration of the key learnings:

1. Optimizing Query Performance through Indexing:

 • Lesson: The strategic creation of indexes is pivotal for optimizing query performance.

 • Insight: I learned that introducing an index on the COLUMN_DATE in the WeightEntryDatabaseHelper class could significantly enhance the efficiency of date-based queries. This experience underscored the importance of understanding the specific data access patterns to make informed decisions on where to implement indexes.

2. Validation for Code Robustness:

 • Lesson: Explicit validation of column indices is crucial for code robustness.

 • Insight: While working on cursor handling in the same class, I realized the potential risks associated with assuming the validity of column indices. By incorporating checks for valid indices, I enhanced the code's robustness and gained a deeper appreciation for defensive programming practices. This experience emphasized the importance of anticipating and addressing potential issues proactively.

3. Effective Resource Management with try-with-resources:

 • Lesson: Utilizing try-with-resources improves resource management.

 • Insight: Introducing try-with-resources in various sections, particularly in the Cursor Closing enhancement, taught me about the cleaner and safer handling of resources. This practice contributes to more readable and concise code and ensures that resources like cursors are appropriately closed, reducing the risk of memory leaks. It reinforced the significance of adopting modern language features to enhance code quality and reliability.

4. Iterative Refinement through Instructor Dialogues:

 • Lesson: Iterative discussions with the instructor refine enhancement plans.

 • Insight: As initiated in Module One, engaging in an ongoing dialogue with the instructor played a pivotal role in overcoming challenges and refining the enhancement plan. This iterative process improved the quality of the enhancements and highlighted the collaborative nature of software development. It underscored the importance of seeking feedback and continuously refining solutions for optimal outcomes.

5. Balancing Optimization with Existing Functionality:

 • Lesson: Balancing enhancements with existing functionality requires careful consideration.

 • Insight: As I worked on refining the artifact, I encountered the challenge of ensuring that the introduced enhancements seamlessly integrated with the existing codebase. This process demanded a delicate balance between optimization and preserving the app's core functionality. It taught me the importance of thorough testing and validation to ensure that improvements do not inadvertently introduce new issues.

  The learning experience from enhancing the FitTrack SQLite Database went beyond technical skills. It encompassed a deeper understanding of the strategic decision-making involved in software optimization, the significance of robust coding practices, and the collaborative nature of refining solutions through ongoing dialogue and testing. These lessons contribute to the specific artifact and my broader growth as a proficient and mindful software developer.

FitTrack Photo Gallery

Contact Information

Phone Icon

Phone: 603-703-9789