Reflection on use of AI in Software Engineering

20 Nov 2023

Introduction

Artificial Intelligence (AI) transformed the various industries forever. Its impact on education, functionality, and efficiency across many different industries proves substantial. In the realm of education, especially in Software Engineering, AI technologies plays a pivotal role in enhancing learning experiences, personalizing education, and providing innovate solutions to both short and long-standing challenges. As techonology continues to evolve and so does the relevance and potential of AI integration, it not only helps prepares students for rapidly changing landscape in Software Engineering, but also introduces approaches to problem-solving and software development.

The main AI tool I’ve used for Software Engineering is ChatGPT. ChatGPT is designed to assist users in generating human-like text based on the input provided from the user and is able to efficiently solve many problems thanks to its expansive database that it uses for reference. Especially in code development, ChatGPT helped me get a gist of what could be wrong with my code, providing valuable information that I can gather and then use to solve the problem. With the use of ChatGPT, not only was I able to solve problems, but I was also able to learn why the problem came to be, how I could prevent it from happening in the future, and how it can be solved. AI tools are amibigous in giving the user both the answer and an explanation. The integration of AI in education in particular courses such as Software Engineering is a promising avenue for fostering innovation and preparing students for the dynamic fields of software development. The use of AI tools such as ChatGPT and other relevant technologies can enhance the learning journey for everyone.

Personal Experience with AI

  1. Experience WODs e.g. E18
    • I have not used any AI tools to do the experience WODS. I thought it was important, especially for the experience WODS to learn and answer on my own.
  2. In-class Practice WODs
    • I have not used any AI tools to do in-class practice WODS. Since it was a practice WOD, I thought it would be best to learn on my own without the use of AI since nothing is at stake.
  3. In-class WODs
    • I’ve used ChatGPT on the final WOD. For the question “If the subscription is not ready, then what might happen when line 20 is executed?”, where I copy and pasted both this quote and the code that was provided in the prompt. ChatGPT was able to accurately determine what would happen when line 20 is executed given the condition. From there, I understood what would happen, and was able to put what was outputted on the console into the document from my own understanding.
  4. Essays
    • I would use ChatGPT for some essays where I cant fill the gap in my mind for formulating words. Since ChatGPT typically likes to use many vocabulary words, I usually incorporate those words into my own essay on certain subjects.
  5. Final project
    • I currently have not used any AI tools for the final project. Since I use in-class videos that are typically used in WODS which typically help me in doing the work, I didnt use AI as of yet.
  6. Learning a concept / tutorial
    • I have not used any AI tools in learning a concept. For learning a concept, lessons that are taught on the websites suffice for the assignments and projects and therefore have not used it so far for learning concepts.
  7. Answering a question in class or in Discord
    • I have not used any AI tools in answering a question in class or in Discord typically because I do not ask questions in class or discord.
  8. Asking or answering a smart-question
    • I have not used any AI tools in asking or answering a smart-question. I am able to formulate the words in my head where it would suffice to be posted in the smart-questions channel so I thought the use of AI wouldn’t be necessary.
  9. Coding example e.g. “give an example of using Underscore .pluck”
    • I’ve used ChatGPT for one of the “Five problems every software engineer should be able to solve” where the problem was to write a function that computes the list of the first 100 Fibonacci numbers. I’ve literally copy and pasted this text in ChatGPT: “Write a function that computes the list of the first 100 Fibonacci numbers. By definition, the first two numbers in the Fibonacci sequence are 0 and 1, and each subsequent number is the sum of the previous two. As an example, here are the first 10 Fibonnaci numbers: 0, 1, 1, 2, 3, 5, 8, 13, 21, and 34.” where ChatGPT was able to output the code in Javascript. From there, I understood the code and implemented into my assignment.
  10. Explaining code
    • I’ve used ChatGPT to search up certain terms that would appear in our meteor application template such as “async” or “await” and how it is used in our code. More specifically, when doing our test cafe, I would search up what “await navBar.gotoSignInPage(testController);” would do specifically, where ChatGPT was able to provide proper explanation for me to understand.
  11. Writing code
    • Same as #9, I used ChatGPT for one of the “Five problems every software engineer should be able to solve”. It was able to show the actual code to write a fibonacci of the first 100 numbers within a function.
  12. Documenting code
    • I have not used AI for documenting code. I typically do simple comments to explain what certain code blocks do, but not to the point where I thought using AI would be necessary.
  13. Quality assurance e.g. “What’s wrong with this code ” or “Fix the ESLint errors in
    • I would paste ERROR blocks that would be found when doing meteor npm run start or meteor npm install. Some of the solutions they provided I have tried but did not work in my case. I had to email a professor about the occasion, to which they were able to provide a solution.
  14. Other uses in ICS 314 not listed
    • I would use ChatGPT for many miscallenous things such as “Create a list of 10 things I need that are essential for traveling?” or “What are the pros and cons of both Arrays and linked lists?” or “Whats the difference between whey protein and whey isolate?”. ChatGPT is such an invaluable resource that provide solutions to many different things that would make life more convenient.

Impact on Learning and Understanding

I’ve only started using AI tools this year to this degree of use and it showed very efficient results. The incorporation of AI has significantly impacted comprehension, skill development, and problem-solving abilities in my understanding of software engineering. AI technologies have enhanced comprehension by providing real-time explanations and examples, aiding learners in understanding complex concepts. Skill development benefits from AI-driven personalized learning paths and adaptive assessments, accelerating the learning process. Moreover, AI facilitates problem-solving by offering tools for automated testing and debugging, contributing to more efficient and informed decision-making. While AI has enhanced my understanding, there is a challenge in ensuring learners maintain an active role in their education, using AI as a supplementary tool rather than a replacement for hands-on experience and critical thinking. I do not rely solely on AI tools, but I believe that balancing the integration of AI with traditional learning methods is crucial for a comprehensive and effective educational experience in software engineering.

Practical Applications

AI has been widely employed in real world software engineering projects, and collaborative activities, demonstrating its effectiveness in addressing various challenges. For one instance, in collaborative events like the HACC, AI technologies have been utilized for data analysis, pattern recognition, and predictive modeling, aiding teams in developing innovative solutions to complex problems. In real world projects, AI has played a role in automating tasks such as code review, bug detection, and testing, contributing to improved software quality and faster development cycles. I believe the most obvious use of AI would have to be AI chatbots. AI chatbots have become integral in enhancing user interactions, offering efficient customer support, and automating routine tasks, thereby streamlining communication processes in various software applications. The effectiveness of AI in these contexts lies in its ability to handle data at scale, automate repetitive tasks, and provide intelligent insights, ultimately providing innovation and efficiency in real-world software engineering tasks.

Challenges and Opportunities

My use of AI in this class were not extensively abused, but I believe I used it enough to the point where I didn’t run into any uncertain answers when using it. Due to my use of AI being limited, I didn’t really encounter many problems when using it as the questions I were to ask in AI tools such as ChatGPT were typically answered in a way I can understand and absorb. As for the general and regulated use of AI in Software Engineering, an important tool could involve creating AI-powered coding assistants that provide instant feedback and suggestions in a way enhances students understanding of their topic of choice. Adaptive learning platforms utilizing AI algorithms could personalize educational content, addressing individual learning needs and optimizing the learning process. There are so many way to implement AI in education, but I believe it should be limited, as to not give students the ability to auto-pilot through their education.

Comparative Analysis

Traditional teaching methods in software engineering education often rely on various methods such as the use of lectures, textbooks, and hands-on projects. While these methods offer a structured approach, AI use has its fair share of advantages. AI use can bring about many different benefits such as personalized learning experiences, tailoring content to individual needs, and higher engagement with their subjects. Additionally, interactive simulations and virtual environments enhance practical skill development, providing real-time feedback. When AI’s are used as a tool and not an all in one answer machine, I believe their insights contribute to better knowledge retention by identifying and addressing individual learning gaps. The use of AI in education offers a more engaging and effective learning experience in software engineering compared to traditional methods.

Future Considerations

As I look ahead into what AI could become and its signfigance in the future, I find it fascinating that the evolving role of AI, especially with its use in many different subjects, especially software engineering education, that there still lies more potential for even more advanced AI I couldn’t possibly fathom within the near future given todays AI capabilites. AI in itself can bolster education in the right way, provide sophisticated feedback to solve real world problems, and just have so many more applications in so many things. As time progresses, there is no doubt that AI will improve in many areas. Within the refinement of AI in the near future, maybe AI can learn to better understand learning styles and possibly show a realm of education we thought couldnt be possible. Eventually they would be so needed, that they are to be considered mandatory tools for collabrative projects that would push humanity forward and the realm of software engineering education. Heres to hoping AI won’t be too advanced where they quite literally take over the world.

Conclusion

Reflecting on the use of AI in the Software Engineering course, it’s evident that AI can greatly enhance learning experiences. AI is a great tool to have but shouldn’t be a no-brainer tool to use. We should ensure that there will be a balanced approach in use to prevent over reliance, ensuring active student engagement in courses. To optimize future integration, courses should focus on refining AI algorithms to better understand individual learning styles, expanding collaborative projects with AI applications, and emphasizing the importance of hands on experiences to complement AI driven insights. The key lies in leveraging AI as a powerful aid while maintaining a student-centered and practical learning environment so the student can both learn and understand without training wheels.