With the rise of Artificial Intelligence (AI), writing code has become a lot easier as entire websites can be built by entering just a single prompt. While this has many implications, particularily the looming threat of AI replacing software engineering jobs, I believe it is quite far from causing the extinction of human software engineers. Instead, AI is better used as a productive learning tool. In my Software Engineering class (ICS 314), we were encouraged to experience AI in different ways to learn how to use AI as a tool to further our education. I mainly used ChatGPT and sometimes Copilot.
Here is a breakdown of how I utilized (or did not utilize) AI in 314
Experience WODs I did not use AI for the experience WODs because if I was stuck, I could watch the instructor’s video solution. The only times I would use AI would be to help explain some code or a concept.
In-class Practice WODs I did not use AI for the practice WODs because I wanted to attempt the WODs on my own to develop my problem solving skills and did not want to rely on AI as a crutch. If I could complete the practice WOD without AI, I would be confident doing the real WOD since I have the option of using AI on top of my knowledge.
In-class WODs For a large number of the WODs, I did not use AI because I wanted to test myself to ensure that I fully grasped the concepts. However, I started using AI when the WODs became centered around styling a page. I especially had trouble during the first few WODs that dealt with React since I was not yet acquainted with its weird HTML + JavaScript syntax. I found myself asking the age-old question “how do I center a div?” trying to get text to appear in the middle of a page. The result was not very clean but at least it got me through the WOD.
Essays I did not utilize AI for writing essays because I find that AI-generated writing is very monotonous, which is expected from something artificially generated. Most of the essays are also based around my thoughts and reflections which is a topic only I can accurately write about.
Final project I attempted to use AI to create some pages for our site but it often created more issues and I found it harder to modify compared to referencing past homeworks.
Learning a concept / tutorial Learning concepts is my favorite way to use AI. I often used AI to explain new concepts that seemed confusing to me. For example, using React TypeScript was difficult at first because of the way it combines HTML and TypeScript but having ChatGPT explain and provide examples helped me understand.
Answering a question in class or in Discord I did not use AI to answer class or Discord questions because it would often be explained by the instructor or a classmate.
Asking or answering a smart-question I did not use AI because most of my questions were answered by people on StackOverflow.
Coding example I use AI a lot for coding examples since it helps me visualize a concept in code. For example, I was confused with arrow function syntax in JavaScript but after asking ChatGPT for some examples, I gained a better understanding of how to use them.
Explaining code For the most part, I did not need to use AI to help explain code since the class mainly uses TypeScript/JavaScript, which has pretty readable syntax compared to other languages. I only needed code explanations when I ask AI to generate code and could not understand what certain parts did.
Writing code Copilot automatically generates and suggests code which I usually accept to save time. Other than Copilot’s suggestions, I do not often specifically ask it to write code except to provide an example but I often rewrote the code myself to get a better understanding of how it works and to conform with standards such as ESLint.
Documenting code I did not use AI to specifically document my code since I believe that if I wrote my own code, I should be able to understand and summarize it. Code snippets generated by AI often already contain comments which I keep so that I can learn and understand the purpose of the code.
Quality assurance I often used AI to help with quality assurance when VSCode does not provide a quick fix option. I would occasionally encounter ESLint errors that don’t have a quick fix option so I use Copilot to help search for the issue, which provides mixed results.
Overall I think AI has greatly benefitted my learning because it provided an easy access to answers for any questions that I might have. While other sites like StackOverflow are great for providing answers as well, a pro of AI is that it is more personalized as I can ask it to simplify its explanation and provide analogies.
At its current state, I think AI is a great tool to help software engineers address real-world problems, but still it still has major flaws that prevent it from being as effective as it can. AI struggles with more complex problems, especially math, and also sometimes has difficulty following any restrictions given in the prompt.
A challenge I found with AI was that I needed to provide enough context to my problem or else it will generate code that is not quite what I am looking for. Integrating AI into education can be a challenge due to the fact that AI is currently developing at a rapid pace which can be hard to control, especially since it is a lot easier to cheat.
Compared to traditional teaching methods, AI is more personalized and you can choose how you want the information to be presented to you. It is also more accessible as you can learn whenever you want. Because responses are feuled by user prompts, learning is more self-guided which can be difficult and overwhelming for newbies while traditional learning is more structured. Relying too heavily on AI can also trick you into thinking you fully learned a concept, however it is up to the user to practice what they learned.
AI definitely has potential in improving software engineering education, but I think the overreliance of AI will be the greatest challenge that could prevent it from doing so. Users could trick themselves into thinking they understand more than they do from excessive use of AI, leading them to not know how to fix potential bugs after copying generated code.