Categories
Uncategorized

Blog Post #3 – Capstone Project, Winter 2024: Successes and SWOT

My Journey to Success: Deep Dives and Innovative Solutions

My capstone group and I were tasked with a challenging project: creating a client-side React application for visualizing fire/EMS data. The path to what I consider my greatest success in this course was both demanding and enlightening. It involved an intensive review of inherited code, meticulous analysis of project documentation, and thorough preliminary research to sharpen my JavaScript and React skills, alongside exploring potentially relevant React libraries.

Embracing the Deep Dive

Choosing to thoroughly understand the existing codebase and documentation was a decision that demanded not just time, but a commitment to understand the foundation of how the client was designed to interact with a server currently under development and the broader objectives of our project. This approach went beyond the surface level, delving into the intricacies of our project’s architecture and uncovering the potential for innovation within our application.

The Clarity and Direction Gained

This comprehensive exploration proved to be essential to our development process. It allowed us to accurately define the project’s scope with clarity and detail. It marked a turning point for my team and me, enabling us to outline clear, incremental tasks that kept us on track and focused throughout the development process. Crucially, it laid a solid groundwork for our strategic planning, aligning our actions more closely with the project sponsors’ goals.

Innovating and Strengthening Team Dynamics

With a more complete understanding of the project’s foundation and available solutions to project objectives, we planned to incorporate React libraries and state management strategies that were new to all members of the group. This endeavor not only enhanced the application’s functionality and user experience but also fostered an environment of creativity and experimentation within our team. It illuminated the power of deep research and its capacity to drive innovative solutions.

Improving Communication and Fostering Collaboration

One of the most significant outcomes of this in-depth exploration was its impact on our team dynamics and our interactions with project sponsors. The insights we gained empowered us to ask more informed questions, enhancing our communication with sponsors and promoting a more collaborative and effective partnership. It also strengthened our team’s cohesion, as we all worked around a unified vision and understanding of our project’s objectives.

Capstone Project Course SWOT Analysis

Strengths:

  • Real-World Collaboration and Project Management: The opportunity to work alongside a real-world team of developers on a relevant and interesting project has been a highlight of my learning experience in the program. Engaging in weekly sprints and meetings with both my team and our sponsors allowed me to immerse myself in a professional environment, simulating real-world software development practices. This structure honed my technical skills and significantly enhanced my soft skills, such as communication and teamwork.
  • Learning and Growth: The dynamic nature of the project, coupled with the challenge it presented, pushed me to continually adapt and learn on the fly. This has been an incredible opportunity to test and expand my knowledge
  • Accountability Checks: The check-in system offered an effective mechanism for accountability. These regular touchpoints ensured that all team members remained aligned on project goals and progress.

Weaknesses:

  • NDA Limitations: One challenge I encountered was the difficulty in discussing project specifics due to the Non-Disclosure Agreement (NDA) we signed. While necessary for protecting proprietary information, it sometimes hindered open discussion and learning from broader community insights. However, accommodations and guidance were provided to navigate this constraint.
  • Career Support and Interview Preparation: As one of the final courses in the program, more emphasis on career support and interview preparation would be invaluable. Given the competitive nature of the job market, additional resources and training in these areas could enhance the program’s value and student outcomes.

Opportunities:

  • Expansion of Sponsored Projects: Increasing the number of sponsored projects within the course could enhance the learning experience for students. My experience with a sponsored project was a massive part of my learning and growth; offering more students similar opportunities could elevate the course’s impact and relevance.

Threats:

  • Project Scope Management: A potential threat to the course’s effectiveness is the risk of projects having scopes that exceed what is feasible for students to manage without extensive guidance. Ensuring that projects are ambitious yet achievable, with appropriate support, is crucial to prevent overwhelm and ensure meaningful learning experiences.
Categories
Uncategorized

Blog Post #2 – Using AI as Programming Resource

As a computer science student and aspiring programmer, my exploration of Artificial Intelligence (AI) in programming has been both enlightening and transformative. In this post, I discuss how AI, particularly tools like ChatGPT, have become useful in my personal projects, serving as a brainstorming partner, problem solver, and an educational guide.

AI as a Brainstorming and Problem-Solving Tool:

In the realm of my personal projects, AI has primarily functioned as a brainstorming and troubleshooting resource. It acts like a Wikipedia of programming, offering a broad spectrum of ideas, tools, and libraries that can be used to tackle various challenges. This aspect has been particularly beneficial when starting new projects or when I find myself at a dead end.

The problem-solving capabilities of AI come into play when I encounter complex challenges. Here, AI serves as a lubricator, easing the path to discovering new approaches and perspectives I might not have considered. This has often led to breakthroughs and innovative solutions in my projects.

AI for Learning New Programming Concepts:

As a relative neophyte in programming, I’ve found AI, especially ChatGPT, to be an excellent learning resource. It provides detailed explanations and examples of programming concepts, making complex ideas more accessible. The real-time interaction and feedback have been instrumental in reinforcing my learning, helping bridge knowledge gaps and enhancing my overall understanding.

Pros and Cons of Using AI in Programming:

Pros:

  • Rich Information Source: AI is a vast repository of information, offering insights into a multitude of programming problems and their solutions.
  • Boilerplate Code Generation: It is proficient in generating basic code structures, serving as a great starting point for more complex development.
  • Diverse Perspectives: AI provides unique viewpoints and methodologies, essential for creative and efficient problem-solving.

Cons:

  • Specificity of Prompts: To extract relevant information, AI requires well-crafted prompts, necessitating a foundational understanding of the problem.
  • Surface-Level Understanding: AI may lack in-depth comprehension of intricate issues, their scope, and finer details.
  • Need for Critical Analysis: It’s imperative to approach AI suggestions with scrutiny, using personal judgment to discern between useful and irrelevant or false information.

Impact on My Programming Skills:

Using AI has positively impacted my programming skills. It has fostered a deeper understanding of coding concepts and improved my ability to articulate and comprehend programming challenges. However, it’s crucial to use AI judiciously to avoid over-reliance and ensure the development of independent problem-solving skills.

Privacy Considerations:

An important aspect to consider while using AI tools is privacy. The information input into these systems can become part of their learning database, raising concerns about the confidentiality and security of the data shared. This is a critical consideration, especially in sensitive or proprietary projects.

Conclusion:

In conclusion, AI as a programming resource offers a unique blend of assistance and learning opportunities. It aids in idea generation, problem-solving, and provides a broad spectrum of knowledge, all while enhancing my understanding of programming. As I continue to grow as a programmer, AI stands as a vital component in my toolkit, serving as a teacher, guide, and collaborator in my coding journey.

Categories
Uncategorized

Blog Post #1 – My Journey from Biology to Computer Science

I never saw myself as a computer person. The image of spending hours in front of a screen, fingers typing on a keyboard, seemed so distant from my reality. Yet, as I sit here, on the brink of completing this computer science degree and diving into the capstone course, I’m struck by the unpredictable turns life can take.

With a background deeply rooted in biology, my world was one of tangible, natural spaces and wonders. I wasn’t like many of my premed peers, drawn to the human-centric aspects of biology. My fascination lay in the intricate balance of ecosystems, the breadth of biodiversity in both the seen and unseen corners of the world.

Weekends for me were adventures. I would flip over river stones to study the aquatic insects living underneath. Mountain hikes weren’t just for the views, but for the chance encounters with pikas and mountain goats, creatures whose existence told about the health and story of the environment they inhabited. I’d navigate winding valleys, where I would spend hours trying to catch trout in streams so remote, they felt untouched by time.

In classrooms and lecture halls, I found my passion not just in theoretical knowledge, but in the application of science to solve real-world problems. It was here that I was first introduced to powerful tools like GIS (Geographic Information Systems) and R programming. These weren’t just computer programs; they were windows into a new world of understanding. GIS brought ecological data to life, turning numbers into visual stories of our environment, while R allowed me to delve deep into statistical analysis, revealing hidden patterns in biological data.

My affinity for technology continued to grow through hands-on experiences in various biology labs. Here, I engaged in the quantitative side of biology. I worked on projects ranging from the effects of environmental changes on shellfish to analyzing the genetic sequences of salmon. These experiences were my first forays into the world of coding and data analysis. The software tools I used, though sometimes limited, were crucial in my understanding of complex biological phenomena.

This intersection of biology and technology was enlightening. I began to appreciate the immense potential of these tools in bridging the gap between raw data and understanding. They served as my introduction to the world of computer science, revealing the potential to not just aid research but to transform it, making complex ecological data comprehensible and meaningful.

My subsequent experiences in natural resource management with government agencies further solidified this interest. Working in remote locations, collecting field data in various conditions, I encountered the practical challenges of data management and analysis. The transition from traditional methods to digital data collection using field-grade tablets was eye-opening but also highlighted the shortcomings of the software we used. It was often insufficient, especially under the less-than-ideal conditions of fieldwork.

As part of the quality control and analysis team, I saw firsthand how software inefficiencies could lead to data inconsistencies, affecting crucial environmental management decisions. This experience highlighted the dire need for robust, user-friendly data collection systems.

Another significant role involved collecting data on salmon harvesting by recreational fishermen. This labor-intensive process involved manually gathering and entering enormous amounts of data into various government databases. The inefficiency of this process was glaringly evident – a clear indication of the disconnect between data collection methodologies and technological advancements.

These experiences led to a realization that was a turning point for me. I began to see the immense potential of combining my passion for biology with the power of computer science.

Now, as I stand at the cusp of a new chapter in my path, I am driven by a desire to be a part of the solution. My aim is not just to develop software that functions effectively but to create systems that integrate seamlessly with the user’s needs, especially in the demanding conditions of fieldwork. My goal is to craft tools that enhance our ability to manage and understand our natural world, bridging the gap between technology and practical application.

But my vision extends beyond just addressing the challenges I’ve encountered in the field of biology. I see computer science as a crucial bridge that connects real-world problems with tangible, effective solutions. With a vast world of systems that can be improved upon, a landscape of opportunities awaits exploration.