Exploring the Role of AI Tools in Software Engineering Education

21 Nov 2023

Introduction AI actually didn’t write this essay. It was a play on words with AI and I sounding similar. With that out of the way, AI is a powerful tool capable of many things. Software Engineering is a field where AI is expected to be a powerful tool. With things like ChatGPT and GitHub CoPilot, there are many tools to help develop software. So how do these tools stack up in terms of usefulness in a software engineering class?

Experience with AI

  1. Experience WODs e.g. E18 For experience-based Workouts of the Day (WODs), I chose not to use AI as I believed it was more important to personally undergo the learning and execution process rather than relying on AI.

  2. In-class Practice WODs For the in-class practice WODs, the only AI I used was GitHub CoPilot. I did not use ChatGPT because I felt that it was not necessary. I used CoPilot to autofill some of the lines of code I was trying to type. I felt that it would usually save me time rather than having to type it out for all of them.

  3. In-class WODs Similar to the practice WODs, I only used GitHub CoPilot. I just felt that it was faster than typing out all of the code I was planning to write sometimes, and if I did not like the suggestion, I could easily ignore it.

  4. Essays I did not employ AI for writing my essays. I never felt the need to do so, as the ideas generated by AI might not necessarily align with my own. However, I did ask ChatGPT about the benefits of using AI to write an essay. According to ChatGPT, using AI for essay writing can offer benefits such as time-saving, enhanced productivity, improved accuracy, access to vast information, language enhancement, consistency and coherence, customization and personalization, and learning opportunities. It is important to note, though, that AI may lack human creativity, critical thinking, and nuanced understanding. Therefore, it is essential for writers to review and edit AI-generated content to ensure it meets their standards and conveys their intended message accurately.

  5. Final project I have only used CoPilot for the final project so far. I can imagine using ChatGPT for some mockups of more difficult functionalities in the future though. I think getting basic general functionality and editing it for your use is a usable function of AI.

  6. Learning a concept / tutorial For this class, I have not used AI for learning a concept / tutorial. I think this is mostly because the concepts and tutorials are provided to us in many of the modules and readings for the class, so I would look to those for my help.

  7. Answering a question in class or in Discord I never Used AI for answering a question for this class. Most of the time I would just look up my question on Google and would get satisfactory results. Perhaps this is just due to me not using AI too much, and in the future, I will default to using AI to answer my questions.

  8. Asking or answering a smart-question This is similar to the one I had above, I never really asked AI for questions, I just defaulted to google. I think to me there is an extra layer of friction, as you need to go the website first, while just simply searching something can be done by just typing it in, and it will go to your default search page.

  9. Coding example e.g. “give an example of using Underscore .pluck” In this class, I have not used this, but I could see how this would be useful. I do look for examples of code using certain things, but I typically just go for documentation or other people’s uses rather than going first to asking AI. This is just me not defaulting to asking AI for an example of code.

  10. Explaining code I personal have not used AI to explain code for this class because I felt that most of the code was understandable, and if there was difficult code, there were videos that went over most of them.

  11. Writing code I have not used AI to write full files of code, but I have used GitHub CoPilot to write portions of code. The suggestions are typically pretty good, and helped in the fact that I did not need to type all of it out. I did have to make changes to the code it suggested, but I think that took less time than typing out all of the lines.

  12. Documenting code I have not used AI for this purpose, as in this class, I do not recall having to document code. I think this would be a code usage of AI, though you may have to double check that the documentation is accurate.

  13. Quality assurance e.g. “What’s wrong with this code” or “Fix the ESLint errors in this code” I did not use AI for these issues, as IntelliJ already has a way to fix most ESLint errors, and the errors in the code would get noticed by the browser console when the errors occurred. I think there is a good chance that AI could be helpful for this usage.

  14. Other uses in ICS 314 not listed I have not really used AI for other things in ICS 314. I am not really using AI for my classes, so I do not default to AI as my problem solving solution.

Impact on Learning and Understanding I think personally, AI has not really impacted my learning or understanding in terms of software engineering concepts, as I haven’t really used AI all that much. I think that AI can both enhance and detract from learning and understanding. If you simply use it to write all the code that you need, then it may detract from learning. If you use it to explain things that you don’t understand and ask for explanations, I think that it can enhance the learning experience.

Practical Applications: AI has been used in many different things. AI can be used to generate mockups for many people, in things like code, and even images. AI is even used in things like checking for plagiarism. Tools like Grammarly use AI to help determine plagiarism and provide tips to improve your writing.

Challenges and Opportunities: AI has its uses here and there, but it is not necessarily always correct. AI can give you incorrect information, and if you are unaware of it, you will end up with the incorrect information. In terms of software engineering education, I think that AI can be used to break down code into snippets that are easily understandable. I think it could also be used to teach ideas and could be used like a personalized tutor.

Comparative Analysis: In terms of teaching, I think for more traditional learners would benefit from the traditional learning style. I think for people who need more help or are trying to get more direct teaching, AI can be a really useful tool. I think AI can help engagement, as long as they are using it to learn rather than to answer their homework questions. Traditional learning has to cater to a lot of people, while AI can focus on an individual user.

Future Considerations: I think AI will have a big role in the future of software development. It can be used to help, and even develop pieces of software. In terms of education, I think AI should be used as more of a supplementary tool rather than the primary source of information. I think gathering a strong foundation of knowledge, and then having AI to enhance that knowledge and be able to know when AI makes a mistake is the best way to utilize AI.

Conclusion: Overall, AI is a powerful tool, if used properly. I think that in terms of this class, AI can easily be harmful and helpful. Personally, I have not used much AI, but I think in the future, the class should go over some helpful ways and examples of how to use AI to enhance the learning experience.