AI: Can't Live With It, Can't Live Without It

23 Nov 2023

I. Introduction:

In the ever-shifting world of programming, the infusion of Artificial Intelligence has revolutionized the learning experience. Particularly, in the context of ICS 314, the course has embraced cutting-edge AI tools such as ChatGPT and Github Co-Pilot to augment the exploration of software engineering principles. ChatGPT, a powerful language model, has served as an interactive conversational partner, offering insights, guidance, and code snippets tailored to individual queries. On the other hand, Github Co-Pilot, an innovative code completion tool, has brought a revolutionary dimension to coding exercises by suggesting entire lines or blocks of code based on contextual understanding. These AI tools not only signify the evolving nature of educational methodologies but also raise intriguing questions about the symbiotic relationship between human intellect and machine assistance in the realm of software engineering.

II. Personal Experience with AI:

Experience WODs:

Early Use of AI: In the initial stages, AI, particularly ChatGPT, played a crucial role in helping me tackle the challenging Experience WODs, especially those related to functional programming. It served as a valuable resource to kickstart my problem-solving process.

Transition to Personal Skills: Over time, however, I intentionally reduced my reliance on AI. As I honed my programming skills, I found myself more confident in my ability to approach and solve these WODs independently. This shift allowed me to develop a deeper understanding of functional programming concepts.

Benefits and Costs: The initial use of AI was beneficial for overcoming the learning curve, providing quick solutions. However, the gradual reduction in reliance on AI allowed me to strengthen my problem-solving skills, although it required more personal effort and time.

In-class Practice WODs:

AI Assistance Initially: At the outset, AI was my go-to for solving in-class practice WODs. It served as a helpful guide, offering insights and solutions that aided my learning process.

Independent Coding Progress: As my coding skills advanced, I deliberately challenged myself by attempting these WODs without AI assistance. This transition allowed me to gauge my individual coding proficiency.

Benefits and Costs: AI support initially expedited the learning process, providing solutions and guidance. However, the shift towards independent problem-solving helped me assess and enhance my coding capabilities, even though it demanded more effort.

In-class WODs:

AI as a Learning Tool: During the early stages, AI was instrumental in helping me solve complex in-class WODs like “WOD: Surf Score” and “WOD: Browser History 4.” It acted as a valuable learning tool.

Transition to Self-Reliance: As my understanding of software engineering deepened, I gradually relied less on AI and started solving WODs based on my own programming skills.

Benefits and Costs: AI provided crucial support in tackling challenging WODs, enabling a smoother learning curve. However, the reduced dependence on AI allowed me to cultivate a higher level of confidence in my programming abilities, even if it required more time and effort.

Essays:

AI Outlining: For essays, AI, particularly ChatGPT, was used to generate outlines. This streamlined the initial writing process by providing a structured foundation for my thoughts.

Benefits and Costs: AI proved beneficial in offering a starting point for essays, enhancing efficiency. However, there was a need for careful review and customization to ensure the AI-generated outline aligned with the specific requirements of the essay.

Final Project:

Reduced AI Dependency: As the final project approached, my coding proficiency had reached a level where AI assistance was sparingly needed. AI was employed for uncertainties, but its role was significantly diminished.

Benefits and Costs: Limited use of AI in the final project allowed for a showcase of individual coding capabilities. While AI served as a safety net in uncertain areas, its infrequent use showcased the development of self-reliance in coding.

Learning a Concept / Tutorial:

AI as a Teaching Assistant: AI was utilized as an assistant in learning new concepts or tutorials. It provided guidance on writing specific lines of code or understanding the functionality of certain functions.

Benefits and Costs: AI played a supportive role in the learning process, aiding in the comprehension of coding concepts. However, there was a need for critical evaluation to ensure a complete understanding of the material.

Answering a Question in Class or in Discord:

Limited Discord Use: Due to limited engagement with Discord, AI was not extensively used for answering questions in that platform.

Benefits and Costs: While AI could have potentially provided assistance on Discord, my choice to engage less with the platform meant relying on other sources for information.

Asking or Answering a Smart Question:

AI was frequently used to check the framing of smart questions and provided answers to inquiries.

Benefits and Costs: AI assisted in ensuring the clarity of questions, enhancing communication. However, careful consideration was required to validate the accuracy and relevance of the provided answers.

Coding Example e.g. “Give an example of using Underscore .pluck”:

AI, especially ChatGPT, was employed to generate examples of specific code blocks, such as using Underscore .pluck.

Benefits and Costs: AI facilitated quick access to code examples, aiding in understanding and application. However, a critical evaluation of the generated code was necessary to ensure accuracy and relevance.

Explaining Code:

AI was utilized to assist in explaining the functionality of code segments.

Benefits and Costs: The use of AI streamlined the process of code explanation. However, careful scrutiny was required to ensure that the explanations were accurate and aligned with the intended understanding.

Writing Code:

AI, particularly ChatGPT, provided basic skeletons for programs, enhancing organizational efficiency.

Benefits and Costs: AI support in generating initial code structures expedited the coding process. However, customization and verification were necessary to align the generated code with specific project requirements.

Documenting Code:

In the case of the Functional Programming WOD, AI was used to generate a function using Underscore based on given instructions.

Benefits and Costs: AI streamlined the documentation process for specific WODs, offering a starting point for further elaboration. However, careful review and customization were essential to meet the specific requirements of the WOD.

Quality Assurance:

Rather than relying on AI for quality assurance, I opted for manual code inspection, searching for issues independently.

Benefits and Costs: The decision to inspect code manually aimed to deepen understanding. While it required more personal effort, this approach was considered beneficial for gaining a comprehensive grasp of code intricacies.

Other Uses in ICS 314 not Listed: I mainly focused my application of AI within the specified course elements.

III. Impact on Learning and Understanding:

The integration of AI has undeniably played a pivotal role in shaping my learning experience throughout this semester. The use of AI has proven to be exceptionally beneficial, particularly in guiding me through the intricacies of program creation. Not only did it provide valuable insights into crafting code, but it also served as an instructive tool for deciphering and identifying flaws in the generated code. This dynamic interaction with AI has not only enhanced my understanding of software engineering concepts but has also presented challenges that fostered critical thinking and problem-solving skills. By engaging with AI technologies, I have gained a deeper appreciation for the nuances of code construction and error analysis, contributing significantly to my overall comprehension of the discipline.

IV. Practical Applications:

In practical applications beyond the confines of college, artificial intelligence has proven instrumental in addressing real-world software engineering challenges. Notably, AI has found meaningful applications in collaborative activities, exemplified by its role in projects like the Hawaii Annual Code Challenge (HACC). Through collaborative efforts, AI tools, including ChatGPT and Co-Pilot, have facilitated innovative problem-solving and streamlined the development process. These tools have demonstrated effectiveness in generating code snippets, offering insights into complex algorithms, and assisting in project documentation. Moreover, AI has played a pivotal role in simulations, aiding software engineers in anticipating potential issues, optimizing system performance, and refining algorithms in a controlled environment. The practical utilization of AI in real-world projects extends beyond mere automation, contributing to enhanced efficiency and creativity in software engineering endeavors. As the technology continues to evolve, these practical applications underscore the valuable role of AI in shaping the future landscape of software engineering.

V. Challenges and Opportunities:

I did face notable challenges when relying on AI-generated code, as it often contained flaws or errors that impeded the proper execution of programs. This presented a limitation in terms of the reliability and correctness of the code produced by AI tools like ChatGPT, Bard, or Co-Pilot. The need for meticulous code review and debugging became crucial to ensure the functionality of the programs. However, this challenge also brings forth an opportunity for further integration of AI in software engineering education. By addressing the limitations through enhanced feedback mechanisms, interactive learning platforms, or refining the AI models to generate more accurate and error-free code, there is potential for AI to become a more dependable resource for students in software engineering courses. Additionally, leveraging AI for targeted exercises that focus on debugging and code correction could provide valuable learning experiences, enhancing students’ skills in identifying and rectifying errors in code, a critical aspect of real-world software development.

VI. Comparative Analysis:

When comparing traditional teaching methods with AI-enhanced approaches in software engineering education, several key aspects emerge. Traditional methods often rely on lectures, textbooks, and hands-on exercises conducted without AI assistance. While these methods foster a foundational understanding, they may fall short in terms of engagement. On the contrary, AI-enhanced approaches, exemplified by tools like ChatGPT, Bard, and Co-Pilot, introduce a dynamic and interactive element to learning. AI tools engage students in real-time problem-solving, providing instant feedback and tailored assistance. This can significantly boost engagement levels as students grapple with complex coding challenges. Additionally, the use of AI demonstrates potential benefits in knowledge retention, as the interactive nature of AI-driven exercises may contribute to a deeper understanding of concepts. However, it’s essential to recognize that reliance on AI may pose challenges in fostering creativity and independent problem-solving skills. Striking a balance between traditional methods and AI-enhanced approaches is crucial to creating a comprehensive learning experience that combines foundational knowledge with the dynamic engagement offered by AI technologies, ultimately fostering well-rounded software engineering professionals.

VII. Future Considerations:

In considering the future role of AI in software engineering education, it is evident that advancements in AI technologies will play a pivotal role. As AI continues to evolve, it is likely to become more sophisticated in generating accurate and functional code. The prospect of AI producing larger segments of code at a time holds promise for expediting the development process. However, with this advancement come challenges such as ensuring that AI-generated code aligns with industry standards, security protocols, and remains adaptable to diverse project requirements. Striking a balance between the convenience of AI-generated code and maintaining a nuanced understanding of software engineering principles will be crucial. Additionally, there is a need for ongoing efforts to enhance AI’s capacity to teach and assess higher-order problem-solving skills, fostering a more comprehensive educational experience. Future considerations must address these challenges and focus on refining AI tools to empower students with both efficiency and a deep understanding of the underlying software engineering concepts.

VIII. Conclusion:

In conclusion, my journey with AI this semester has been a multifaceted exploration of its applications across various facets of learning and project work. The usage of AI tools such as ChatGPT and Github Co-Pilot has significantly shaped my experience, offering both benefits and challenges. The adaptability of AI in coding examples, explaining code, and aiding in problem-solving during WODs has been instrumental in expanding my skill set and accelerating certain aspects of the learning process. However, the challenges, such as occasional inaccuracies and the need for nuanced queries, underline the importance of a judicious and discerning approach to AI integration. Looking ahead, optimizing the use of AI in future courses requires a balanced approach. While AI enhances efficiency and creativity, its limitations necessitate a continued emphasis on traditional learning methods and independent problem-solving. Striking a harmonious balance between AI and traditional methodologies is key, fostering an environment where students leverage the strengths of both to cultivate a robust understanding of software engineering principles. Furthermore, ongoing improvements in AI technologies, coupled with tailored educational strategies, can unlock even greater potential for the seamless integration of AI in shaping future software engineers.