
Since ChatGPT was publicly released in November 2022, the use of AI in education has rapidly increased over the last few years. AI’s role in education has expanded beyond simply asking ChatGPT questions to include a range of new AI startups aimed at helping students learn more efficiently. These tools can generate flashcards, quizzes, and summaries by processing PowerPoint slides, lectures, class notes, and study guides. AI is now serving as every student’s free (or paid) private tutor, available anytime and anywhere. Students use it to learn and understand new concepts more effectively.
In software engineering, AI tools such as ChatGPT and GitHub Copilot can significantly improve workflow efficiency. They help by identifying and fixing coding errors, autocompleting code to speed up the development process, offering guidance on how to implement specific functionality, providing project ideas, or generating templates to build upon.
In my case, I have used ChatGPT to help me learn and understand new concepts, or to figure out how to do something. In ICS 314, I relied on ChatGPT to help me find and fix errors in my code, determine how to implement specific functionality, and explain concepts I was learning so I could better understand them.
During Experience WODs like E18, I used ChatGPT when I didn’t know how to begin implementing a feature. For example, when working on an exercise that required using underscore.js functions, I asked, “How do I use Underscore’s map to transform an array of objects?” ChatGPT provided examples that helped me understand the syntax and logic needed. It gave me a starting point, which was very useful since I wasn’t sure how to structure the solution on my own.
In practice WODs, I often encountered errors that I struggled to fix. For instance, while working on a WOD involving form validation in Meteor, I asked ChatGPT, “Why am I getting a ‘TypeError: Cannot read property of undefined’ in my Meteor method?” The AI pointed out potential causes like incorrect object references, which helped me narrow down the issue. This saved time and allowed me to better understand what went wrong.
Similarly, during live in-class WODs, I used ChatGPT when I hit frustrating bugs that I couldn’t solve quickly. For example, I once asked, “Why isn’t my submit button working in a Meteor template?” ChatGPT’s explanation helped me realize I hadn’t attached the correct event listener. While I had to use the tool quickly due to time constraints, it helped keep me from getting completely stuck.
I used ChatGPT to help me improve the grammar and clarity of my essays. I would write a draft and then paste paragraphs into ChatGPT with the prompt, “Can you improve the grammar and make this more formal?” The tool helped rephrase sentences while keeping my original meaning intact. This was especially helpful in polishing my writing for submission.
For the final project, I used ChatGPT in a few ways. When we were figuring out how to implement a form that saves user data in a MongoDB collection, I asked, “How do I insert a form’s input into a MongoDB collection using Meteor?” ChatGPT provided a functional code snippet that we modified to fit our project. I also asked it to help troubleshoot ESLint errors, and while some of the suggestions weren’t perfect, they pointed me in the right direction. The AI saved time, though I still needed to validate its suggestions against course best practices.
I used ChatGPT primarily to understand new concepts I came across in class. For example, when we were learning about functional programming, I asked, “What does Underscore’s filter function do and how is it different from map?” ChatGPT explained both and gave examples, which helped me understand when to use each. However, I didn’t rely on it for tutorials, since I preferred the ones provided by the course, which were more tailored to our specific goals.
I didn’t use AI to answer questions in class or on Discord. I felt that if someone had asked a question, they were looking for a peer or instructor to answer based on the course’s context. I also wasn’t confident that AI responses would align with the course’s specific expectations or standards.
I did not use AI when asking or answering a smart-question. I usually reserved those questions for things that were project-specific or very tailored to ICS 314, and I felt that asking the community or the instructor was more appropriate for those types of inquiries.
When I needed to understand new functions or libraries, I would often ask ChatGPT for code examples. For example, I once asked, “Can you give me an example of using Underscore’s .pluck to get all names from an array of objects?” The result helped me visualize how the function works and how to apply it in different contexts. These examples were useful for learning patterns and syntax.
When I didn’t understand a block of code, I would paste it into ChatGPT and ask, “Can you explain what this code does?” For instance, I did this with a helper function in Meteor that was filtering database results. ChatGPT broke down the function line by line, which helped me understand both the syntax and logic. This made reviewing other people’s code (and even my own) more manageable.
When I didn’t know how to write a certain function or feature, I used ChatGPT as a starting point. For example, I asked, “How do I create a form in Meteor that adds a new document to a collection?” It gave me a basic structure, which I then adapted to match my project’s schema. While the code wasn’t perfect out of the box, it was a useful reference that saved me time and helped me get started.
I did not use AI to document my code. I usually wrote comments and documentation on my own because I wanted to make sure they were accurate and in my own words. I also felt that writing the documentation myself helped reinforce my understanding of the code.
” or “Fix the ESLint errors in ”I used ChatGPT to fix bugs or ESLint errors when I couldn’t figure them out. For example, I asked, “Why am I getting a missing semicolon ESLint error here?” or pasted small snippets with errors. ChatGPT helped me understand not just what to change, but why the error was happening. Sometimes it would give vague or incorrect answers, but with a bit of trial and error, I could get to the right solution. It was like having a second pair of eyes to spot small mistakes.
I did not use AI for any other activities beyond the ones mentioned above. I focused my usage on learning concepts, fixing errors, and improving my writing, and didn’t find a need for other types of support from AI.
The use of AI, particularly ChatGPT, has significantly improved my learning experience in ICS 314. It became a powerful tool for building my comprehension of new concepts by offering quick, simplified explanations when I was confused or stuck. For example, when I struggled with understanding how helper functions worked in Meteor templates, I asked ChatGPT to walk me through what a specific block of code did. Its breakdowns helped me understand not just what the code was doing, but why it was doing it that way.
AI also helped me improve my problem-solving skills. When I ran into errors that I couldn’t fix on my own, ChatGPT gave me hints or suggestions rather than complete solutions, allowing me to learn through guided exploration. It didn’t always give perfect answers, but even those imperfect answers pushed me to research and experiment further. I’ve become better at reading code, debugging, and understanding syntax as a result of using AI to complement my learning. It gave me confidence to tackle difficult problems without feeling overwhelmed.
Outside of ICS 314, I have used AI in other areas of learning and development. For example, in preparation for HACC (Hawaiʻi Annual Code Challenge), I used ChatGPT to help brainstorm project ideas and generate sample code snippets to test proof-of-concept features. While we didn’t use AI-generated code directly in our final submission, it helped us think through implementation strategies and consider edge cases early on.
I’ve also used AI in personal projects when I needed help figuring out how to connect frontend and backend components, or when I was experimenting with new libraries. In these real-world scenarios, AI provided a starting point that helped save time and boost creativity. It’s not a substitute for real development experience, but it’s a valuable assistant that helps speed up the planning and problem-solving process.
One of the biggest challenges I faced when using AI was learning to filter and verify the responses. Sometimes ChatGPT would give incorrect or outdated information, especially when it came to specific frameworks or syntax (e.g., Meteor-related functions). Relying too heavily on AI without double-checking the output could have led to bad habits or misconceptions. I had to learn to use AI as a tool — not a crutch — and always test and confirm what it told me.
Another challenge was knowing when to stop using AI and figure things out for myself. There were times when I felt I was too quick to copy-paste a solution instead of taking time to understand it first. That’s a habit I’m still working on.
However, I also see a lot of opportunity in integrating AI more intentionally into software engineering education. Instructors could create exercises that include AI-assisted code review or encourage students to critique and improve AI-generated solutions. This would teach students how to use AI responsibly and critically — an essential skill in today’s tech world.
Compared to traditional teaching methods like lectures, readings, and discussion, AI tools bring a new level of interactivity and personalization. With AI, I can ask a question at any time, in any way, and get an immediate answer — something not always possible in a classroom setting. This immediacy helped keep me engaged and motivated, especially when I was working late at night or outside class hours.
In terms of knowledge retention, I found that using AI to clarify and explain concepts in my own words helped me remember them better. It’s like having a tutor who can rephrase things until I understand them. However, AI doesn’t replace hands-on coding experience. Traditional methods still offer the structure and foundational understanding that’s necessary for deeper learning.
Overall, AI-enhanced approaches are best when used to supplement traditional learning, not replace it. They add flexibility and access to additional help, especially when time or availability is limited.
Looking ahead, I think AI will continue to play a major role in software engineering education. Tools like ChatGPT and GitHub Copilot could be more tightly integrated into the curriculum, perhaps through AI-assisted labs, debugging challenges, or documentation review exercises. There’s also room for developing course-specific AI models trained on lecture materials or course projects.
However, one challenge will be teaching students how to use AI ethically and effectively, especially to avoid over-reliance or academic dishonesty. Clear guidelines, best practices, and reflective exercises like this one can help with that. I also think more focus should be placed on teaching students how to critically evaluate AI output and debug AI-assisted code — a skill that will become increasingly important.
Reflecting on my experience in ICS 314, AI has been one of the most helpful tools in my learning process. It acted as a guide when I was lost, a debugger when I was stuck, and a writing assistant when I needed help explaining my thoughts. While it wasn’t always perfect, it made complex tasks more approachable and helped me learn in a way that felt personalized and efficient.
To optimize the integration of AI in future software engineering courses, I recommend encouraging thoughtful use of AI, offering guided activities that involve AI collaboration, and teaching students how to verify and improve AI-generated code. With the right balance of structure, critical thinking, and creativity, AI can become a powerful partner in the journey of learning software engineering.