Can you imagine that a lot of questions nowadays can be answered simply by just asking a computer program? Sure, it can be said that we could already do that by just Googling it, but today, it’s much more different, much more powerful, and definitely game changing. With the introduction of Artificial Intelligence (AI), a lot of the questions we have can now be answered straight to us. In the eyes of some, AI is viewed as revolutionary, while others view AI as our doom. In the context of education and software engineering though, AI is a wonderful assistant tool.
It’s hard to merely acknowledge the existence of this groundbreaking technology; I have to give a shot myself! As a student, I’ve witnessed the power of AI in what it can do for me compared to other various resources I’ve used in the past. AI provided me explanations, step-by-step breakdowns, and guidance on approaching problems in my other subjects whether they are writing problems or computational problems.
Besides using AI on my other subjects, AI usage has mostly been a great learning assistant tool for me in my journey of learning software engineering. With the various things I’ve done so far in both my learning and coursework, I’ve used AI in some of them and found some results to be rewarding while others not so useful.
In one of the experiences that I’ve done: the “Your Choice in React” experience, the goal was to recreate a webpage using React. For my selection, I wanted to recreate the Betty’s Burgers website in react. The process went fairly smooth, but then I got stuck on implementing one part, which was creating some gradient element to darken the background image. I asked ChatGPT to generate some code for it. After a few tweaks, I got a relatively accurate implementation of the background image darkening.
I used some ChatGPT in the in-class practice WODs, but most of the time, I found that it did not help me out. I remember using ChatGPT the most on trying to get solution code to implement in Murphy’s Bar and Grill in Bootstrap and React, but much of the code provided was broken. AI usage in this case was also hindering me from getting comfortable with what we were covering prior to the real WOD. I didn’t use AI for practice WODs after finding that it did not help me much after all.
When it came time to the in class WODs, I learned from my AI usage in the practice WODs that code generated from AI did not give me much help, therefore I just prepared myself beforehand to do the real WODs without any help from AI.
There’s no doubt that I could have had AI write all of my essays for this course, but I wasn’t really like that. For the most part, I would ask ChatGPT to provide me some outlines for my essays or expand on portions I’ve already written out. Other than that, I’ve done most of the essay writing by myself.
For the final project, the use of AI on my part wasn’t so heavily involved in generating code for my group’s solution, but rather it was used to help explain certain concepts that would aid in designing for features our app would have. Since my group did want to take up one of the challenges offered during the Hawaii Annual Code Challenge (HACC), I mainly used AI in looking up what various concepts meant and how it would translate to features in the app, since the project problem dabbled in a little bit of the business world.
Whether I’m using AI for receiving code solutions or explanations on concepts I didn’t understand, I’m always learning something from my usage, whether it is the concept being explained or learning that AI usage won’t benefit me for another issue. Revisiting my usage of AI in getting a solution for an element of my recreation of the Betty’s Burgers site, my AI usage reinforced the concept of how I can work with certain components in React and why the ordering of elements and components is important.
I didn’t really get around to answering questions on Discord, but I do remember getting asked some questions as part of marking my presence for attendance in a Google form. The questions were about things pertaining to Meteor, React, and Bootstrap such as what are some things different between them, etc. While I acknowledged the differences in how it’s implemented, how it works, I still had to use AI as I could not explain the differences myself. The results were somewhat useful, as
As for asking or answering a smart question, I never actually really got around to doing that during the semester, therefore I didn’t use AI in this case.
I think that a great way to learn is to learn by example, and in the case of learning software engineering, going through many examples can be useful especially for me. However, most of the examples I learned from were provided in the practice experience and in-class WODs, therefore I did not use AI in this case.
In this course, I surprisingly didn’t really find the need for code to be explained to me, since I mostly learned to understand code by writing it out myself and seeing its results. As a result, I didn’t use AI to explain code to me.
I remember that when I was still trying to get comfortable with various web development concepts and being exposed to the use of frameworks, I used AI to write code for me because there were many times when I didn’t know where to start. When first being introduced to Bootstrap, I asked ChatGPT to write me code for a nav bar for some of the various assignments in the course. It was somewhat useful at first as it gave me a start, but some of the code being used did not use Bootstrap which didn’t help in reinforcing my learning.
While documenting code is something that I should be practicing as someone who is learning software engineering, I don’t think I ever actually documented my code throughout the course. Since I never got around to doing so, I did not need to use AI to assist me for this.
I remember that throughout this course, I did use ChatGPT to fix code that I encountered errors in where I got outputs that didn’t satisfy the requirements. While AI usage helped me in a sense that it explained parts of my code that could be problematic, the potential solutions it provided would sometimes change up a lot of things and put code in there that I didn’t know what it was doing. Other times it would end up not working or breaking other parts of my code. Therefore, the result of using AI in this case wasn’t really beneficial to me.
My creativity wasn’t the best, so I remember that I asked ChatGPT to generate a team name for my group for an activity we were doing in class at the beginning of the semester. My group used the name it gave us, so that was useful.
I’d say that the incorporation of AI had definitely bumped up my learning experience compared to traditional learning methods. While I did want AI to provide me more “help” (more like solutions), I realized that taking that easy way only made certain situations worse. However, it also taught me to take a step back and reevaluate the problem, because doing so had helped me a lot in finding the problem on my own without asking AI to give me a quick fix. The incorporation of AI in my learning in a sense enhanced my learning because there were some instances where it explained and broke down things for me to understand easily. On the other hand, trying to seek for the easy solutions challenged me to learn these concepts better on my own. As a result, I’d say the use of AI in my software engineering learning had taught me some lessons to not take the easy way out but rather for ne to practice and learn the concepts on my own.
While I have used AI for my other school subjects outside of ICS 314, such as with getting assistance on computational problems and getting explanations and real world examples of computer science algorithms and how they work, I haven’t quite dabbled much into the use of AI for any real-world projects, simulations, or collaborative activities. I’d say for the most part that I used AI in trying to explain various functionalities for the app my team and I were working on for HACC. It definitely helps to get that additional insight when trying to work on big projects as a team. From a broader standpoint, AI is pretty effective when it comes to address real-world software engineering challenges where in a sense it can do a lot of the bulk work in trying to get new projects started. However, since AI isn’t 100% perfect, it still leaves the additional responsibility for software engineers to take a step back, evaluate problems, solve them, and perform checks to make sure the software runs correctly when deployed.
Despite AI being this game-changing learning assistant tool, there were many challenges and limitations discovered during my usage of AI. One of the challenges encountered is that AI does a better job at providing general information and solutions, but ends up to be problematic when prompted with more specific issues that require a specific context. Surely that could be worked around by adding more context or details to the specific prompt, but speaking from history, it ends up introducing errors such as in computations or generating code. Perhaps this is because the AI fails to see the overall picture, which can be troublesome in trying to cater to my needs. Of course, there is more powerful AI available out there that could do better jobs, but the limitation here is that many of them require a premium to be paid for their use.
AI is such a powerful tool as it can do a lot of work for us, even to the extent of educating us about the subject of software engineering. However, its effectiveness can differ based on its use cases. I think the big one to highlight between traditional teaching methods and AI-enhanced approaches is that traditional teaching methods don’t necessarily “spoonfeed” you. Using AI when it comes to completing certain tasks can often be done through just asking AI to generate solutions to enter rather than going through the thought process of trying to create a solution which I believe traditional teaching methods encourage. Plus, when you’re “spoonfed,” you aren’t as engaged because sometimes the engagement needed is as simple as a copy and paste. At the same time, knowledge isn’t retained, therefore there is no skill development to follow. Using AI for learning isn’t all that bad though. Similar to traditional teaching methods, using AI to help break down things, explain things easily, or provide alternative methods of understanding is just like consulting an instructor or watching a tutorial video when you perform the work yourself. It’s great to have AI too because it acts like a tutor at your own convenience when there is no opportunity to reach out to peers or instructors to receive help for certain content.
I believe that AI can be a powerful tool in reinforcing software engineering education. While it can act as a convenient tutor for those learning software engineering right now, there is much more that it can be trained to do in the near future. Current AI can generate example practice problems right now which can be offered as supplemental learning to students on top of the tutoring AI can do with breaking down the content or explaining bits of code. I feel like AI in the future could also begin to analyze how code is written by current learners of software engineering which could delve into classifying what might be best coding practices and what aspects might need additional work on.
Personally, the use of AI was great and all, but it should not be taken for granted as I’ve found for me that it doesn’t prepare me well when I choose the route of just seeking for the answers. On the other hand, AI is a great tutor to have as it provides me with breakdowns, explanations, and additional examples, perspectives, and approaches when trying to tackle software engineering problems. The future is now, and I’d say for future courses, embrace the use of AI as it is a great and powerful tool that perhaps software engineers in the past and present had helped with in putting it together. AI will continue to get better, so perhaps a good approach will be to help learners today get comfortable with using it.