In this essay, I explore the integration of Artificial Intelligence (AI) in education, particularly in Software Engineering while taking a lot of my own experiences into consideration. With AI’s emergence, it’s usage in education is undeniable, and for me in ICS 314, tools like ChatGPT, Bard, and Co-Pilot have changed the way I approach problems. AI, ChatGPT in particular, has played a huge role in enhancing my learning and understanding of software engineering concepts.
Through my software development course, I actively utilized AI in many different ways. My main approach was to treat AI as a personal tutor that can help provide me with clarification and guidance on a wide range of problems.
WOD Assignments (programming challenges): As a routine when doing the WOD assignments, I liked to try things out myself first while at the same time following the instruction guidelines provided to then watch the provided video to follow along. Issues, however, would arise whether it be from the functionality or improper syntax. I would sometimes spend hours looking around while rewatching the video instructions. As a result, I would turn to ChatGPT to look over the code and see if there are any mistakes and 9 times out of 10, I found that AI would pick up the error very quickly while explaining to me what went wrong.
Practice WODS (programming challenges): I generally try to stay away from AI as I see the time period as a time for self learning as there are no actual grading involved. I think in the case where you are practicing without any pressure of having to finish, a lot more value is derived when you do the assignment without help.
In class WODS (programming challenges): In class WODS were a bit different as they were worth a lot in score. Sometimes under pressure, I tend to rely on ChatGPT to help debug especially when running into errors that I can’t figure out a solution to. From my perspective, its like using Google for resources except that the response is more tailored to your needs. I remember when first using underscore functions in our class WOD, I ran into and spent almost the entire allotted time trying to debug a small error in syntax as I was also still relatively new to underscore functions. At that point, I realized that if I wanted to pass, I needed extra resources and turned to Chat GPT which then helped me fix the errors to then get my code to work.
Essays: I found that AI would be quite useful in gathering ideas on how to approach a question prompt, however my take on using AI for essays is to follow along very loosely. That is due to the fact that if utilized too much, you would lose your writing voice and that wouldn’t really be your essay anymore.
Final Project: For my final project, I find myself often relying on Chat GPT to help me debug while at the same time explaining concepts that may have gone over my head throughout the semester. Disappointingly for the most part, I find that the results it gives are not very useful especially on a larger scale. For example, I tried to create a web scraping program to gather data for my project, but it ended up not working out and wasting a lot of time as I soon realized that there were a lot of discrepancies with the meteor template and the required JS node version. In trying to use Chat GPT to help debug the issue, I went around in a circle until realizing that I needed a different solution.
Learning Concepts/Tutorials: I find that AI is very useful in this context as if you don’t understand something, you can ask it to clarify and simplify anything as many times as needed. For example, I had Chat GPT give me various examples of different underscore functions being used to help me better understand it’s usage.
Asking a question in class or in Discord: I haven’t used AI to answer questions in class or Discord however , I imagine that unless you provide a lot of context, the answers can prove to be unreliable.
Asking or answering smart-question: I think AI can definitely prove reliable in the context of asking or answering smart-questions as it has access to huge sets of data. I have found that sometimes if I don’t understand something about a question, AI can quickly explain the question or outright give answers quite effortlessly. My example of usage is during our in class WOD where I didn’t really fully understand the question prompt given about manipulating a data set. As a result, I asked the Ai to clarify while also asking questions that I had about the problem so that I could gain more insight into my task.
Coding Example: Mentioned previously, my experience in using AI to give coding examples proved very effective in example the Underscore .pluck as it can give me various examples in many cases so that I can truly understand its uses. At the same time, when using it to explain Underscore, I was still quite new to Javascript and couldn’t understand some of the way things were coded thus seeing the different usage helped me greatly in understanding the various functions.
Explaining Code: One of the most useful applications of AI is in the way it can explain codes. I’ve used it on our meteor template to try and understand more of what is going on and the AI gave amazing results with line by line guide on what is happening. This as a result allowed me to follow along to give me a better sense of the bigger picture.
Writing Code: I think that AI can be very effective on small scale problems however when many files are considered, AI can give ineffective results. For example, when using AI to help structure some code on my final project, I found that without the full context of all my files, the results were more often than not incompatible. At the same time, I think relying on AI too much to write code is detrimental to learning and self growth in the field.
Documenting Code: Similar to explaining code, I find that AI can document code very well as in general it builds from small to large scale context. It is able to following along immediately explaining what each part of the code is doing. I haven’t had the chance to really use AI in the documentation of code in class however have seen it’s effectiveness in doing so.
Quality Assurance: For quality assurance, AI can be useful in small to somewhat larger scale projects. For example, if there is an eslint error I can’t fix, AI can easily give me solutions but in terms of functionality, if it lacks context, it’s not very good at making recommendations specific to the issue but rather a standard approach to debugging it yourself.
Learning a new Language: Another use I found for AI is that it can be used for is learning a new language. Personally, when learning new languages, I find that having Mnemonics help me greatly in memorization. With AI, I can generate good Mnemonics that I like and agree with instantly leading to higher progress in learning new vocabularies.
Personally, I think that AI has improved my overall learning experience. When utilized properly like an tutor/instructor, you have a source of information always at the ready to be used. At the same time however, using AI can lead to complacency and as a result impact learning negatively. As a result, I had to find a balance between getting help and figuring things out on my own as, for students especially, learning through the process is more important than getting the right answers at the press of a button. While I think that AI should be utilized, new software developers should be cautious in using it as self learning is a crucial step to take when first learning programming as a whole.
I think that for practical applications, AI can definitely be used effectively. For example, real world applications like in HACC. AI can be used as a partner for guiding users to practical and commonly used approaches to problems and issues while at the same time helping develop a structure to build on. Depending on the usage, AI can have a high level of effectiveness however if used carelessly can lead users down a rabbit hole where nothing works out.
The challenges/limitations of AI is the fact that it can’t do everything you want it to and sometimes is instead more of a guidance towards the right answer. For example, in a large scale program where a lot of files are considered, AI can only make assumptions and give you a response that it thinks is correct. As a result, the response end up being completely wrong and out of scope where if you would have just done it yourself you would be a lot better off. I think this provides a lot of room for AI to grow through it’s database/intelligence and its applications. If someone were to develop a software where AI can be utilized throughout entire projects thus enabling reference and allowing the AI to pinpoint mistakes and issues easier, AI would be a lot more powerful in software development.
In traditional learning, a lot of trial and error is taken into considerations like trying out codes over and cover while adjusting to meet requirements/criteria. With AI, you can almost skip that process and go straight to the solution. However, if you skip this process and just stick to the solution, you would get a lot less progress for your time and learn a lot less effectively.
As AI gets more advanced, you will be able to rely on it more heavily thus there will be a need to adhere to a lot more self discipline on it’s uses so that it does not too heavily undermine the process of self learning.
I think that if used responsibly, AI can be a great augmentation to learning and progression. As the saying goes, with great power comes great responsibility. The more powerful AI becomes, the more careful people should be when using it. From the software engineering perspective, I think that AI should be utilized but students should be careful to use it responsibly as with too much reliance comes complacency. I think for future courses, AI should be discussed openly while at the same time instructors should encourage students to learn from it rather than rely.