Artificial Intelligence (AI) has emerged as a transformative tool in education, offering innovative ways to tackle complex fields, such as Software Engineering. Within ICS 314, AI tools like ChatGPT and Copilot significantly influenced my learning process. These technologies supported me in understanding challenging concepts, debugging code and boosting productivity. They helped me to address academic challenges efficiently and encouraged exploration of creative solutions that might not have been considered otherwise. This essay reflects upon my use of AI throughout ICS 314, highlighting specific applications utilized, challenges encountered and the lessons I learned about integrating AI effectively into the educational process.
1. Experience WODs (e.g., E18)
For each Experience Workout of the Day (WOD), I started by attempting to complete the assignment entirely on my own without the assistance of AI. I believe that by using this initial strategy, it allowed me to focus on developing my problem-solving skills and improving my ability to analyze coding tasks independently. However, if I spent too much time on a single step, typically five to seven minutes, without making significant progress, I resorted to using AI tools like ChatGPT and Copilot for guidance. With AI’s assistance, I was able to get back on track quickly, implement the necessary components and ensure the program worked as intended. After overcoming the initial challenges, I would reset the timer and attempt the WOD again, this time using what I learned to improve my efficiency. On these second and subsequent attempts, I relied more on AI to ensure I was on the right track and assist me with completing specific tasks required for the WOD. AI became particularly valuable for debugging and resolving any issues that came up during the process. For example, when I encountered an unexpected runtime error while working on E50: Digits Part 2 (List Contacts Page), I had to ask ChatGPT, “How do I resolve this undefined error in order to get my webpage back up?” The explanations provided not only resolved the immediate issue but also deepened my understanding of how to prevent similar errors in the future.
By relying on AI more during reattempts, I could systematically validate my approach and refine the details of my implementation. AI tools helped me to debug efficiently, clarify doubts and fine-tune my code to ensure everything was functioning correctly. This process reduced uncertainties in how to proceed, helped me to identify areas for optimization and improved my overall completion time for each WOD task. Overtime, this combination of independent effort and targeted AI assistance strengthened my coding skills, increased my confidence and reinforced my understanding of key concepts.
2. In-class Practice WODs
At first, I relied on using Copilot during the in-class Practice WODs because of its ability to provide suggestions by making use of internet-based resources. This was particularly helpful when working on the given tasks as Copilot would generate up-to-date solutions and relevant examples, which were especially useful when I was given tasks that involved new or unfamiliar concepts. For instance, during the History of Surfing in-class Practice WOD, I was tasked with creating a simple Hyper Text Markup Language (HTML) and Cascading Style Sheets (CSS) page featuring a centered heading, a background image, contrasting font colors, and Google Fonts. Additionally, I had to include an introductory and profile section that included images properly sized and floated of four professional surfers.
Initially, I had difficulty centering the heading and ensuring the images floated correctly with consistent spacing. I used Copilot to help resolve these issues. For example, by prompting Copilot, “How do I center an H1 heading in HTML and CSS while ensuring compatibility across browsers?,” it was able to provide me with a solution that used text-align: center and ensured it worked within my stylesheet. Similarly, when I asked about image floats, Copilot suggested using float: left and adding margins for spacing. I adapted its suggestions, verified their results and used them to meet the assignment’s requirements.
However, as the course progressed, I began to encounter limitations with Copilot. It maxed out at 30-messages, displayed errors when working on more advanced tasks and slowed response times hindered my workflow. Midway through the semester, I transitioned to using ChatGPT Plus (paying $20 for the subscription) due to its enhanced performance, unlimited messaging and improved accuracy when handling complex problems. For example, while working on the Aloha Beer Kaka’ako React-based WOD, I needed help integrating Bootstrap components for the navbar and aligning icons. I asked ChatGPT, “How can I use Bootstrap 5 in React to create a navbar with left-aligned text and right-aligned icons?” ChatGPT provided a detailed explanation that included using react-bootstrap components like Navbar, Nav and utility classes, such as ms-auto to push icons to the right. I was able to follow its guidance, resolve alignment issues and complete the task efficiently.
By shifting to ChatGPT, I was able to address the shortcomings I experienced with Copilot and maintained productivity during the in-class Practice WODs. While Copilot was useful early in the course for simpler tasks, utilizing ChatGPT, with its expanded capabilities, became a much better choice because it was a more reliable tool for debugging, refining code and understanding intricate web development concepts. This transition ultimately improved my ability to complete assignments within the time constraints while deepening my grasp of the fundamentals being taught within the class.
3. In-class WODs
For all of the in-class WODs, I used AI to help me complete the tasks within the given time constraints. Before starting, I would paste the WOD instructions into ChatGPT to get an initial understanding of how to proceed. This helped me plan the structure of my implementation and ensure I was on track to meet each requirement efficiently. Similar to the in-class Practice WODs, I initially used Copilot at the beginning of the semester to assist me with completing WODs, but as the tasks became more complex, I transitioned to ChatGPT Plus due to Copilot’s limitations, such as maxing out at the 30-message point and slower response times. For example, during the NextJs2 WOD, I used ChatGPT to assist me in forming the documentation page, which required access restrictions for authorized users only. I also relied on it to help set up the navbar component within the “page.tsx” file. ChatGPT provided clear suggestions for structuring the authorization logic and integrating the navbar component with minimal issues.
Using Copilot and ChatGPT during these WODs allowed me to reduce errors that might arise from misinterpreting the instructions or implementing components incorrectly under pressure. By referring to AI for clarification and quick solutions, I could maintain a steady pace and avoid significant delays. Additionally, ChatGPT helped me troubleshoot any unexpected issues that arose during the process, such as syntax errors or misaligned components, allowing me to fix problems efficiently without wasting time.
While AI was instrumental in helping me complete these tasks, I made sure to ask follow-up questions to reinforce my understanding of the solutions it provided. For example, follow-up questions such as these helped me better understand the solutions, “Why is this the best way to restrict page access in Next.js?” or “How do utility classes in Bootstrap ensure proper alignment?” This approach ensured that I was not simply copying answers but learning from the process, which improved my understanding of Next.js, Bootstrap and the overall WOD structure.
By integrating AI into my workflow for in-class WODs, I was able to work more efficiently, minimize errors and complete tasks within the time constraints. This method not only boosted my confidence during timed assignments but also reinforced my understanding of the tools and frameworks used in the course.
4. Essays
AI tools played a central role in drafting and refining essays. For each essay, I primarily relied on ChatGPT and Grammarly to ensure grammatical accuracy and verify that I met all the assignment requirements. ChatGPT was particularly helpful for staying on track with the content outlined in the instructions, because it allowed me to double-check that my discussions aligned with the course’s material. For example, while working on my Asking Smart Questions essay, I inserted the material provided for the assignment into ChatGPT and asked it to cross-check my understanding of the content. This ensured I was interpreting the material correctly and aligning my arguments with the assignment’s core objectives. ChatGPT also provided a structured breakdown, including the importance of research, clarity and providing context when asking questions, which helped me to organize the essay effectively. Grammarly further ensured that my writing was polished, with minimal grammatical errors or stylistic inconsistencies. By combining the strengths of these tools, I was able to produce essays that met both the content and language standards required for the course.
5. Final Project
For the final project, I used ChatGPT extensively to ensure that we met all requirements across each milestone. ChatGPT helped me put together the documentation page properly, ensuring that it adhered to the project guidelines and was well-structured. Beyond documentation, I used ChatGPT to implement continuous integration (CI) by using GitHub Actions. This involved setting up automated checks so that each commit to the main branch would trigger all of the necessary checks and tests. ChatGPT also assisted me in displaying the results of CI via a badge on our project homepage, providing clear instructions and code snippets to accomplish this efficiently.
This support was critical in helping our team deliver a polished and functional final project. ChatGPT allowed me to troubleshoot any issues quickly, ensuring that the system operated seamlessly and met the project’s technical requirements.
6. Learning a Concept / Tutorial
I used ChatGPT to assist me in understanding new concepts introduced during the course. This was particularly valuable when learning about Next.js, React, PostgreSQL, pgAdmin, Vercel, and effectively following issue-driven project management practices on GitHub. ChatGPT provided clear explanations and practical examples, helping me grasp the fundamentals of these technologies. For instance, when I struggled with deploying an application using Vercel, I asked ChatGPT, “How do I configure my Next.js app for deployment on Vercel?” The response outlined the step-by-step process clearly, enabling me to successfully complete the task while deepening my understanding of deployment processes.
7. Answering a Question in Class or on Discord
I did not use AI when answering questions in class or on Discord. I felt that doing so would diminish the learning experience and defeat the purpose of taking the course. Relying on AI to provide immediate answers would have prevented me from fully engaging with the material and developing my own understanding. Instead, I focused on problem-solving independently, recognizing that the course’s value lay in learning to think critically.
8. Asking or Answering a Smart Question
I did not answer any smart questions in the class’ Discord server. However, if I were to answer a question, I would first attempt to answer it on my own. Then, I would use AI tools like ChatGPT to cross-check my answer and ensure the information I provided was correct. This approach would help me to validate my understanding and ensure that the guidance I offered was accurate and reliable.
9. Coding Example (e.g., “Give an example of using Underscore .pluck”)
I made extensive use of ChatGPT to provide coding examples for various concepts. For example, I asked it to demonstrate the usage of methods, such as “.map,” “.filter” and “.reduce” in TypeScript to manipulate arrays. ChatGPT provided clear explanations along with practical code snippets, such as filtering even numbers from an array, mapping them to their squares and then reducing the results to their sum. These examples not only clarified the functionality of these methods but also helped me apply them confidently in assignments and WODs.
10. Explaining Code
I relied heavily on AI to explain the code I had written, particularly during the in-class Practice WODs. By inputting my implementations into ChatGPT, I was able to gain a detailed understanding of what each part of my code was doing. This process ensured that I fully understood the logic, purpose and potential improvements for my work. For example, after completing steps in the Next.js Template Dollar in-class Practice WOD, such as updating the List Stuff page to display the Value field or adding a required Value field in the Add Stuff page, I used ChatGPT to clarify how these updates interacted with the components and functions. ChatGPT provided explanations of how changes to “page.tsx,” “AddStuffForm.tsx” and “dbActions.ts” influenced data flow and functionality. This frequent use of AI explanations gave me confidence in my code and improved my ability to articulate its functionality during discussions and documentation.
11. Writing Code
I used ChatGPT extensively to assist with writing code, especially during the in-class WODs. These tasks had strict time constraints, and ChatGPT helped reduce the likelihood of errors or missed steps from the instructions. By providing clear and concise code examples, it ensured I could implement the required functionality efficiently. For example, during the “NextJs1” WOD, I completed the given task with the assistance of ChatGPT. It helped me ensure that I was on the right track when forming and recreating the Aloha Beer website. ChatGPT guided me in putting together components like the TopMenu, SecondMenu, CenterImage, and Footer, as well as editing the Page.tsx file and modifying layout.tsx and global.css. This assistance minimized issues and significantly sped up the process, allowing me to meet all requirements within the time constraints.
12. Documenting Code
When it came to documenting my work, I wrote most of the initial comments and explanations myself to ensure I fully articulated what my code did. Afterward, I used ChatGPT to grammar and fact-check my work, verifying the accuracy of my descriptions and refining the language for clarity and professionalism. This process was particularly helpful when documenting more complex components, as ChatGPT confirmed my explanations aligned with coding best practices while maintaining readability.
13. Quality Assurance
I frequently relied on ChatGPT to address error fixes, particularly when dealing with issues flagged by ESLint that couldn’t be quickly resolved. By inputting the error messages into ChatGPT, I was able to understand exactly what needed to be done to fix them. This process not only saved time but also helped me learn how to approach similar problems in the future. ChatGPT’s explanations provided clarity on why certain fixes were required, ensuring I applied the solutions effectively and consistently.
14. Other Uses in ICS 314
I believe the previous sections covered all my use cases of AI in ICS 314.
AI tools significantly enhanced my learning experience in ICS 314 by providing immediate feedback, clarifying complex topics and supporting problem-solving. Rather than hindering my ability, AI complimented my efforts to understand concepts more deeply. For example, ChatGPT’s ability to explain code and debug errors reinforced my understanding of foundational principles, such as state management and dynamic routing in React. By using AI tools thoughtfully, I was able to expand my problem-solving capabilities while maintaining an active role in my learning process. This balance between AI assistance and independent effort strengthened my comprehension and skill development, making AI an invaluable resource throughout my educational journey.
Beyond ICS 314, I utilized AI tools in other courses like ICS 481 (Introduction to Computer Graphics) and ICS 486 (Virtual Reality/Augmented Reality (VR/AR). In ICS 481, ChatGPT helped me understand complex concepts, such as scene graph hierarchies and OpenGL rendering techniques. For example, while working on animating a snowman, I used ChatGPT to clarify how to implement hierarchical transformations effectively, which allowed me to achieve smooth and realistic movements. Additionally, I relied on AI to troubleshoot issues with shading and lighting, ensuring my final renders met the project’s technical requirements.
In ICS 486, AI played a pivotal role in the development of VR/AR projects. One key use case was creating an interactive virtual shooting range for Meta Quest 3. ChatGPT assisted me in refining Unity scripts for dynamic object spawning and teleportation mechanics, as well as optimizing spatial sound integration. These AI-driven insights streamlined the development process and allowed me to focus on enhancing user experience and functionality. These experiences demonstrate how AI can bridge academic learning with real-world applications, empowering students to tackle advanced technical challenges with confidence.
One significant challenge with AI was evaluating the accuracy of its responses. Generic or incorrect outputs often required careful verification and adjustment, which could be time-consuming. For instance, while resolving an issue with the navbar during the Aloha Beer Kaka’ako Next.js WOD, ChatGPT repeatedly gave me the same incorrect output, causing a constant loop in troubleshooting. To resolve the issue, I had to create a new chat and reframe my question, which eventually led to a correct solution but added extra time to the process.
Despite challenges like these, AI tools present immense opportunities for personalized learning, fostering creativity and enhancing productivity. With proper integration and guidelines, AI can become a powerful complement to traditional educational methods, empowering students to tackle complex problems effectively.
Traditional teaching methods prioritize foundational understanding and critical thinking, whereas AI tools offer real-time assistance and scalability. Both approaches have unique strengths: traditional methods encourage deeper comprehension, while AI accelerates the learning process and introduces diverse perspectives. My experience in ICS 314 demonstrated that combining these approaches yields the best outcomes, with AI tools complementing the knowledge gained through traditional instruction and enhancing practical skill development.
The future of AI in software engineering education lies in developing intelligent and adaptive tools that cater to individual learning needs. These tools could provide targeted feedback and personalized learning paths, making education more efficient and engaging. Addressing ethical concerns and biases in AI-generated content will be crucial to its successful integration. As AI technology evolves, its role in shaping the future of software engineering education will undoubtedly grow in importance.
Reflecting on my use of AI in ICS 314, I recognize how these tools have reshaped the way I approach learning and problem-solving. AI significantly enhanced my efficiency and understanding, allowing me to tackle challenges with confidence while expanding my skills in software engineering. However, this journey also reinforced the importance of balancing AI reliance with foundational learning and critical thinking.
Personally, I found that AI acted as both a mentor and a collaborator, guiding me through complex tasks while encouraging me to stay actively engaged in the process. For example, troubleshooting errors or validating solutions with AI often deepened my comprehension of the underlying concepts. Moving forward, I plan to continue leveraging AI not as a shortcut, but as a tool to complement my growth as a developer.
To optimize the integration of AI in education, clear guidelines and an emphasis on independent problem-solving will be essential. By using AI responsibly, students can unlock its full potential and build a strong foundation for future success in software engineering and beyond.