Should AI Be Used in the Classroom?

29 Apr 2024

I. Introduction

AI is an increasingly popular and powerful tool. It can be incredibly helpful in education and in software engineering, but it doesn’t come without risks. AI can be useful to a fault, preventing some students from retaining information long term or getting the problem-solving experience necessary to approach new projects unassisted.

This essay provides an overview of the key concepts and tools related to AI that I have used generally and in ICS 314. For this class, I have primarily used ChatGPT, and I have used GitHub Co-Pilot once or twice.

II. Personal Experience with AI:

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

  1. Experience WODs e.g. E18
    • Explained API/library usage (E18-E20):
      • “Explain how to use the _.map() function in Underscore”
      • “Explain how to implement this function in Underscore <CodeSegmentHere>
      • “Explain how to search by X attribute in MongoDB Shell”
  2. In-class Practice WODs
    • Summarized API/library documentation:
      • “How do I make a button in Bootstrap”
      • “How do I center a div using Row and Col in Bootstrap/Bootstrap-React”
      • “How do I implement this Bootstrap element in Bootstrap-React <CodeSegmentHere>
      • “How do I put text over an image in Boostrap/Bootstrap-React”
  3. In-class WODs
    • I did not use AI during in-class WODs.
    • I knew the material by then from practice WODs other assignments, so there was no need to use AI.
  4. Essays
    • I rarely used AI for essays.
    • Occasionally, I asked for essay topics, but I opted for other my own ideas instead.
      • “Give me some topics to discuss in a short essay about coding standards like ESLint”
    • I also asks for Title/Heading ideas but rarely ever liked those either.
      • “Read this essay and come up with some heading/subheadings <EssayTextHere>
    • At the start of class, I asked for .md filetype formatting suggestions
      • “How do I make a heading in .md files?”
      • I then learned that the usage was the same as Discord messages, which I already knew how to apply special formatting to
  5. Final project
    • I mostly used AI to explain errors in my final project code.
    • In the final project, there were many aspects that were not covered in class, so I had to implement original code.
    • Often, I read the error messages and documentation to fix errors myself, but there were some specific errors that I needed help with.
      • “Explain why my default data is not populating <DefaultDataHere> <InsertDefaultDataFunctionHere>
      • “I’m trying to take elements from a collection, use them to create a component, then place that component in its appropriate section. Explain why this chunk is adding some elements but not others. <CodeSegmentHere>
      • “What is webrick?”
      • “Explain why this Jekyll preview failed”
  6. Learning a concept / tutorial
    • I mainly used AI to learn how to use the Underscore library and Meteor collections:
      • See Section II-1
      • “How do I assign a data field from a collection to a variable in a .jsx file? I want something like: Owner = ‘Data.owner’ <CodeSegmentHere>
  7. Answering a question in class or in Discord
    • I did not answer questions in class or in Discord
    • When working with my group members for my final project, I did not use AI.
    • Instead, I cloned their branch, ran a preview locally, and debugged it “the old-fashioned way”
  8. Asking or answering a smart-question
    • I did not ask or answer smart-questions in Discord
  9. Coding example e.g. “give an example of using Underscore .pluck”
    • See Section II-1
    • Just now!
      • “How do I add a link to an item of a list in a .md file?”
      • Follow up: “No dude, make an anchor in Item 3 that leads to Item 1”
  10. Explaining code
  11. Writing code
    • I used AI to explain issues in my own code (as mentioned in sections above) or to give similar examples, but I did not ask AI to generate all the code for a specific feature/assignment that I was working on.
  12. Documenting code
    • I did not use AI to document my code because I either did not document my code (tsk, tsk, I know, but typically only in individual/timed assignments like WODs) or because I wrote comments manually like in my final project.
    • That is an idea, though, which I may start using in the future.
  13. Quality assurance
    • I asked AI to suggest ways to optimize/streamline my code if I thought it was needed.
      • “This code is repetitive, but I’m not sure how to optimize it, any suggestions? <CodeSegmentHere>
      • “I have four sections here that all are variants of the same function. How can I combine them into one function? <CodeSegmentHere>
  14. Other uses in ICS 314 not listed above
    • I asked AI for installation help if I ran into an issue:
      • “How do I install ruby and bundler with WSL?”
      • “How do I add X program to the system path Windows”

III. Impact on Learning and Understanding:

It’s tempting to use AI as a crutch. It’s quick, it’s easy, and it’s (often) effective. My perspective is that if you use it as a tool it is helpful. If fully rely on it for whatever you are using it for with no understanding of the subject, you’re the tool. I try to stick to the former.

In this class, it has been helpful for my understanding of concepts and how to implement examples into my own projects. It has been extremely helpful for debugging and explaining documentation. You could argue that my understanding is worse off because these are crucial skills for every developer, but I would argue that I have already been practicing these skills before tools like ChatGPT even existed, and I continue to do so now. I do not use ChatGPT for everything under the sun, despite how accessible it may be.

Even when not using ChatGPT, I was still able to do what was asked for this class effectively. I did not use ChatGPT during WODs, and I finished all of them on time (often during RX time, but not always).

Overall, I do not think that my use of AI has challenged my understanding. With or without AI, understanding and mastery only come through practice.

IV. Practical Applications:

I used AI for one personal project this semester. I wanted to use some tools from this class to make something for my girlfriend, but we were not far along enough in the schedule to know how to make a full-blown website yet, so I used ChatGPT to speed up the process due to the short timeframe.

I have since then learned all of the skills needed in much more depth, so I would not have needed to use AI for a project like that if I started working on one now. Other than that, I have not used AI for any “real-world” projects thus far, but may in the near future now that the summer break is coming up.

V. Challenges and Opportunities:

A challenge that I have seen is that it is too easy to become reliant on AI tools and completely miss the opportunity to learn all the concepts taught in this class. However, from my perspective, this comes down to the user, as mentioned in Section III.

I do not think that AI should be banned from the classroom though. I have seen one interesting idea implemented by UH’s own Professor (currently ICS Department Chair) Scott Roberston. In his ICS 111 (Intro to Computer Science) course, Professor Robertson allowed students to use AI if they properly documented and cited their usage of it. A similar approach is being used in this class currently. I am in support of these strategies.

AI is a tool that is used in industry, and students will likely use it regardless of whether professors like it or not. Therefore, I think the best approach is to teach students to use AI as a tool for learning rather than a replacement for it. Giving specific examples of how AI can be used to assist with issues without taking away from problem-solving and other important skills can be highly beneficial to students in the long run.

VI. Comparative Analysis:

As an experiment, I asked ChatGPT to write this section. Here’s what it came up with:

Traditional teaching often relies on lectures and textbooks for engagement and knowledge retention, while practical skill development may be limited. In contrast, AI-enhanced approaches in software engineering education offer interactive simulations, personalized feedback, and adaptive learning platforms to enhance engagement and optimize knowledge retention. Additionally, AI can provide real-time feedback and virtual labs for hands-on practical skill development. Overall, AI-enhanced methods show greater potential for engagement, knowledge retention, and practical skill development compared to traditional teaching methods in software engineering education.

Link to ChatGPT conversation

VII. Future Considerations:

I think AI will continue to play a greater role in software engineering education. A challenge from an educator’s standpoint is that students will continue to get more reliant on it. Perhaps not across the board, but overall I think there will be an increase in the usage of AI among software engineering students.

Unfortunately, there is a significant overlap between what AI is capable of and what students are asked to do in their prerequisite classes. It is entirely possible to get through many coding assignments for lower division classes without writing a lick of original code. This can be dangerous, because students who rely on AI may not be able to perform on exams or in “real-world” situations.

I do not know what the solution to this is. However, I absolutely do not think the solution is to make classes 100% exam-based. I think the best that educators can hope to do is try to stay ahead of the curve and up to date with AI themselves, as well as educate students on the advantages of being self-sufficient and the pitfalls of being totally reliant on AI.

VIII. Conclusion:

I used AI in many aspects of this course, and I know from talking to some of my peers and reading some of their essays that they did the same. As AI continues to grow in popularity and performance, I do not think it likely that it’ll go away, nor will it play a lesser role in education than it does today.

I do not think AI should be feared or looked down upon. In the same way that many problems could be solved with a quick Google search back then, the same can be done by typing the same question into ChatGPT now. Same stuff, different day. I won’t downplay the capabilities of ChatGPT, though. Google sure can’t generate an entire assignment for you (at least at the time of writing).

The best that students can do is understand the advantages and disadvantages of using AI, and the best that educators can do is to continue teaching important skills and to coach students on “proper” usage of AI.