Analyzing The AI Experience
07 May 2024
I. Introduction
Throughout our time in the Software Engineering course, we learned many skills, one of them that was not directly taught but was something I think I and a lot of other classmates picked up on was the help and use of AI. AI has been a great tool to use throughout the class. Throughout this essay, I will talk about my personal use of AI, and it’s huge potential impact on software engineering learning and industry. A note is that I will mainly refer to AI software ChatGPT specifically version 3.5 when speaking about my experience with the technology. That is simply because it is the only one I used for this course.
II. Personal Experience with AI:
I have used AI in class this semester in the following areas:
- Experience WODs e.g. E18
- From memory, I do not remember using ChatGPT for an experience WOD. The reason is that we have screencasts going over the solutions for the WODs that we can reference later. The only way that I see myself referring to ChatGPT is if there is a problem starting the assignment. ie with Node.js or errors that were not present in the videos.
- In-class Practice WODs
- For in-class practice WODs, since most of it was collaborative I asked the people at my table for help before resorting to ChatGPT. But if for some reason I didn’t ask if they could not help me, I would ask ChatGPT. What I noticed while reflecting is that I would run into the same mistake as my in-class grade WODs. I would have spelling mistakes that would make my code not run that I had a hard time seeing.
- In-class WODs
- I would use it during the in-class WODs aswell. The screencasts were very successful in preparing me for the in-class WODs which is why I didn’t have many errors in my code that I couldn’t fix. The time I used ChatGPT to help me in WODs was when I believed that my code should compile but it didn’t. There is a syntax error that is not being picked up by ESLint or there is a logical error I made. When I would call ChatGPT for help my mistakes were spelling in my function calls. My careless mistakes like that are what would make my code not run and AI could instantly see it. It would take more time than it should for me to notice something small like that, and I think that is what AI is good for. They can notice the micro better while we can manage the macro.
- Essays
- For essays, I used AI to help me come up with enticing titles for them but nothing more than that. An example is in the essay “Uncovering the Power of Design Patterns in Software Engineering” which was partly a suggestion by ChatGPT. I honestly would recommend using it as a starting point for an eye-catching title. I find all the titles it attempts to be too corny for my taste. Also, your title should reflect what your talking points are in your essay. Simply feeding the prompt for a title doesn’t work well.
- Final project
- While working on the final project, AI has been extremely helpful in most of my pages and testcafe work. With my pages, certain functionalities were more complex than what I was able to accomplish. For example, in our Resources Page, we have a list of different species, and we wanted to be able to sort by name. Implementing the form to take in string input was not that hard, what made it difficult was having it work in sync with the MongoDB collection to update the cards as input was being fed. In this instance, I had to call ChatGPT to help figure out how to implement this. Also, I did not give myself what I wanted immediately. I had to go through multiple iterations of the code, what is important when helping AI is that you also have to understand what the code is doing to point out where you want to see changes. It would make the process much smoother.
- Learning a concept/tutorial
- I used it for the final project for understanding testcafe. A good example is the testController variable had many different methods to call on and I used it to learn about when to use each one. Another example from the final project was understanding the SweetAlerts package. I used ChatGPT to help me identify how it works and for example how to automatically close the form complete alert as it was interfering with my testcafe. It was very helpful in that sense. There are certain scenarios that the screencast didn’t go over that I had to figure out.
- Answering a question in class or Discord
- During this class, I never answered a question in the smart-questions channel or answered one in class so I cannot write about my use of AI in this aspect.
- Asking or answering a smart question
- In the class, I did not ask or attempt to answer other’s smart questions. I also think if you are reaching out to others for smart questions you are not looking for the answers from AI but from professors or other students. I think you can feed prompts and get an immediate response back. That is why the Professors recommend trying to figure out your issue and understand where your problem is. Then you can ask AI to help and if you don’t get the answer there you ask a smart question.
- Coding example e.g. “Give an example of using Underscore .pluck”
- I did not use AI to give coding examples. Most of the time I would request an example of an issue in my code that I have. So instead of asking for an example, I would ask it to look at my specific issue instead.
- Explaining code
- I would use ChatGPT to explain code that most of the time was already there before I got to interact with it. It is good to understand what a file does before you mess with it as it is better for error handling when things go wrong. An example is with the use of MongoDB collections in the final project as I don’t understand what is happening in the project. Also with big prototypes and variable handling, I was confused online onChange and handleTypeChange variables based on user interaction I got the idea of them through ChatGPT.
- Writing code
- ChatGPT was extremely helpful in moments when I got stuck on certain parts of WODs and in the group project. For example, like how I mentioned in the section for the final project, the search functionality was completely written by ChatGPT. I think I could’ve written it myself but with how difficult the task seemed to be I could’t see myself doing it. After, I analyzed what ChatGPT wrote and was able to learn what it did for myself.
- Documenting code
- To be honest, I never thought of using AI in that way to be able to store a document code. That would seem like a useful place to access code. If you have code documented you can easily modify it with prompts, have it explain what it does, and ask questions to get a better understanding of it. However, if you have your code documented in AI software, chances are you also have it on your system or GitHub so that is why I never utilized this aspect of AI software.
- Quality assurance
- I would sometimes use AI to assume that my code is of quality. But the way I am with coding is that either I am confident in my solution or my code doesn’t work. This is perhaps a bad thing as I could introduce some new bugs into my code or since it is not optimal I am wasting time or space. So I think that quality assurance is a good idea to use with AI and something I should implement more with my coding.
14.Other uses in ICS 314 not listed above
- I think these topics showed my use of AI in this class this semester as there are no other areas I can think of.
III. Impact on Learning and Understanding:
To use AI as a learning tool you must look at it as one in the first place. If students look at it as a place for the solution instead of the process they might reap the short-term benefits of the solution but not the long term of getting there. This is something I currently struggle with. It is easy to input a prompt and then scroll down to the code, copy and paste it. But that ruins the learning aspect of it. I don’t see AI challenging your understanding of software engineering concepts, I see yourself hindering your learning just like anything else in life. AI technologies in my opinion can only enhance your understanding if you allow it to. Off of a single prompt, it wouldn’t do that so continually asking questions just like talking to your professor is the way to learn from it. We also have other AI technologies like Co-pilot in IDEs that will write code for you. I don’t see this as a good learning tool. One of the guest speakers who came to the class was able to build a program just using Copilot software but failed to show that the user has a good understanding of programming knowledge, concepts, and theory. This is something to be very important later on in your career.
IV. Practical Applications:
Practically AI is a good resource for everything. A way to look at the information AI produces is a more concise Google search as it pulls the information from the internet but combines it into a readable answer to give to you. It also can answer any follow-up questions you have. Make sure to follow it as a guide and help but not the definite truth. What we have as humans is more rational thought, I am sure if someone lived their whole life based on ChatGPT they would not be happy. AI has been used in real-world communications for work emails and discussions. Again it is an effective tool for users to push them a little further in their tasks when they are stuck on information. We also have other AI technologies like Co-pilot in IDEs that will write code for you. I
V. Challenges and Opportunities:
There are many limitations with AI that we noticed. Of course, AI can’t read your mind (yet), so feeding it prompts for a specific task can make it hard to get the solution you want. What I have noticed is that once it is set on a solution, trying to reword your prompt usually fails. You have to go about it in a completely different way. I think the use of AI in this software engineering class was very good, students shouldn’t rely on it to pass the class as long as they follow all of the supplementary material for the WODs. I do see a future where there is a full module on using AI in software engineering instead of a discussion topic to just talk and write about. I believe that this will be a good skill to be able to use AI to its fullest potential.
VI. Comparative Analysis:
The comparison between traditional teaching and AI-enhanced approaches for software engineering shouldn’t be made. Both of them have pros and cons to each other that other people might find beneficial but others will not. But overall, having problems to solve by working it out and doing it yourself is the best way to learn any concept, not just software engineering. I still believe that traditional teaching is the best method. I think learning from AI models just feels like a glorified textbook. All it is is reading and analyzing. A good example is personal projects. If you learned how to do it through AI sure it would have a good final project but you may not understand how everything works. By building it yourself you can get stuck and figure out every line of code in your project. This can help later in the future as for job interviews if a recruiter asks about any part of the project you are ready to answer because you know it like the back of your hand. But AI is good for little learning. How does this function work, no different than the official documentation in the book or the site because that is where it is pulling that information from. In terms of attention, interaction is just more stimulating for the brain as you are actively working out these problems.
VII. Future Considerations:
Currently, right now we are seeing some of the negative effects of AI. Students are cheating on exams with it, writing false papers, and even just straight plagiarizing other’s work through it. Some AI detectors can spot when it is used but potential advancements in AI could make it undetectable. The hard part about learning from AI is that it will take multiple prompts to fully understand everything. In software engineering education AI is going nowhere and will continue to get better. I am sure that most AI can solve intro to CS homework already, which is detrimental to the student’s learning. Schools shouldn’t restrict access to AI as it won’t solve the core problem, we have to educate the good use of AI to prompt better writing and learning.
VIII. Conclusion:
Something not from this class but comes from Professor Sitchinava who teaches ICS 311 here at Manoa says that having a good understanding of theory and concepts will be extremely helpful in getting a job with the future. That is something I have been thinking about this entire semester and I agree with him. Especially with the growth of software engineering and AI technologies to help. Almost anyone can build these projects without actually writing a single line of code. I think when you encounter real-life scenarios those fundamentals will be the difference maker. AI might not be able to critically think as we do, but we can solve them. I mentioned it previously but AI is close to perfect at the micro. For example, managing data, and calculations, all one step at a time. What we can use AI for is the micro to help fuel our larger ideas and projects which I think is something to be excited for.