AI in Software Education: My ICS 314 Journey

17 Nov 2023

Artificial Intelligence Icon

In today’s technologically advanced era, Artificial Intelligence (AI) has become an integral part of our lives, transforming traditional methods across varied sectors, including education. In my journey through ICS 314, I’ve had the privilege to engage with cutting-edge AI tools such as ChatGPT, Bard, and Co-Pilot, especially within the context of Software Engineering.

Utilizing AI in different aspects of ICS 314, including homework assignments, in-class WoDs, and more, has generally resulted in a positive outcome. For instance, during a WoD on functional programming, I solicited ChatGPT to construct a function based on a given instruction. Despite its imperfections, the resultant AI-produced code served as an invaluable stepping stone for refining specific codes further. The inclusion of AI as a supplementary resource indisputably heightened my understanding and promoted skill advancement. Whether tasked to decipher code or pinpoint its defects, AI proved to be an indispensable aide, enabling me to troubleshoot and rectify coding anomalies independently. Though traditional debugging could provide similar insights, it tends to be significantly more taxing time-wise. In non-academic settings, AI’s profound utility manifested strongly during group projects, such as our final project for the Hawaii Annual Code Challenge (HACC). With the ticking clock against us to develop a working prototype, AI empowered rapid iteration of new features, significantly outpacing conventional methodologies. Furthermore, if unfamiliar React codes were to be added, queries directed to the AI model often garnered faster and simpler solutions than perusing voluminous documentation. Despite this, I have occasionally found AI-generated answers lacking the precision imperative for specific coding assignments. Nonetheless, these instances were leveraged as unique learning opportunities to delve deeper into the subject matter. Currently, the main limitation I observe is the lack of a fully functional solution at the first request, reinforcing the necessity for understanding the inner workings of the code to tweak as needed. Precision in phrasing queries also seems to significantly affect the quality of output.

Conclusively, I found my engagement with AI-facilitated methods more stimulating and pragmatic compared to conventional teaching models, enriching my overall learning experiences in software engineering. Although instructor support was essential, their accessibility was limited consequently centring AI tools as my go-to resource. With the swift progression of AI technology, its substantial future role in software engineering education is undeniable. My experience with the integration of AI in ICS 314 was transformational, effectively augmenting both my problem-solving and coding competencies.

Uses of AI reviewed:

  1. Experience WODs (e.g., E18)
    • I utilized AI to understand the problem space, but manual adjustments to the code were still required.
  2. In-class Practice WODs
    • AI provided quick inputs but some solutions required further refining for accuracy.
  3. In-class WODs
    • I used AI sparingly for hints or concept explanations to maintain the essence of hands-on learning.
  4. Essays
    • AI assisted in summarizing related readings, but not in directly writing the essays.
  5. Final project
    • AI was instrumental in prototyping; however, it also presented time costs when outputs needed adjustments.
  6. Learning a concept / tutorial
    • AI was a great tool here, providing comprehensive and understandable concept explanations.
  7. Answering a question in class or on Discord
    • AI was helpful to clarify concepts, though not always suitable for real-time discussions.
  8. Asking or answering a smart-question
    • AI wasn’t as useful due to the deeper, human-like thinking required here.
  9. Coding example (e.g., “give an example of using Underscore .pluck”)
    • AI provided helpful code snippets, but understanding them still required prior knowledge.
  10. Explaining code
    • AI served excellently here, breaking down code into understandable segments.
  11. Writing code
    • AI was useful as a starting point; it helped formulate the essential skeleton of code.
  12. Documenting code
    • AI was not very useful here; creating meaningful documentation demanded a human touch.
  13. **Quality Assurance (e.g., “What’s wrong with this code ” or “Fix the ESLint errors in ”)**
    • AI served as an initial debugger, but final solutions required a human perspective.
  14. Other uses in ICS 314 not listed
    • AI proved useful for quick look-ups of definitions or concepts outside the official course material.