AI Adventures in ICS 314

07 May 2024

I. Introduction

Artificial Intelligence (AI) is rapidly transforming the educational landscape, particularly in technical fields such as software engineering. AI tools like ChatGPT, Google Bard, and GitHub Co-Pilot have become essential resources, helping students navigate complex concepts and enhance their learning experience. In ICS 314, I have leveraged AI to support my understanding and application of software engineering principles, addressing some of my basic questions related to coding, debugging, and understanding new concepts.

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 extensively use AI for Experience WODs, except for occasional clarifications on basic commands or shortcuts in IntelliJ when needed.
  2. In-class Practice WODs
    • AI was not a primary tool during in-class Practice WODs, as these sessions were mainly focused on real-time problem-solving and collaboration with peers.
  3. In-class WODs
    • Similarly to Practice WODs, I relied more on direct interaction and immediate feedback from instructors and classmates rather than AI assistance.
  4. Essays
    • I frequently used AI to check grammar and improve the structure of my essays, ensuring clarity and coherence in my writing.
  5. Final project
    • AI’s role in my final project was minimal; however, I consulted it for initial ideas on project design and to verify the feasibility of certain approaches.
  6. Learning a concept / tutorial
    • Whenever I faced difficulties understanding new concepts taught in class, I used AI to get alternative explanations or supplementary tutorials.
  7. Answering a question in class or in Discord
    • I often used AI to formulate or refine answers to questions raised in class discussions or on Discord, enhancing the quality and accuracy of my contributions.
  8. Asking or answering a smart-question
    • AI was helpful in developing and answering smart-questions, especially to deepen my understanding or challenge my knowledge on specific coding topics.
  9. Coding example e.g. “give an example of using Underscore .pluck”
    • In instances like these, AI was instrumental in providing coding examples, which helped me grasp the practical application of concepts like Underscore.js functions.
  10. Explaining code
    • For complex code explanations, I occasionally turned to AI to break down the logic and flow in a more digestible manner.
  11. Writing code
    • My use of AI for writing code was limited. Occasionally, I consulted AI for basic questions related to syntax or to clarify programming concepts, but generally, I relied on manual coding to enhance my learning and ensure a thorough understanding of the material.
  12. Documenting code
    • Similarly, I seldom used AI for documenting code. While AI tools were available, I preferred to manually document my code to better grasp the logic and purpose behind each function and module, asking AI only for help with basic questions about code comments when needed.
  13. Quality assurance
    • When debugging or performing quality assurance tasks, AI provided quick tips on common errors and best practices to refine my code.
  14. Other uses in ICS 314 not listed above
    • Occasionally, I used AI to translate or define unfamiliar technical terms, especially since English is not my first language, which helped me stay engaged and understand course materials more thoroughly.

III. Impact on Learning and Understanding

The use of AI has significantly impacted our learning process by making information more accessible and comprehensible. It has acted as an on-demand tutor that I could rely on for immediate clarifications, greatly enhancing my ability to keep up with the course material. AI has also encouraged a more interactive way of learning, where I can query concepts in real-time, thus reinforcing my understanding through active engagement rather than passive reading. However, we cannot rely on AI unchecked. There is no doubt that we still need to have the ability to learn independently. Knowledge only generates value when we master it skillfully and understand how to use it.

IV. Practical Applications

Beyond the classroom, AI’s potential in real-world software engineering is immense. For instance, AI-driven tools can optimize code, predict bugs, and streamline the development process. These applications not only make software development more efficient but also reduce the barrier to entry for new programmers by automating complex aspects of coding and debugging.

V. Challenges and Opportunities

The opportunities for integrating AI into software engineering education are vast. AI can be used to create more personalized learning experiences and to simulate real-world problems that students can solve, preparing them better for industry challenges. However, while AI is a powerful tool, but it also brings some challenges, such as the temptation to rely too much on its capabilities, which can hinder deep learning and problem-solving skills. At the same time, how to define the relationship between AI and plagiarism also poses a great challenge to us. Educators will continue to discuss this issue for a long time to come.

VI. Comparative Analysis

While AI-enhanced learning offers immediate feedback and interactive problem-solving crucial for grasping complex software engineering concepts, traditional methods excel in fostering deep understanding and critical thinking through direct interaction and collaboration. Traditional classrooms adapt to diverse learning styles and encourage retention through discussion and hands-on application, benefits that AI currently struggles to match. Balancing both approaches could combine the efficiency of AI with the comprehensive, personalized education provided by traditional methods, offering a holistic learning experience in software engineering.

VII. Future Considerations

The future of AI in software engineering education looks promising but requires careful integration to balance AI assistance with critical thinking and problem-solving skill development. Educators must emphasize the ethical use of AI and ensure that students remain at the core of the learning process, using AI as a supplementary tool rather than a crutch.

VIII. Conclusion

In conclusion, my experience with AI in the ICS 314 course was relatively positive, and it relatively improved my learning efficiency and depth of understanding. AI can greatly enhance software engineering education if used wisely. It’s crucial for both students and educators to be aware of its strengths and weaknesses to make the most of it in future courses.