
The use of artificial intelligence in the classroom has increased throughout the years. It can be used as a tool that can write simple code, or explain complex code. In ICS 314, these AI tools were a large part of my success in the course. For example, I used ChatGPT to explain Javascript and Typescript concepts that I did not have a solid understanding of. I also used it to generate simple code to help speed up the rate at which I write code. I’ve also used other AI models such as Claude and Github Copilot with varying degrees of success in ICS 314. Generally though, I like to avoid using AI as much as possible to ensure that I understand what is actually going on in the class. I also thought that it wasn’t the greatest idea to rely on it to do all the work, since AI models still make mistakes and aren’t perfect.
For experience WODs (Workouts of the Day) I thought it was important to not use artificial intelligence to write the code for me as much as possible. This is because these WODs were mainly used to teach the material outside of class and I knew that if I were to use AI to write my code for me, I would end up struggling in the in-class WODs which were graded much more harshly. I did end up using AI from time to time to explain the code that I was writing, as I did not understand what it was doing at first. I think that this is probably the best way to use AI when learning, because it allows you to digest more complex topics easier.
Similar to the experience WODs, I also tried to avoid using AI as much as possible for the same reasons. However, towards the end of the course I also started to use it to read documentation for me. This is because toward the end of the in-class practice WODs we started to replicate websites and I needed to know how to create certain parts such as the Navigation Bar. So instead of pouring time trying to read the documentation and understand all that was going on, I just had ChatGPT do it for me so I could quickly figure out what I needed to do.
For each of the in-class WODs, I always had a separate tab with ChatGPT on in. This is because I wanted to be prepared in case I had to ask it to help me write something. However, I never just took the prompt and just copy-pasta-ed it into ChatGPT. Instead I would only use it if something wasn’t working the way I thought it would and I would copy-paste my code into the model and ask why it wasn’t working. For example, we had one in-class WOD about functional programming, and I could not get the reduce function to work the way I wanted it to. So I just copy-pasted what I had into ChatGPT to explain what was wrong so I could fix it.
I often find myself using AI for inspiration on how to start an essay. This is because I often find that starting the essay is the hardest part for me. Once I can get into the groove of it, I can finish the essay. So I like to copy-paste the prompt of my essays into ChatGPT just to see what it likes to spit out, so that I have some sort of a template that I can use to start my essay. I also like to use it to set up an outline for my essay at times.
I found myself using AI a LOT for the final project in ICS 314. This is because we had to create our own functioning website, and we wanted to implement features that we did not have learned in class. For example, I wanted to create a way to implement user uploaded images. But to do this I needed to encode the image in base64 so that I could store it in the database. So I had to prompt Github Copilot a LOT to figure out how to do this.
I think throughout this ICS 314 course, I’ve only used AI once as a tutorial. I’ve used it many times to get a better understanding of concepts that I didn’t understand, like I’ve stated above. However, I only recall using AI once to give me a tutorial on how to create the button for a collapsed Navbar. I could not, for the life of me, figure out how to do it. I looked at the documentation along with the example provided in the documentation and just could not figure out how to do it. So I had to ask ChatGPT / Copilot how to do it, to which ChatGPT gave me a step-by-step tutorial on how to implement it.
There were a lot of times that I used AI to answer a question in class. The way our ICS class was structured, was that Professor Port would have a little discussion thingy about what we were learning, which would take around half an hour. He would have questions set up for us to answer, and most of the time I couldn’t answer so I would look it up.
Honestly, the idea of using ChatGPT to answer a smart-question never crossed my mind. If I was unsure of something that was happening in class, I would ask my friends in the class first. If they weren’t sure, I turned to the #smart-questions channel in the class discord to see if someone else happened to be in the same situation. And if that didn’t work I would just go and contact Professor Port.
I only asked ChatGPT to give me a coding example once. This was for the functional programming warm up assignment. This was because I was trying to understand what each function did, but I found the examples given somewhat boring, so I asked ChatGPT to explain it using characters from cartoons like Spongebob.
I asked Github Copilot to explain code a lot during the development of the final project. This was because I was not super familiar with the template we were building our project out of. I understood most of it, but there were some parts that I did not understand. I used it to explain the sample code provided for slugs in Vercel, so that I could implement it in my own project.
Using Github Copilot to write code was something that occurred during the duration of my final project. I used it to generate sample data to populate my database, because I found that to be a tedious process. I felt like I shouldn’t waste my time writing sample data when I could be improving other parts of my code.
Truth be told, I don’t comment on my code that much. (I know it’s not the best, but I get lazy with it. I’m working on it okay.) So I haven’t used AI to comment on my code. I do think that using AI to comment my code makes sense though since it is something sort of tedious to do. I will probably just need to read through the comments to make sure it isn’t hallucinating something.
I never had to use AI to fix problems with coding standards. This is because I found that it was easier to just highlight all my code in VSCode with Ctrl+A, then fixing all the ESLint errors in my code with Alt+Shift+F. If there were still errors that remained, they were easy to fix, because I had an extension in VSCode installed that made errors easier to see. Instead of having to hover over the read squiggly lines to see the error, it comments the error.
I think all the uses for AI in ICS 314 were listed above.
Overall, I think that AI had a positive impact on my learning experience. I think this was because I tried to not to rely on it, and used it as a tool to supplement my learning instead of having it do everything for me. This was apparent in the later WODs of the class. I noticed that some people who did the first couple of WODs really fast, start to do them more slowly in the ones that come later in the class because they couldn’t just copy-pasta the prompt into ChatGPT and get the answer. I think that it is fine to use AI technologies when doing software engineering, it is just that we cannot be too reliant on it, as it is not at the point where it is perfect.
I think that AI has many practical applications outside of the classroom. I think that traditional AI (using AI to find patterns) has many applications in the data science field. Personally, I want to create an AI model that can offer insight into people that I can draft for fantasy football, because I do not know ball. (I think I’m at 100+ transactions in my league right now, because I don’t know what I’m doing). But I think that generative AI has even more potential, since it can be used to create and fix issues that we might be having, which is more than just offering insight into some data. For example, with the introduction of an AI model like Devin, companies now have something else that they can use to write code instead of just computer programmers.
I think one of the biggest limitations that AI has at the moment is that it cannot do super complex tasks at a level that is acceptable, in my opinion. I feel that at this current time, AI is able to write and explain simple code at a near perfect level. However, if you had it create a complex algorithm from scratch, the code that it writes will have a lot of errors. I believe that these problems are only problems because the AI models simply do not have enough data to train the models for these situations, or in other words the AI models haven’t had enough time to grow yet. These problems should solve themselves in the near future. I predict that AI should see more integration in software engineering education, because it is such a good tool that we can use. For example, we can look to the AI for answers instead of having to set aside time to meet with someone to ask questions. It is like we have a 24/7 help line.
I think that AI-enhanced approaches in software engineering education are better than traditional teaching methods. That is not to say that we can just discard traditional teaching methods, but I do think that having an AI to assist your learning can be extremely beneficial. It is just that we cannot be overly reliant on AI. It should be used to supplement learning and not replace the learning being done. Using AI can definitely increase your engagement with learning as it can make it more fun, however, I do think that it can reduce the knowledge retention and practical skill development if we always look to the AI to explain and write it out for us instead of doing it ourselves.
I think that one of the challenges of having AI in software engineering education is that people can start to become lazy and just start to rely on having the AI model do everything for them. I also think that since AI is not at a point where it can do complex tasks super well, we should also try to limit our AI use to just doing simple mundane tasks. This allows us to speed up the software engineering process, while still allowing students a chance to learn.
I think that AI will continue to be used in software engineering education whether we like it or not. Because it is so easily accessible, even if teachers were to limit the use of it, students will still find ways to use it in their assignments. I believe that the professors for my ICS 314 class are approaching this problem the right way, by encouraging us to use these tools, but also document how we are using them. I would recommend that the professors look for ways to ensure that students are learning and not just relying on AI to completely do the job for them, by constructing carefully made tasks that require you to demonstrate your knowledge and cannot just be copy-pasted into an AI model for the answer.