AI in ICS 314

07 May 2024

I. Introduction

The role of AI in the software engineering world has dramatically changed and advanced over the past couple years. As AI such has ChatGPT and Copilot develop, the workflow of coders has shifted and is becoming more streamlined as programmers take advantage of these tools.

II. Personal Experience with AI:

I have used AI in class this semester in the following areas:

  1. Experience WODs e.g. E18 I did not usually use ChatGPT extensively for these since I would attempt it on my own, then just follow the video to see what I did wrong if I failed. I did use Copilot though which hasten repeated code by automatically filling out what I would be planning to type out anyways. (Such as multiple if statements, loops, etc)
  2. In-class Practice WODs I would usually use ChatGPT to assist my coding as I will describe for the In-class WODs. The difference here is that I would typically also ask those around me on how they would code specific things to see the difference between mine, what ChatGPT would generate, and my classmate’s code.
  3. In-class WODs For many of the In-class WODs, I used ChatGPT to assist in generating code. For most occasions, having ChatGPT generate code on it’s own did not work at all. Instead, I typically either outline code without putting in detailed logic, or write out my code in commented pseudocode, then fed that as a prompt to ChatGPT to hash out. This would usually output either a working product, or an almost working product that would only need some minor nuances to correct.
  4. Essays The way I usually use ChatGPT for Essays is to help me check for grammatical errors as well as format my sentences to flow better as I am not a strong writer.
  5. Final project ChatGPT was not a huge help in the Final Project since it is really difficult to have ChatGPT understand a vast coding project structure and how each file affects one another. The only exception is for really small files such as altering the NavBar.
  6. Learning a concept / tutorial I usually do not specifically go out of my way to ask ChatGPT to teach me a concept or tutorial, but in general when I use it, it helps me understand why certain things work in certain ways when I see it correct my code.
  7. Answering a question in class or in Discord I have never had this usecase as I would just ask the professor or classmates and answer them directly.
  8. Asking or answering a smart-question Same as before where I have never had this usecase as I would just ask the professor or classmates and answer them directly.
  9. Coding example e.g. “give an example of using Underscore .pluck” I usually did not ask for coding examples as most documentation contain examples, but having ChatGPT generate or correct my code essentially gave me examples to look at which helped my understanding of how certain methods worked.
  10. Explaining code I have not had this usecase as I haven’t needed to understand someone else’s code that was unclear and have only dealt with my own code or well documented others code.
  11. Writing code Like my usecase with the WODs, I use ChatGPT to assist in generating code. I either outline code without or write out pseudocode, then fed that as a prompt to ChatGPT. This would usually output either a working product, or an almost working product that would only need some minor tweaking.
  12. Documenting code While I haven’t asked ChatGPT to generate comments/documentation. Whenever you prompt ChatGPT and it generates code, it is always paired with clear and concise documentation on the code it outputs.
  13. Quality assurance I haven’t used ChatGPT to check my code for quality assurance as once I get something working, I do my best not to introduce new code that could break it.
  14. Other uses in ICS 314 not listed above None, all usecases have been covered above.

III. Impact on Learning and Understanding:

The incorporation of AI has significantly influenced my comprehension of complex concepts, skill development, and problem-solving abilities. AI technologies like ChatGPT and Copilot have served as valuable tools by providing instant feedback and suggestions, streamlining my ability to code and learn concepts. They have also challenged me to think critically about the logic and structure of my code, especially when comparing with what I ask them to do, as well as when they incorrectly structure code based on the layout I give them. Being able to see that it was not the code, but my logic that caused a bug helped me learn how to code better, cleaner, and more efficiently.

IV. Practical Applications:

Besides ICS 314, AI has numerous practical applications. In real-world projects, AI can automate repetitive tasks, optimize algorithms, and predict trends based on datasets. In simulations, AI can be taken advantage of to automatically compile and run scenarios on a scale that would take too much manpower. In collaborative activities, AI can be used to analyze large datasets to and easily compact them into solutions that would normally take much longer to analyze by hand. The effectiveness of AI in addressing real-world software engineering challenges is undeniable, as it enhances efficiency, accuracy, and productivity.

V. Challenges and Opportunities:

While AI has indeed accelerated my coding workflow, it is not without its challenges and pitfalls. Sometimes, AI-generated code does not work as expected, requiring manual debugging. Also, AI has a hard time understanding the context of a large project, limiting its effectiveness. However, as AI and technology continues to advance, we can expect more accurate code generation, better context understanding, and personalized learning experiences.

VI. Comparative Analysis:

Comparing traditional teaching methods and AI-enhanced approaches in software engineering education reveals distinct advantages of the latter. AI-enhanced approaches promote active learning, engagement, and practical skill development. They provide instant feedback, allow for personalized learning, and can adapt to the learner’s pace. While traditional methods are essential for foundational learning, AI-enhanced approaches complement them by providing specific experiences that can be tuned to the learner’s abilities.

VII. Future Considerations:

AI is poised to play an even more significant role in software engineering education. As stated before, as AI technologies advance, we can expect more sophisticated code generation, improved context understanding, and even personalized learning experiences. However, challenges such as ensuring the ethical use of AI, maintaining data privacy, and overcoming technical limitations must be addressed.

VIII. Conclusion:

Reflecting on the use of AI in the Software Engineering course, it’s clear that AI has greatly enhanced my learning experience. It has not only served as an indispensable tool for coding but also as a means to understand complex concepts and improve problem-solving skills. For future courses, I recommend direct integration of AI such as showcasing AI tools and demonstrating how to actually take advantage of them instead of leaving it up to the student. This ensures that students are not only learning the theory and concepts of the course, but also gaining the practical skills of taking advantage of AI that they can use in the real world.