Reflecting on AI Usage in ICS 314

17 Dec 2024

I. Introduction

In the past few years, AI, especially generative AI, has become a huge topic within education and the technology industry. Students, educational institutions, and educators have begun to use generative AI to complete tasks for convenience and efficiency. In the context of software engineering, programmers have used AI to assist them with code and troubleshooting, as well as learn new concepts. This semester, in ICS 314 and in other classes or my everyday life, I’ve used ChatGPT, Copilot, and Claude to assist me with code, assignments, and miscellaneous tasks like meal planning.

II. Personal Experience with AI:

  1. Experience WODs e.g. E18 I did use ChatGPT for experience WODS and found them to be useful, like asking ChatGPT how to center certain elements on a webpage for our Browser History WOD without using Flexbox. The solution was pretty straightforward but I did sometimes have to take a few tries to refine the answers I’ve received.
  2. In-class Practice WODs I usually used AI for practice WODs in class when it was allowed. I’ve asked ChatGPT questions relating to UI the most, like how to center a navbar using Bootstrap. The results that I’ve received from it were always satisfactory, although a lot of times I had to play with it a little to get the perfect solution.
  3. In-class WODs For in-class WODs, I typically only used AI when I got stuck on a solution or had errors that I couldn’t figure out because I wanted to use my own knowledge first when completing them. In the beginning of the semester, it was pretty helpful because our WODs were straightforward and not very difficult, but as our WODs got more complex, ChatGPT began to be more bothersome with getting the right solution out.
  4. Essays I didn’t use AI for writing essays because I found that the essays we were assigned in class to be fairly straightforward, but I did sometimes ask ChatGPT to proofread a few. I didn’t find it very helpful though, because it would sometimes completely rewrite certain sections that made it obviously sound like AI where it didn’t even originally need the fixes.
  5. Final project During the final project creation process, I used ChatGPT a lot of the time for my inquiries and debugging because I found that we had to use a lot of different tools and concepts that weren’t really taught in class. I asked ChatGPT “Why is my React component not re-rendering after state change?” and it did take a little more prompts to get the correct solution, but I was able to figure out what was going wrong with my code.
  6. Learning a concept / tutorial I didn’t usually use AI for learning about a concept because I found that I preferred Google for learning concepts and reading solutions and tutorials from human-made pages.
  7. Answering a question in class or in Discord I’ve used AI to find solutions to questions presented in class, like questions related to specific concepts during lectures. I found that they were helpful and the answers aligned well with what our instructor was looking for.
  8. Asking or answering a smart-question I haven’t used AI for asking or answering a smart-question via Discord because I haven’t asked or answered a smart-question, and didn’t feel like putting effort into asking. I probably would have used it if I did though.
  9. Coding example I haven’t used ChatGPT to give me examples of specific concept usages, I usually just Googled for examples because I found that ChatGPT can be confusing for me sometimes when it comes to newer concepts I don’t know much about compared to explanations by real people.
  10. Explaining code I have used ChatGPT to explain code, typically when I give it a prompt and it gives me a solution that I don’t understand fully, like asking why using a react image component would be better than using . I found this to be helpful when my questions were more straightforward because the answers were also easy to understand.
  11. Writing code For a TypeScript WOD on CO2 dataset analysis, I asked ChatGPT, “Write a TypeScript function to count how many years in a dataset have CO2 levels greater than 350 ppm using .filter.” The response provided a good foundation for my solution, which I tweaked to get the solution that I needed for the specific assignment.
  12. Documenting code I haven’t used ChatGPT for documenting code because I didn’t think it was worth the effort when I could do it myself.
  13. Quality assurance I used ChatGPT a lot for fixing any errors in my code, especially ESLint flags. The answers would usually be helpful but ESLint errors were a bit iffy because I was sometimes just told to ignore it rather than being given an actual solution to fix the error. Other uses in ICS 314 not listed

    III. Impact on Learning and Understanding:

    I think that using AI in class has both helped and limited my learning within software engineering. When asking ChatGPT about certain concepts or how to fix my code, I can definitely say that I’ve learned more and have gotten better at coding and avoiding errors that I’ve fixed in the past with AI’s help. However, I also feel like I could have learned more if I refrained from using AI sometimes, especially on WODs, because I sometimes used it to get shortcuts to finish assignments rather than learn.

    IV. Practical Applications:

    I’ve used AI to help with work-related projects while I completed an internship last summer and my group and I did find it to be very helpful as we were creating a web application for our company dedicated to career growth and learning. As always though, we did need a good amount of refining our prompts to ChatGPT and other AI platforms we did use as it doesn’t always give us the right solution on the first try.

    V. Challenges and Opportunities:

    An issue that I had with AI in class was when getting help for assignments that had many files, such as our final project. Copilot didn’t help a lot and I found it to be wrong a lot of the time when I used it via VSCode, and ChatGPT couldn’t help me fully because it didn’t have a background of what exactly I had going on in my project files. I think that AI could be adapted to work with projects like these with a lot of files, where it can take that data from the entire project and help you based on those rather than a single prompt or file.

    VI. Comparative Analysis:

    Traditional teaching methods, like lectures and hands-on workshops, really get students involved through direct interaction with teachers and classmates. These methods allow for real-time discussions, team problem-solving, and instant feedback. Students can ask questions and get immediate answers, which makes for a lively learning environment. On the other hand, AI learning has more personalized learning by adapting to what each student needs. AI can give interactive simulations, coding exercises, and quick feedback, keeping students actively engaged. Knowledge acquired through traditional methods are more likely to be retained compared to AI because of the differences in time needed to learn and supplemental learning offered from traditional teachers. AI also doesn’t always give the hands-on sessions that you get with traditional teaching, making it more realistic for job opportunities. Using the best of both worlds, educators can create a more comprehensive and effective learning experience for students.

    VII. Future Considerations:

    When we think about the future role of AI in software engineering education, there are some really exciting possibilities. AI could change how we learn and teach by making education more personalized and accessible. AI tutors that adapt in real-time to each student’s learning pace and style could have a lot more to offer for students because of how different learning is for everyone. This could significantly boost student engagement and knowledge retention. However, one major hurdle is making sure that AI tools are inclusive and unbiased. We need to develop AI systems that consider diverse learning backgrounds and avoid reinforcing existing biases. Additionally, there’s the challenge of integrating AI in education in a way that complements rather than replaces human teachers. Instructors have experience and emotional intelligence that AI can’t replicate.

    VIII. Conclusion:

    Looking back at this semester, I see that AI has both helped and held me back in some ways in my software engineering course. Tools like ChatGPT, Copilot, and Claude were super handy for coding, assignments, and even daily stuff like meal planning. They gave quick fixes and made things easier, especially when it came to debugging and learning new concepts. But, I also realized that leaning too much on AI sometimes stopped me from fully understanding things. It’s all about finding the right balance between using AI for help and solving problems on my own. When I used AI for real-world projects during my internship, it was a game-changer. My team and I used it to build a web app, and it saved us a lot of time. But, I also hit some snags when working on big projects with lots of files. Copilot was often off the mark, and ChatGPT couldn’t get the full picture of my project, which was frustrating. This shows that AI still has a lot of room for improvement. Thinking about the future, AI could really shake up software engineering education by making learning more personalized and accessible. AI tutors that adapt to each student’s pace and style could make a big difference. However, we need to make sure these tools are inclusive and unbiased, considering everyone’s different backgrounds. And while AI is great, it shouldn’t replace human teachers who bring valuable experience and emotional intelligence to the table. To get the best results, I think a hybrid approach that combines traditional teaching with AI tools is the way to go. This mix can boost engagement, help us retain knowledge, and build practical skills. By continuously improving AI based on feedback, we can make the most of its potential while still benefiting from the human touch in education.