Addressing AI

16 Dec 2024

Introduction

Artificial Intelligence (AI) has become an extremely practical tool in education that fundamentally changes how students learn and engage with complex concepts. In the realm of software Engineering, AI offers unique opportunities to enhance learning through tools like ChatGPT and GitHub Co-Pilot. These tools can assist in a variety of tasks like writing, debugging, understanding code, documenting work, and even solving complex algorithmic problems. In ICS 314, I have primarily used ChatGPT and Co-Pilot to navigate challenges, assist my learning, and refine my software engineering skills.

Personal Experience with AI

Experience WODs

For the Experience WODs, I used ChatGPT to clarify instructions and explore examples of implementations. For instance, during the E18 WOD (that focused on functional programming), I asked ChatGPT to “Provide an example of a functional programming solution for filtering and mapping an array in JavaScript.” The response offered a helpful starting point, although it required customization to align with the specific task. While it sped up initial comprehension, it occasionally led to over-reliance on examples.

In-class Practice WODs

In Practice WODs, I experimented with AI to understand foundational concepts. For example, I used ChatGPT to explain, “How do closures work in JavaScript?” The explanations often included diagrams and examples, which helped my learning process. During Practice WODs, I tried to avoid using AI where possible since the goal of these WODs were to develop proficiency for the real thing.

In-class WODs

When it came to In-class, timed WODs, I found that using AI to provide a framework for starting the assignment was very helpful in saving time on simple first steps. When I was unable to solve a WOD and the time limit was about to be reached, I’d ask ChatGPT to read the instructions and fix my code based on them, which could save me in a pinch.

Essays

For essays, I used ChatGPT to brainstorm ideas and outlines, and refine drafts. For example, when writing an essay on UI frameworks, I asked ChatGPT to provide an outline based on the instructions for the assignment, and to provide any key definitions I might need to include in my essay. Writing essays with ChatGPT can be helpful, but often needs a lot of post-processing to avoid sounding robotic and redundant.

Final Project

AI was invaluable during the final project, particularly for brainstorming features, beginning work on different sections, and debugging. I found myself frequently using ChatGPT and GitHub Co-Pilot to solve bugs and fix errors that I did not immediately know the solution to.

Learning a Concept / Tutorial

When tackling new tutorials, I used AI to clarify ambiguous instructions. For example, when trying to access a PostgreSQL database in VSCode, I would ask ChatGPT, “I can’t access my Postgres database in VSCode. I’m having trouble with example.file and file.example, what is the problem and how can I fix it?” ChatGPT was often able to provide step-by-step guides to troubleshoot the problem, and when any given solution didn’t work, I was able to adjust the prompt to try new solutions.

Answering a Question in Class or in Discord

I did not rely on AI when answering questions in Class or in Discord. This is mostly because I was not personally answering questions in Class or Discord that required extensive thought, or were particularly difficult to understand. Therefore, I did not feel that use of AI was necessary.

Asking or Answering a Smart-Question

Sometimes when asking smart questions, I’d ask ChatGPT if it was a good smart question and what other details I might need to include to make my smart question better. This often helped to refine my questions into more informative and detailed descriptions of the problems I was encountering.

Coding Example

I would frequently use ChatGPT to get examples of code. For instance, “Please give me an example of a collapsible navbar in ReactJS.” This was helpful for producing breakdowns and also giving me a reference to build code off of.

Explaining Code

AI was helpful for explaining code to peers. A typical prompt like “Explain what this TypeScript code does” produced a clear breakdown which could be adjusted as needed depending on what I needed to explain.

Writing Code

AI significantly boosted my efficiency when writing boilerplate or repetitive code. For instance, I used Co-Pilot on almost every assignment to either auto-generate code or fix errors that I encountered. This saved me a lot of unnecessary keystrokes.

Documenting Code

For documentation, I used ChatGPT to generate comments within my code, or to generate code with comments in them. Asking ChatGPT to complete this task was relatively simple and provided a consistent style throughout my code.

Quality Assurance

AI made all the difference regarding quality assurance. With ESLint installed in VSCode, any and every error that I encountered could either be solved by GitHub Co-Pilot or revised by ChatGPT. Asking things like, “Can you fix this code to adhere to ESLint guidelines” or “Fix the ESLint errors in this code” would output corrections that saved me a lot of time.

Other Uses in ICS 314

I think AI can be very practical in generating mock data for testing. For example, asking ChatGPT to “Generate a test for the following code” could provide a response with a working test file. Due to ChatGPT’s versatile nature, this ability encompasses many kinds of testing and implementations.

Impact on Learning and Understanding

Incorporating AI into my workflow has improved my learning experience by providing instant feedback and alternative perspectives. It has improved my comprehension of complex topics and refined my problem-solving speed and abilities. However, I have personally found that over-reliance can hinder true understanding, so balancing understanding and AI usage is very important.

Practical Applications

Outside ICS 314, I have used AI for real-world projects, ranging from modding game files to solving coding problems online. AI streamlined tasks like generating test cases and debugging, which is incredibly useful in addressing real-world challenges efficiently.

Challenges and Opportunities

One challenge with using AI was ensuring originality while using AI-generated suggestions. Additionally, interpreting ambiguous outputs occasionally slowed progress. I found that when it came to dealing with larger projects that involved multiple files or apps, ChatGPT could not solve problems correctly unless I provided the necessary information, which required a fundamental understanding of the material I was working with and how to solve the problems myself. That said, AI presents opportunities to personalize learning and automate mundane tasks, which can help students focus on higher-level problem-solving.

Comparative Analysis

Traditional methods emphasize foundational understanding, while AI-enhanced approaches offer efficiency and accessibility. While AI accelerates learning, traditional methods provide a deeper, more intuitive grasp of concepts. Combining both approaches ensures a comprehensive education.

Future Considerations

AI’s role in software engineering education will likely expand with advancements in natural language processing and adaptive learning systems. Future courses could integrate AI-powered tutors to offer real-time, personalized feedback and learning paths. The possibilities are endless. Whatever the case, it will be nearly impossible to restrict the use of AI in school, work, and other lively tasks.

Conclusion

Reflection on my experiences, AI has been a transformative tool in passing ICS 314, enhancing learning and streamlining workflows. To optimize its integration, education should emphasize balanced usage of AI tools with traditional learning methods, much like this class has done. This approach ensures students gain both the skills and understanding needed to excel in software engineering.