Dan Bailey - CS499 ePortfolio

Overview

This portfolio highlights work from my computer science program. It focuses on improving past projects and explains what I changed, why I made those changes, and what I learned from the process.

Professional Self-Assessment

Throughout my computer science program, I have developed a range of technical and professional skills that gave me a solid starting point going into the field. Working through the program and completing my capstone project helped me connect ideas across different courses and apply them in more complete, practical projects. Creating this ePortfolio helped me organize my work in a way that demonstrates my abilities and progress over time.

One of the most important skills I developed during this program was working within structured development environments and work through different types of projects. I placed a lot of focus on communication, documentation, and designing solutions that could be understood by others. In many of my courses, projects involved working with code that already existed and modifying and improving it. This helped me get better at reading through unfamiliar code and making changes without introducing new issues. It also pushed me to clearly explain what I changed and why. Over time, I became more confident working within existing codebases instead of relying only on writing everything from scratch.

On that note, I also spent a lot of time working on how to explain technical ideas clearly. In my courses, I worked on several assignments that required translating technical requirements into understandable descriptions. This included writing documentation, creating diagrams, and explaining design decisions in a way that non technical users could understand. These assignments helped me learn to adjust the way I communicate based on the audience, which is an important skill when working with clients or other team members who may not have a technical background.

My understanding of data structures and algorithms improved significantly throughout the program, especially during my work on the OpenGL project used in this portfolio. Initially, the project relied on a simple structure for storing and rendering objects, which worked but was not efficient or scalable. Through the enhancement process, I applied more structured approaches by organizing objects into groups using a map based system. This allowed for more efficient access and better organization of data. Working through this improvement helped me better understand how the choice of data structure impacts performance and scalability.

I also gained a lot of experience in various software engineering practices, including modular design, debugging, and iterative development. In my OpenGL project for this portfolio, I refactored large sections of code into smaller, more manageable functions and then implemented a centralized object management system. This process reinforced the importance of writing organized code that can be added to over time. Similarly, in my database project, I applied software engineering principles to improve both functionality and usability. I added validation to prevent duplicate records, added safety nets to prevent deleting data unintentionally, and made an interface from scratch to make it easier to interact with the data. These improvements helped me understand how design decisions can make a program more reliable and user friendly.

Database development was another key area of growth. Through my work with MongoDB, I learned how to design and implement CRUD operations, manage data effectively, and connect a database to an application. The original version of my project focused on basic database interactions, but the enhanced version expanded on this by integrating a graphical interface and improving how users interact with the system. This demonstrated my ability to take a basic backend system and evolve it into a complete application.

Security considerations were also introduced throughout the program, especially in areas involving data handling and user input. Although my projects were not large scale production systems, I still learned how to apply important security practices like user authentication, validating user input, preventing duplicate or invalid data, and adding confirmation steps before performing important actions like deleting data. This made me more aware of how seemingly small decisions can affect how safe and reliable a program is.

The artifacts included in this ePortfolio represent different aspects of my development as a computer science student. The software design artifact shows my ability to improve code structure and organization. The algorithms and data structures artifact demonstrates my understanding of how data organization is critical to performance and scalability. The database artifact highlights my experience working with data management and improving user interaction with a system. Together, these artifacts show a progression from focusing just on basic functionality to thinking about how everything fits together in terms of software design.

Overall, completing this program and developing my ePortfolio has helped me better understand both the technical and professional expectations of a career in computer science. I have learned how to approach problems more systematically, write clearer and more organized code, and think more carefully about how users will interact with the systems I build. These experiences have helped shape my professional goals and given me confidence that I am prepared to continue developing my skills in a real world environment.

Download Word Version

Code Review

This video shows my review of the original project and the areas I identified for improvement.

Watch Code Review Video

Software Design and Engineering

This artifact is based on my OpenGL desk scene from CS 330. The original version of the project worked, but much of the rendering logic was placed in one large function with a lot of repeated code. In the first round of enhancements, I broke that logic into smaller helper functions to make the code easier to read and maintain. In the final version, I expanded that work by building a more centralized object management system so scene objects could be defined and rendered in a more organized and scalable way.

View Original Version

View Enhanced Version

View Final Narrative

Algorithms and Data Structures

This artifact builds on the same OpenGL project, but focuses more on how scene data is organized and processed. The earlier version stored all objects in a single list and handled rendering in a more direct way. During the enhancement process, I introduced a more structured way of defining objects and then expanded that into a grouping system using a map. The final version allows objects to be organized by category and accessed more efficiently when rendering different parts of the scene.

View Original Version

View Enhanced Version

View Final Narrative

Databases

This artifact is based on my MongoDB CRUD project from CS 340. The original version focused on basic database operations and was tested more directly without a graphical user interface. In the first stage of enhancement, I began adapting the project into a more interactive application. In the final version, I added a GUI along with several improvements such as duplicate prevention during record creation, confirmation before deleting records, and a toggle for collapsed and expanded views of the data. These changes made the program easier to use and more reliable overall.

View Original Version

View Enhanced Version

View Final Narrative

Supporting Documents

This section includes both the original drafts and final versions of my enhancement narratives. These explain how the projects changed throughout the enhancement process.

Software Design

Final Narrative

Original Draft

Algorithms and Data Structures

Final Narrative

Original Draft

Databases

Final Narrative

Original Draft

View All Documents