In almost all of my classes, there has been a new clause added under academic dishonesty called AI usage. Under this section, it states something to the effect of “Students are not permitted to use generative AI applications to generate course materials or assignments.” However, ICS 314 is different. The use of AI is encouraged to some extent. In a lot of assignments and even WODs, we are often asked to reflect on how or if we used AI and how it helped us troubleshoot any problems we ran into. ICS 314 is an intro to software engineering course so the implications of using AI means that you can sometimes find new ways to program that may (in some cases) be better than the way you know. Some quick examples of ways I was encouraged to use AI was to sometimes write code, troubleshoot issues with my terminal, or even just look up simple definitions for terms I might be unfamiliar with.
I personally found AI quite helpful in some scenarios. Sometimes, I would be stumped on a homework assignment and turn to ChatGPT to see how the application would build a simple program for just a baseline of what I might be missing, or even see what I needed to do if I didn’t understand the assignment at all. Sometimes, it would be really helpful in guiding me in the right direction, but there were other times where it gave me something so complex that it wasn’t even worth asking for help then. I remember in the Jamba Juice menu implementation, I used ChatGPT to try and help me create new classes just to see if there was an easier way to do it, but it just confused me more and the video provided by my instructors ended up being far more helpful. There were times when no video was provided, and ChatGPT would be somewhat helpful for at least figuring out a structure to work off of.
Our in class practice WODs were to prepare us for our in class regular WODs. This is where you could make all the mistakes possible and hopefully learn from them for the regular WOD. I seldom ever used any AI here because I felt like this was the time to fail and not understand what I was doing without trying to use AI as a scapegoat.
For in class WODs, I did end up using ChatGPT for our Buzz’s WOD. The first one had instructions that I didn’t quite understand so I tried using ChatGPT and found it to be very unhelpful. I remember that WOD clear as day because I did everything else but the nav bar correctly and that was the reason I failed that WOD. I couldn’t figure out how to format the nav bar within a style.html file so that it was some kind of gradient blue color. The worst thing was that the instructions to do that was included within the instructions to complete the WOD, I just didn’t understand it and ChatGPT did not point me in the right direction.
Writing essays in this class never required me to call upon ChatGPT. I think writing has always been something I have been pretty good at doing on my own and I never found myself asking any AI to generate an essay for me because I like my writing and ideas to be organic and personal to me only.
Our final project posed many issues, but I will only find myself referring to past assignments I did to support or give off some framework to work off of. Because the final project is also in teams, I have the added support from group members to ask questions or bounce ideas off to come up with the best solutions to better the project.
The was ICS 314 works is as a flipped classroom experience. Material would be posted and we were to go through screen casts to figure out how to do certain things and understand new concepts. For any tutorials, I referred to the resource given out at the beginning of the semester called Free Code Camp. I never needed AI as a resource because I found the screen casts and lecture materials posted to be enough information for me to understand concepts.
Sometimes in class, our professor will give interactive lectures on material we may not have exactly had a chance to explore as much. During these lectures, I would sometimes open up ChatGPT and ask questions like what is a data structure or what is the difference between JavaScript and Java. ChatGPT would usually generate answers with helpful information that would then supplement what was being discussed in class.
In our class discord, there is a section called smart-questions where students can ask or answer any questions regarding troubleshooting issues we run into while doing homework assignments. I try my best not to ask questions here because I like to be an independent learner, but there have been times where I used ChatGPT and couldn’t solve the issue so I resorted to asking in the smart-questions section. One example is when Meteor and MongoDB were first introduced, a lot of students including myself were running into issues with installation. I remember exhausting ChatGPT with a million questions of how to fix error messages my terminal would give me after trying multiple times to install MongoDB. I personally found the help of TAs and other students more helpful than ChatGPT in this scenario because they gave me advice based on experience so they may have encountered some of the same issues I was having.
While being introduced to and exploring the underscore library, I would often ask ChatGPT how I would the implication look like in a code. In many cases, it was a specific example and often seeing the example of usage would help me make more sense of things. The underscore library contained many examples so although ChatGPT was helpful, the similar examples could often be found in that library.
A big thing that we were encouraged to do is write explanations for code so we can troubleshoot and see where we went wrong along the way. I never thought to use ChatGPT or any AI for this portion because I felt it would be too robotic of an explanation and just explaining it in my own words would help it make more sense.
The only time I asked ChatGPT to ever straight up write code for me was when I was just exploring the Fibonacci sequence. It was briefly referred to during a short in class lecture so I wanted to explore it and asked ChatGPT “write the fibonacci sequence code in JavaScript”. After exploring how it was written, it made sense why it’s referenced a lot in many ICS classes. It has a lot of fundamentals within it making it a great resource to understand certain base level concepts.
Documenting code was something I admittedly did not do much. I never explored the option of having AI document my code for me because I seldom did it myself. Although it would’ve made it easier in some situations to see where it all went wrong, I never thought to document a lot of what I was doing and surely never asked AI to document anything as well.
Quality assurance was something I struggled with a lot. I would often get error messages because something went wrong and I’d turn to ChatGPT and would ask “How to fix this error: *insert error message here” and it would pop up a step by step solution to my issue. Sometimes this would work, but other times it was not helpful at all. For any “typos” that didn’t affect the program, I would just use ESLint to find those errors and manually fix them instead of asking AI to fix it for me.
Outside of this extensive list, I cannot think of any other times I have used AI for troubleshooting. Most of the problem solving happened when I asked other people. If anything, using AI helped me to realize that people are the best resource to resolving issues because I am most likely not the first one to run into the issue so finding the right person for help can make the solution so much more simple.
In all, I think AI had a positive impact on my journey through ICS 314. There were times where I had to learn the hard way that AI is not as useful as asking another human being, but there were also times where it was. I don’t believe AI hindered my learning of any sort because it allowed me to explore more ways of doing things. Had I solely relied on AI to do everything for me in this class, I can see how it’s hindering my learning and understanding, but when used as a resource to ask simple questions and find some solutions to, it can be helpful since google sometimes doesn’t have an exact solution to all questions.
In the real world, I can see how AI could be applied to help people. We can use AI to generate ideas for us, create some visuals to better put our ideas into reality, and even just jumpstart minds into more creative thinking. AI can be useful in the sense that it is a good starting point, but should not be used as a do-all solution, especially to large problems. We’ve all heard horror stories with lawyers using AI only for it to generate a made-up case they refer to, but we’ve also seen successes in my own ICS 314 class where AI helped them create logos and visuals to help them turn ideas into a reality.
Within ICS 314, I often faced challenges while using AI, specifically ChatGPT. I felt there were many times I used AI but could’ve just asked for help from a peer and the AI answer just wasted my time. I think there is a limit on what to ask a computer versus a person. We shouldn’t draw a hard “no” on AI usage, but there should be some guidelines because it sometimes was hindering more than it was helpful. In software engineering education, I think it is so important that AI is allowed. Let students make mistakes that lead to discoveries. I like what one fellow classmate said: “Using AI isn’t cheating, you’re finding the most efficient solution to make your life easier. That shouldn’t be penalized.” Software engineering is all about finding the right solution to make your life easier. It doesn’t matter if the idea is your idea or someone else’s. As long as you understand the concepts, you should be allowed to get different perspectives and ways to do things.
Teachings are only as good as the teacher, in the same way AI is only as good as the “brain” it uses. The only difference here is humans are more authentic. We have life experiences that can make our knowledge more personal and applicable. While AI is good at solving simple problems, often times we just need to sit down and talk to someone who went through a similar issue to find the best solution that doesn’t take hours to troubleshoot because a computer cannot have the same conversations humans can have. A computer doesn’t know when you understand something, but a teacher can often gage students better and see where they’re at. AI might be good at developing ideas, but building skill is up to the student. How a student uses their provided resources is how much they’ll get out of both a teacher or a computer.
AI in software engineering education should continue. How it is used may have some limitations like don’t just copy paste a code without understanding it, but a student’s education is really what they make of it. If a student wants to sit behind a screen an copy paste codes generated by AI, that’s what they’ll learn. If a student wants to take the time and actually learn what they’re copy pasting, they’ll build more technical skill and understanding. As AI grows in popularity, I think it will be interesting to see how future students use it and which areas they’ll find it most useful in. I think ICS 314 does a great job of exploring AI and encouraging that exploration. It’s great to use it as a resource, but not a sole resource that a student depends on.
AI can be helpful, depending how it is used. I enjoyed ICS 314 not banning the use of it as it was refreshing to be able to see what a computer could come up with in some situations. It was great to be encouraged to use AI as a resource and compare how valid the information was from there to what we learned and AI should definitely have a seat at the table with its growing popularity. At the end of the day, people will use AI how they see fit. Though we cannot control that, AI will only benefit those who use it to build onto skills rather than be the brain for them.