Artificial Intelligence has rapidly become a common tool in education, especially in technical fields like software engineering. In ICS 314, AI tools were not only permitted but encouraged as part of the learning process. Throughout the course, I primarily used ChatGPT as an AI assistant, occasionally alongside AI-powered IDE features such as autocomplete and linting suggestions. These tools influenced how I approached problem-solving, learned new concepts, and reflected on my own understanding of software engineering principles.
Rather than replacing learning, AI served as a supplemental resource that helped me explore ideas, debug issues, and reflect more deeply on course material. This essay reflects on how I used AI in ICS 314, where it was helpful, where it was limited, and how it shaped my learning experience overall.
Below, I address each course element listed in the assignment and describe how AI was (or was not) used.
For Experience WODs, I used AI primarily to help me get started when I felt stuck. For example, during a functional programming WOD, I asked ChatGPT:
“Write a function using underscore.js to implement the following instructions…”
AI helped me understand the structure of a solution, but the output was rarely correct on the first attempt. I still needed to adapt the code to meet the exact WOD requirements. AI was useful for orientation, but not as a final solution.
During in-class practice WODs, I used AI sparingly. Because these were meant to reinforce immediate learning, I often tried to solve them independently first. When I did use AI, it was usually to confirm whether my approach made sense rather than to generate full solutions.
For timed in-class WODs, I generally avoided using AI. I felt that relying too heavily on AI during these exercises could weaken my ability to reason quickly under pressure. When I did consult AI, it was for syntax clarification rather than logic.
AI was very helpful for essays. I used ChatGPT to brainstorm outlines, improve clarity, and revise wording. For example, I asked:
“Help me rewrite this paragraph to be clearer but still in my voice.”
While AI helped polish my writing, I ensured that all ideas and reflections remained my own.
For the final project, AI was used frequently but carefully. I asked questions about design patterns, React structure, and best practices, such as:
“What is a clean way to organize components for this feature?”
AI helped accelerate development, but I still needed to integrate, refactor, and debug everything myself.
When learning new concepts, AI functioned like an on-demand tutor. For example:
“Explain functional programming in JavaScript with simple examples.”
This was one of the most effective uses of AI, especially when documentation felt overwhelming.
I sometimes used AI to validate my understanding before answering questions publicly. This helped me avoid spreading incorrect information and boosted my confidence when participating.
AI helped me refine vague questions into more precise ones. For example, instead of asking “Why doesn’t this work?”, I learned to ask targeted questions after discussing the issue with AI first.
For coding examples, such as using _.pluck, I asked:
“Give an example of using underscore.js pluck with an array of objects.”
These examples were helpful starting points but still required adaptation.
AI was useful for explaining unfamiliar code snippets. Asking “Explain what this code does line by line” helped reinforce my understanding.
AI-assisted code generation saved time, but it was never a complete solution. Most generated code required debugging or restructuring to fit the project.
I used AI to help write documentation comments and README explanations. This improved clarity and consistency.
One of the most useful applications was debugging. Prompts like:
“What’s wrong with this code?” or “Fix these ESLint errors”
helped identify issues faster, though I still needed to understand and apply the fixes myself.
AI was also helpful for effort estimation reflections, project planning, and generating test cases. These uses supported project management rather than direct coding.
AI significantly enhanced my learning by reducing friction when encountering new concepts. Instead of getting stuck for long periods, I could quickly clarify misunderstandings and move forward. However, I also learned that over-reliance on AI could reduce deep thinking if I was not careful. The key was using AI as a guide, not a crutch.
Outside the course, I have used AI in personal and academic projects to brainstorm designs, debug code, and write documentation. These experiences reinforced the idea that AI is becoming a standard tool in real-world software engineering workflows.
One challenge was knowing when not to use AI. Sometimes AI produced confident but incorrect answers, requiring careful verification. A major opportunity lies in teaching students how to critically evaluate AI output rather than accept it blindly.
Compared to traditional learning methods, AI-enhanced learning is more interactive and immediate. While lectures and readings provide foundational knowledge, AI allows for rapid experimentation and personalized clarification. However, traditional methods remain essential for building discipline and conceptual depth.
In the future, AI will likely become even more integrated into software engineering education. Courses should emphasize ethical use, verification skills, and prompt engineering so students can use AI responsibly and effectively.
Overall, AI played a meaningful and positive role in my experience with ICS 314. It enhanced my productivity, supported my learning, and encouraged deeper reflection when used responsibly. Rather than replacing learning, AI amplified it. With proper guidance and critical thinking, AI can be a powerful ally in software engineering education.