Alumni of ChatGPT

07 May 2024

I. Introduction

Artificial intelligence has been integrating itself into society within the recent years, and it has undeniably become a powerful tool at every level. Professionals, educators, students, and many more occupations have benefited from AI. Especially in the field of software engineering, AI has become a “coding assistant” of sorts for many people. Whether AI is being used to write code, check for errors and redundancies, or explain a concept, the potential for AI as an integral part of software engineering seems unlimited. ChatGPT, GitHub Copilot, and Google Gemini have all proved to be useful in creating efficient and interactive projects.

II. Personal Experience with AI:

I have used AI in class this semester in the following areas:

  1. Experience WODs e.g. E18
    To experience and gain the necessary knowledge, I did not rely on AI for the Experience WODs. These WODs are designed to impart the fundamentals of the specified area or skill, so I aimed to engage with the content with minimal assistance to fully comprehend it. If I could not complete the WOD, there were enough resources supplied from the course as well as documentation to help me finish the task.

  2. In-class Practice WODs
    Similar to the experience WODs, I utilized the in-class practice WODs to hone my problem-solving skills under time pressure. These in-class practice WODs didn’t carry any weight in terms of grading; therefore, I saw them as opportunities to solely practice my own skills without relying on AI.

  3. In-class WODs
    For the actual in-class WODs, I felt well prepared due to the experience and practice WODs done prior to the real thing. This allowed for minimal use of AI, which made an appearance one time throughout the WODs. When I decided to employ AI, I used ChatGPT to assist me in WOD: Javascript 3, which involved a database of UH Manoa graduates with their respective degrees and several other metrics regarding them.
    There were two goals: find the average number of graduates that also had awards at the time of graduation; and find the number of graduates with PhDs who were Hawaiian. In order to accomplish this task, I used the Underscore.js library to filter the database, pluck objects with specific properties, and reduce large quantities of data to one value. However, at the time of this WOD, I was not that familiar with Underscore, and looking through the entire library of methods would’ve left me with limited time to write the actual code. This is when I used ChatGPT, which found the methods I needed to finish my code, massively cutting down the total amount of time I spent on the problem.

  4. Essays
    Most of the essays written throughout this course allowed for a creative and personal touch to turn technically heavy concepts into relatable and interesting readings. The use of AI to write entire essays would take away that human touch and leave it as a regurgitation of some Wikipedia article. Thus, I did not employ AI to write essays. Rather, I used ChatGPT to help with making sentences more fluid. This would sometimes prove useful, providing a response that fit better in the theme of the essay. Other times, ChatGPT would provide a block of words that sounded more mechanical than human, which I ended up leaving out. In essence, I used ChatGPT and AI in general minimally in my essays since they would provide unengaging writing.

  5. Final project
    In the final project, I found that the use of AI actually hindered my progress. The project involved a lot of files that interacted with each other, with pages and components reading off of others. This proved to be difficult to pass on to ChatGPT in most cases, as I would have to pass multiple files of code into the AI, on top of figuring out what exactly to ask. For the most part, it seemed easier to look into the code and the web dev console rather than cycling code into ChatGPT.

  6. Learning a concept / tutorial
    When it came to learning a concept or finding some tutorial for a skill, I found it more beneficial to look up the documentation or watch Youtube videos for information. Tutorialspoint, GeeksforGeeks, and StackOverflow have been a reliable source of information for a long time. I also can find more precise answers to questions and concepts when I use sources other than AI. I have found that AI typically gives a broad and general overview of concepts since the response it gives is based on what it is prompted on. If I know the bare minimum about a concept, I wouldn’t be able to provide a question or prompt that would yield useful answers from ChatGPT. However, a basic question on a Google or Youtube search can lead to extensive research, which I find to be more fulfilling.

  7. Answering a question in class or in Discord
    Similar to learning a concept, I didn’t employ AI much when searching for answers to questions posed in class or Discord. A normal Google search proved to be more than sufficient in providing answers. On top of that, since questions were open to the entire class, it was easy to seek solutions from peers who have encountered similar issues or had similar questions.

  8. Asking or answering a smart-question
    Building off of what was said above, having peers who share similar experiences creates an easy-access resource to answers. I didn’t involve myself much on the Discord when it came to asking and answering questions, however I did find myself going to those in my class as well as the professors and teaching assistants instead of AI when I needed assistance.

  9. Coding example e.g. “give an example of using Underscore .pluck”
    A solid example of my use of AI (ChatGPT specifically) is the same example from the WOD topic discussed above. In the code below, I used ChatGPT to look through the Underscore library to find the following methods: .pluck(), .filter(), and .reduce(). With these methods, I was able to write two functions that operated on the given UH Manoa dataset. Picture

  10. Explaining code
    The code I have written, seen, and read within the scope of this course has been realtively simple and easy to understand. The code became a bit harder to understand once we started to implement applications using Meteor and MongoDB, however with some time and effort to read through and test the code I was able to understand what was going on. For this specific topic, I didn’t feel the need to use ChatGPT. However, outside of the scope of the course, I have used ChatGPT to explain code, specifically code realting to data structures and algorithms. This has provided useful explanation as to what is happening, but that is beside this course.

  11. Writing code
    As it was mentioned before, I have used ChatGPT to find methods to implement in my code, but I haven’t used it to write entire code blocks in this course. Similarly to the above statements, outside of the scope of the course, I have used ChatGPT to write algorithms, and the code provided has proved to be efficient and accurately answers the problem statements I have prompted it.

  12. Documenting code
    As for documenting code, I haven’t found the need to use AI to document code. Whether it’s documenting the download, installation, and setup, or leaving comments and summaries about the code and its scalability, I’ve found that writing my own documentation would be sufficient. AI could potentially cause problems with documentation as well, since it could misinterpret the code.

  13. Quality assurance
    Within the scope of this course, I haven’t relied on AI to find errors in my code. Most of the errors and the quality of my code can be fixed through inspecting the terminal for ESLint errors or the web dev tool on Google when applications start to break. Through the use of those tools, I’ve been able to determine and solve the problems that I have encountered. As before, I have used ChatGPT to fix other code outside of this course, mainly for finding issues regarding segmentation faults.

  14. Other uses in ICS 314 not listed above
    Other than the uses listed above, I can’t think of other uses that I could use AI for within the scope of this course.

III. Impact on Learning and Understanding:

AI is a powerful tool that can be utilized for both educational and professional purposes. For software developers, it can be a coding assistant that’s there with you every step of the way. Since the public release of AI powered tools, it has become a major topic of discussion in learning environments.
In my personal experience with AI as an educational tool, I have found it to be a double edged sword. On one hand, artificial intelligence provides an extensive amount of information with ease as well as an abundance of solutions to a variety of problems. It can aid in building an understanding of concepts, showing you how to approach and identify key components in specific problems. On the other hand, relying on AI as an all-knowing resource to solve all your problems can have adverse affects on your actual understanding and skill development, leading to malnourished critical thinking and problem solving skills. Keeping these points in mind, it’s possible to thrive in a learning environment where AI is incorporated. In fact, I would vouch for AI to be implemented more in the educational system, as long as there are best practices that go along with the use of it.
I’ve grown to view AI as just another tool in my developers toolbox, alongside every other skill and tool I have acquired throughout my education.

IV. Practical Applications:

It may go without saying that the continuous development of AI has brought upon a new era of technology, changing our very lifestyle as it evolves. Take the implementation of AI in vehicles. While autonomous vehicles have not been released into public hands, the project/concept has garnered a lot of attention, with a lot of software engineers facing the challenge to build complex systems. Facial recognition software has also evolved, with Face ID becoming a prominent feature in many applications and devices. Even non-playable characters (NPC’s) in video games have become more human-like in their behavior and patterns. Artificial intelligence algorithms in marketing and social media have also provided more personalized user interactions, making media such as Instagram and Meta even more appealing. As it can be seen from just these few applications, AI has a variety of uses and effectiveness in the real-world.

V. Challenges and Opportunities:

While artificial intelligence seems to be limitless, there are challenges that you can encounter when using it. A problem that I have run into while using artifical intelligence was rooted in my own lack of understanding. There’s a saying that I’ve heard regarding computers before, and I believe it to be relevant to AI as well. “Computers are as smart as a boot.” In other words, computers and artificial intelligence are only as smart as you make them. This proves to be a limitation when using AI, since it builds off of the user. However, this limitation may prove to also be a perfect integration of AI into software engineering education, as students can grow alongside artificial intelligence.

VI. Comparative Analysis:

AI-enhanced education versus traditional methods will always clash in the education system. Both provide their own pros and cons, despite AI-driven methods seeming like a clearly better approach. When it comes to class engagement, traditional methods using lecture halls and powerpoints typically leave much to be desired, since most of the time students may find it difficult to stay engaged. AI-driven methods also may not bring much student engagement to the table, however that is not where its strength lies. AI-driven education in software engineering may also provide a form of practical skill development that is not available using traditional methods. Through constant back and forth between a powerful tool such as AI, students could develop real-world skills and learn actual professional development skills, however it would take away from the social and teamwork aspect of software engineering.
Knowledge retention is another aspect to consider when comparing traditional and AI-driven methods of teaching. AI may be perfect for explaining the exact solutions for specific problems, but how much of the fundamentals would you learn from this approach? Would you only learn how to approach the specified problem? Or would AI solutions provide enough insight to grasp the fundamentals? Through traditional methods, students would struggle and learn that way through trial and error, which may be frustrating and stressful but yields results none the less.

VII. Future Considerations:

The future of AI as a whole industry seems to have no limit as to what can be achieved, and incorporating it into software engineering education seems like an inevitability. Organizations and professionals of all levels have began to use AI to develop applications and software, so it would make sense for students to learn how to utilize AI in a practical sense. With future imrovements and advancements in technology, it may be possible to have physical artificial intelligence learning assistants. One form that I could think of are smart glasses. Smart glasses have already been developed, but they could be better, more akin to the Friday AI from Iron Man. These smart glasses or other smart accessories could make the incorporation of AI in software engineering even more fluid, allowing students and educators to communicate seamlessly between each other.

VIII. Conclusion:

Software engineering has and will continue to evolve as long as there are problems to be solved and people to solve them. With the help of AI, current software engineering challenges may become trivial in the future, especially as AI evolves to tackle more complex issues. However, the current state of AI should be used in moderation, since it is not a cure-all to all of our software engineering problems. If the education system adopts a more opened minded approach in letting AI become a more prominent and integral feature in teaching the youths, then we can expect the future generations of software engineers to be fluent in utilizing AI to produce meaningful and effective applications.