Implementing AI in Software Engineering

16 Dec 2024

Introduction

Artificial Intelligence (AI) has become a transformative force in education, reshaping how students and educators approach learning and teaching. In software engineering, where complexity often intersects with creativity, AI tools like ChatGPT and GitHub Co-Pilot are increasingly utilized to enhance problem-solving, streamline coding practices, and support understanding of intricate concepts. Throughout ICS 314, these tools have been pivotal in facilitating my learning journey, enabling me to approach software engineering challenges with newfound clarity and efficiency.

Personal Experience with AI

  1. Experience WODs (e.g., E18): For the Experience WODs, I utilized ChatGPT to clarify initial requirements and strategies. For instance, in E18, which involved functional programming concepts, I asked, “How do I use the .filter and .reduce TypeScript array methods?” While ChatGPT provided a correct example, the response needed adjustment to align precisely with the WOD requirements. It was a helpful starting point but required critical evaluation and refinement.

  2. In-class Practice WODs: During in-class practice WODs, I occasionally consulted ChatGPT for syntax clarification. For example, I asked, “How to style this to meet the criteria?” The response was concise and applicable, saving me time and reducing frustration when stuck on small details. However, reliance on AI sometimes hindered my ability to fully internalize the material.

  3. In-class WODs: For graded in-class WODs, I tried to refrain from using AI tools when I could to ensure I was actually learning the course material. This choice emphasized the importance of independent problem-solving, although it was tempting to seek quick solutions. I did however use AI when I couldn’t figure out the solution in order to keep me on track to finish the WOD within the allotted time frame.

  4. Essays: For essay assignments, I used AI tools like ChatGPT to brainstorm ideas and refine drafts. For example, I asked, “What are some key benefits of following coding standards?” The suggestions provided a broad perspective, which I then tailored to the course context. While helpful, overreliance on AI risked making my writing less personal and reflective, which is why I only relied on AI for brainstorming ideas and refining my drafts.

  5. Final Project: In the final project, AI was instrumental in various phases. During coding, I used GitHub Co-Pilot for auto-completing repetitive tasks. Additionally, ChatGPT helped debug issues by providing explanations for error messages, such as “How do I resolve this error?” These tools significantly expedited development but occasionally introduced errors that required careful manual review.

  6. Learning a Concept/Tutorial: When learning new concepts like functional programming, I asked ChatGPT, “Explain functional programming in TypeScript with examples.” The detailed explanation and examples clarified my understanding, supplementing the course material effectively.

  7. Answering a Question in Class or Discord: I used ChatGPT to cross-check any answers that were given in Discord by my fellow classmates. For instance, when looking at a classmate’s potential solution to a common problem, I verified the solution with AI to ensure accuracy. This allowed me to be more confident in the solutions to my problems.

  8. Asking or Answering a Smart-Question: When using AI, I needed to understand how to ask a smart-question in order to receive an answer that was sufficient in solving my problem. Without asking smart-questions, AI would often not understand what my exact issue is and would usually give an answer that is not helpful to my situation.

  9. Coding Example: When asking AI to provide coding examples, I frequently consulted ChatGPT for inspiration. For instance, I asked, “Provide a TypeScript function to filter an array of objects by a specific key value.” While the response was correct, it often lacked nuance or specific context, prompting me to revise and adapt it to meet the assignment requirements.

  10. Explaining Code: I used ChatGPT to explain blocks of code I provided when I encountered difficulties understanding them. For example, I asked, “Can you explain this TypeScript function that uses a reduce method?” and pasted the code snippet. ChatGPT provided a step-by-step breakdown, making the function’s logic clearer and helping me identify a potential edge case the original code missed. This approach enhanced my ability to analyze and debug complex code structures.

  11. Writing Code: For repetitive or boilerplate code, I relied on GitHub Co-Pilot. For instance, in the final project, it auto-completed API route handlers, saving time but necessitating vigilance to ensure alignment with project requirements.

  12. Documenting Code: I didn’t personally use AI for documenting code, but I do know that ChatGPT can be invaluable for drafting documentation. I could have asked, “Generate JSDoc comments for this function,” and it would have been able to produce clear, professional templates that I could then customize to fit the context of the project.

  13. Quality Assurance: For debugging, I often queried ChatGPT with specific error messages. For example, I ran into many issues when updating and adding information to our app’s schema and I was able to utilize ChatGPT to determine the solution to the errors I was running into. The suggestions were mostly accurate but occasionally missed subtle context, requiring additional testing.

  14. Other Uses: Beyond these areas, I utilized AI to explore and determine if there was a better solution to my problem than the one I currently had. For instance, I asked, “Is there a more effective solution for addressing this challenge?” This helped me identify potential improvements and enhance my decision-making process.

Impact on Learning and Understanding

Incorporating AI into ICS 314 has been a double-edged sword. On one hand, it accelerated my comprehension of complex topics and provided immediate assistance when traditional resources fell short. On the other hand, the convenience of AI sometimes tempted me to bypass critical thinking, potentially undermining deeper learning. Striking a balance was essential to maximize the benefits while mitigating the risks.

Practical Applications

Outside ICS 314, AI has proven beneficial in real-world applications, such as participating in the Hawai‘i Annual Code Challenge (HACC). For example, I used ChatGPT to prototype API integrations and debug deployment issues. These tools enhanced efficiency and enabled my team to focus on innovation rather than troubleshooting.

Challenges and Opportunities

The main challenges with AI usage were dependency and accuracy. Overreliance could stunt skill development, while incorrect or oversimplified responses occasionally misled me. However, opportunities for further integration include leveraging AI for personalized learning paths and advanced debugging tools tailored to course objectives.

Comparative Analysis

Traditional teaching methods excel in fostering foundational understanding and critical thinking. However, AI-enhanced approaches offer unparalleled efficiency and adaptability. Combining both methods—using AI as a supplemental resource rather than a crutch—can optimize engagement, retention, and skill development.

Future Considerations

Looking ahead, AI’s role in software engineering education is likely to expand. Advanced tools could provide real-time feedback, simulate complex scenarios, and offer personalized tutorials. However, addressing challenges like ethical usage, accuracy, and dependency will be crucial for sustainable integration.

Conclusion

Reflecting on my experience, AI has significantly influenced my learning journey in ICS 314, enhancing both efficiency and understanding. To optimize its integration, educators should emphasize responsible usage and encourage a balanced approach. By combining the strengths of traditional methods and AI technologies, software engineering education can prepare students for the evolving demands of the industry.