ReflectAI

20 Nov 2023

Introduction

Artificial Intelligence (AI) has taken the world by storm. It’s interesting to see how the educational experience has changed drastically within the last 4 years. The world first had to adapt to an online learning environment, then shortly transition into accounting for AI. This technology applies to Software Engineering and has an input on pretty much every other subject. Specifically, AI technologies such as Large Language Models (ChatGPT) have the ability to answer questions, write out code, and teach concepts by answering user input prompts. ChatGPT is a technology I’ve used within ICS 314.

Personal Experience with AI

Experience WODs

Experience WODs are typically very straightforward and go based on a reading or tutorial. I’ve seen a lot of the concepts before so I treat the experiences as more of a refresher and practice. In that case, there was never a time where I copied and pasted or engineered a prompt to solve any of the experience WODs.

In Class Practice WODs

In class practice WODs are similar. These practice WODs are basically just a building block of the experiences. In that case, the material is familiar enough to not have to search up how to do a specific thing. In these practice WODs, if there was any uncertainty, I’d refer to the experience WOD readings and assignments to have some direction.

In Class WODs

Class WODs are a little bit higher stakes so I’ve been more open to using ChatGPT. Ever since I didn’t finish the underscore library WOD, I made a rule for myself. Since our WODs are timed, I spend the first 75% of the time doing the whole WOD based on my own knowledge and class material. If I’m still not finished or have no idea what I’m doing, then I refer to ChatGPT. However, referring back to my submissions, I’ve never had to resort to using ChatGPT. Since we were also in a classroom setting, it felt like I’d be cheating using ChatGPT. I’ve come to realize that that isn’t necessarily the case. There were definitely times where I could’ve used it and arrived at the answer a lot faster.

Essays

I used ChatGPT for my essays. Typically, I prompt ChatGPT with the type of essay I’m writing and for information that I should be including. Looking back at all my essays, I think I did a good job of using ChatGPT. It saved me a lot of time and a lot of the thoughts in my essays are my own. This was easier since a lot of the essay prompts were asking about my experience so I couldn’t use ChatGPT to explain my actual experiences. For example, in my ESLint essay, my first paragraph was a paraphrase of a ChatGPT answer but the rest of the essay was all my experience. At this point in the essay, none of it has been written by ChatGPT but I foresee that I might need to use it in some of the ending sections.

Final Project

My team’s final project is to create a “Rate my Facilities” page for UH Manoa. This concept is similar to the popular “Rate my Professor” page. I’ve been tasked with creating a page that lists all the reviews. I used ChatGPT to get my page started. This was the prompt I used, “using react bootstrap, write me a page jsx file for a review page”. ChatGPT gave me some starter code that I used to flesh out the skeleton of my page. From then I asked it to add certain features like implementing a star rating and getting the top rated and lowest rated facility. I reviewed all the code that it generated and it was everything that I knew how to do on my own. Because of this, I was comfortable with using the code in my project. I think in Software Engineering, using the baseline code from ChatGPT or Co-Pilot is fine, the real engineering comes from applying all the code to your specific use case and making it work efficiently.

Learning a concept/tutorial

I’ve used ChatGPT in this class to ask basic questions about concepts such as the file structure of a meteor application. These are typically just quick prompts and ChatGPT usually gives me the answer I’m looking for. I can also ask it to explain something in a shorter context or more in depth which I think is very useful.

Answering in a question in class or in Discord

I’ve never had to use ChatGPT to answer a question in class or Discord. The questions in class are usually very simple and I’m not super active in the Discord.

Asking or answering a smart-question

Similarly, I’ve never had to use ChatGPT to answer a smart-question since I’m not super active in the Discord.

Coding example: “give an example of using Underscore .pluck”

Following the given example, I definitely used ChatGPT when learning the underscore library. I’ve also used a coding example when learning the bootstrap library. For example, I prompted ChatGPT with “give me an example of creating a dropdown within a navbar in bootstrap”. These code snippets were very useful and helped me become more efficient in my learning.

Explaining code

I haven’t specifically used ChatGPT in this class to explain code. The code in this class is pretty straightforward and the functions are fairly simple. I have used it in other classes such as my operating systems class and data structures and algorithms. I’d typically ask it to explain in pseudo code or give a description of what the code is doing.

Writing code

Just based on some of my previous answers, I have used ChatGPT to write some of my code. Specifically, it was in my project to create the general structure of the “Rate my Facilities” list of reviews page. I then built out the rest of the functionality.

Documenting code

I have never used ChatGPT to document any code. I write my own comments since it makes more sense to me but this is something I might think about doing in the future.

Quality assurance

I’ve never had to use ChatGPT for testing my code quality. I don’t think I’m writing any software modules at this time that requires extensive testing and quality assurance. This is something I will consider in the future. Other uses in ICS 314 Outside of everything mentioned above there have been no other use cases for AI in ICS 314.

Impact on Learning and Understanding

AI has been very supplemental in my learning and understanding of concepts. I tend to learn more actually when I can use it to teach and help me review concepts that I don’t understand in class the first time around. The negative effects are if I were to just ask it to solve questions for me when I haven’t even attempted the problem. Specifically in software engineering, I’m starting to use it as a tool that I should get good at to enhance my skill set. The use cases are quite astonishing really. At first, I thought I treated it as another google search but the technology has much more capabilities. ChatGPT is able to explain concepts in a much simpler way and can use terminology that I understand way better than existing documentation or textbooks that were written years ago.

Practical Applications

I have used AI outside of ICS 314. I’m conducting a research project on sensor fusion for a robot’s localization and state estimation. I had no prior experience at all in machine learning and sensor fusion. I’ve been using ChatGPT in addition with literature reviews and other tutorials to get a better understanding of concepts and to get a direction on how to even start my project. Outside of my own work, AI has definitely been incorporated in real world applications. At the recent OpenAI developer day, the company had announced the creation of GPT’s, which gives users the ability to build a model for their specific use case and services.

Challenges and Opportunities

A challenge I’ve seen in using AI within this course is limiting the temptation to do my work for me before I’ve even attempted it. I know how much time it will save me but there’s a downside which is not learning. Aside from that, I feel like this is a technology that should be integrated into the course framework. I think there should be a section within the coursework itself to teach us how to fully utilize this technology as a tool. There was a good video on prompt engineering which is really important to teach to students.

Comparative Analysis

Current teaching methods include online videos, online lecture slides, textbook readings, and in-class lectures. I asked ChatGPT, “what are some AI enhanced approaches to teaching software engineering” and it came up with the list: “Personalized Learning Paths, Adaptive Learning Platforms, Automated Code Review and Feedback, Virtual Coding Assistants, Simulations and Virtual Labs, Natural Language Processing for Documentation”, and more. Based on this feedback, I think these are some really good considerations for engagement, knowledge retention, and practical skill development. If there was an online assistant that made sure I practiced a concept every day when I opened my laptop for 5 minutes could help reinforce my learning. A lot of the content and knowledge exists in the lectures but sometimes, the professors aren’t able to deliver the knowledge the best way. For example, AI could generate a model of electromagnetism as opposed to a professor drawing an example or explaining a textbook image.

Future Considerations

I think AI in software education is going to become more and more prevalent. I believe that the industry will start demanding that students graduate with a knowledge of utilizing the technology. There definitely just needs to be some consideration about the ethics behind it and how to maximize its full potential.

Conclusions

In summary, my experience with AI in the Software Engineering course has shown its transformative impact, serving as a versatile tool for coding, essays, and project development. The challenge lies in balancing AI efficiency with authentic understanding. To optimize its integration into future courses, I recommend structured inclusion, including a dedicated section on prompt engineering. The rise of AI in software education necessitates ethical considerations for responsible and transparent use as students are expected to graduate with proficiency in both software engineering and AI technologies.

Up until the conclusion, I hadn’t used ChatGPT to write any of this essay. I gave ChatGPT the following prompt, “given my essay: {copy and pasted sections}, write me a conclusion following this prompt: {copy and pasted the conclusion prompt from the website}”. At first it generated about 5 paragraphs. I then asked it to rewrite it in one paragraph, and then prompted it to rewrite it in four sentences. The above paragraph is pasted from ChatGPT.