AI's impact on learning and software engineering

01 May 2024

I. Introduction

Throughout the semester, I’ve had the opportunity to engage with AI-powered tools in different aspects of software development. From decoding errors to explaining complex concepts, AI has been a helpful tool to deepen my understanding of software engineering. In this essay, I’ll explore how AI has changed my approach to problem-solving, deepened my understanding of software engineering principles, and helped me to apply newfound knowledge in coding projects.

II. Personal Experience with AI:

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

  1. Experience WODs e.g. E18

    I used ChatGPT at the beginning of the semester to assist in experiences to explain what parts of code are doing or if I got stuck on something that didn’t justify a smart question. An example of this would be a syntax issue because it was my first time doing html and javascript. After a few weeks I stopped using it on experiences because I had become more comfortable with the languages and didn’t need it.

  2. In-class Practice WODs

    I tried to use ChatGPT in the practice WODs however I found it less effective than just following the steps with the hints in the instructions.

  3. In-class WODs

    I used ChatGPT 2 times in the WODs during the html and bootstrap WODs due to running out of time and trying to finish before the DNF. Both times I was near the end and stuck on a formatting/styling issue. I would follow the hints in the instructions, so my prompt was along the lines of “I am trying to style (thing) with (hint code)” then paste in my code where the issue is. The AI found the issue and explained it and corrected it both times. The other WODs I completed without the assistance of AI.

  4. Essays

    I used ChatGPT to help write the design patterns essay because I was running out of time at the end of the semester. However, I wrote other essays with minimal AI use. The usage it did have would be where I couldn’t word a sentence right and I would ask it to reword my sentence then adjust it after.

  5. Final project

    I used ChatGPT quite a few times in the final project. I found it useful for setting up Prototypes quickly and styling questions. It was also helpful explaining the FullCalendar plugin and figuring out syntax issues on the onClick function for the calendar events.

  6. Learning a concept / tutorial

    I found ChatGPT useful for explaining why styling isn’t working in a html/bootstrap code. It also was useful explaining what each underscore function was doing with the exact data you had rather than an arbitrary example.

  7. Answering a question in class or in Discord

    I didn’t find AI useful in answering questions in class or Discord because the professor/other students had the answer.

  8. Asking or answering a smart-question

    I didn’t find AI useful with smart-questions. I was somewhat active in the smart question channel, and I think the best way to troubleshoot is by running it and working from the error messages.

  9. Coding example e.g. “give an example of using Underscore .pluck”

    I found ChatGPT useful for the beginning of underscore when learning the library. It was helpful to find what functions would be useful for the proposed functionality when I was unfamiliar with functional programming.

  10. Explaining code

    ChatGPT is helpful for syntax explanations and if you provide it with code and an intention it can normally point you to where the issue is in the code.

  11. Writing code

    I didn’t use AI to write large blocks of code, but I would use it to fix single line errors or fix syntax from code that I already wrote. This is because AI tends to write code that doesn’t work if it is too broad. I think it is especially bad when it comes to meteor because there is relevant stuff in other files that might come into play.

  12. Documenting code

    I didn’t use AI to document my code, I always write comments where I feel necessary to specify how it is working. (incase I forgot why I did something)

  13. Quality assurance

    I didn’t use AI to quality assure any code. I would just run the code myself because I like to know for sure it works.

  14. Other uses in ICS 314 not listed above

    I didn’t use AI for other uses not listed above.

III. Impact on Learning and Understanding:

For this class AI incorporation has been beneficial to my ability to approach issues, the speed at which I can complete assignments, and my general understanding of web applications. The most straightforward approach to using AI in software engineering for me was to program normally without AI, but if I ran into an error I didn’t understand, then I would send the code and the error message to ChatGPT to see where and what to look for in the code. I would say this is a strictly positive interaction with AI because it is essentially googling the problem or asking someone who knows what the error means what they think is wrong and then potentially explaining why it’s wrong and where to fix it. This cuts down on the amount of time spent googling error messages and makes for a more enjoyable quicker experience. The other benefits, improving my ability to approach issues and my general understanding of web applications, are a little less straightforward and reliable than the former. The approach I used with AI in this sense was when I would be programming and the output wouldn’t be right, but I couldn’t figure out why. The prompts would be something like “I am expecting X to happen when Y occurs and it has A, B, C data.” There would be two types of responses that I thought really helped me understand the programs better. First being a list of things that would be used to debug the code. This seems really simple but after a few times of that same list of debugging steps I was able to apply that knowledge in future instances where I ran into unexpected outputs. The second type of response that I found helpful would be when the AI explained what each line of the code was doing with the data it had. It was especially helpful when it was my first few times using a library.

IV. Practical Applications:

I am not familiar with any specific examples of AI being used to code for a particular project. However, with my experience with AI, I don’t think it is currently the most effective approach to software development in terms of code development because there are a lot of factors to consider in approaches and code implementation, which if you knew what to consider then you wouldn’t need the AI except for a way to organize the ideas.

V. Challenges and Opportunities:

The limitations of AI, from my personal experience, are twofold. First off, if the request is too complicated then it may or may not generate working code. (This is the most obvious example) The second aspect is not a fault with AI but with how it could be abused by students. For a large portion of the assignments of this semester they could probably be done with AI with minimal thought going into what or why the AI is doing things. This potentially could lead to lack of understanding of what is being done which ultimately undermines the purpose of taking this course, to learn. I think showing examples of how AI can help you break down and explain code or ask it about what error messages mean could foster a better integration of AI within this course.

VI. Comparative Analysis:

Traditional teaching methods such as lecturing in class with homework based on what was talked about in class can be enhanced and hurt by AI. One of the major upsides to using tools like AI is that you can sort of bridge a gap of knowledge needed to complete a task that you might not be able to do without the tools, but after completing the task, you learn from the parts you couldn’t do and develop your current abilities further. This can make classwork more exciting and interesting to people, but it can also be taken advantage of to do more than just the parts of the task that the student cannot due, which would be counterproductive to the goal of learning. The main detriments of AI in learning are due to students’ lack of motivation for their field which causes them to overuse AI because they don’t care and/or don’t want to learn the material.

VII. Future Considerations:

AI will definitely play a big role in software education for the foreseeable future, especially with a class that has a reverse classroom or remote learning. One of the major benefits of in person learning is having the teacher right there to answer any questions that you might have about the topics. However, with learning happening when the teacher is not around, it is inconvenient to wait for a response from the teacher or another source when you can just ask an AI what the problem you are having is. The main challenge would be potential for students to take advantage of the powerful software as stated throughout this essay. The main area for improvement would be its accuracy and expressing how confident it is in its answer.

VIII. Conclusion:

AI is one of the most powerful tools for a software engineer. Between the speed ups it offers by writing redundant code for you, or asking it to explain why a specific error is occurring, AI is like having an extra set of eyes on your project. This can help in developing your proficiency in coding by learning from the guidance the AI provides you, or it can become a crutch that will eventually fail you after you have become reliant on it. Ultimately, the outcome is up to the user, but there are a few things that can be done to foster a better relationship between AI and the classroom. Give examples on how AI can help you just using the answer, have specific non AI tasks in the course, and focus on learning objective rather than outcome.