Reflect on Use of AI in ICS 314

20 Nov 2023

I. Introduction

ChatGPT was released on November 30, 2022. In just roughly one year, it has become a hot topic, with practically everything in the world wanting to add the word ‘AI’ to their product. In terms of education, AI seems to be more of a cheat tool than being ‘educational.’ Unlike other cheating tools, cheating using ChatGPT is somewhat hard to detect, especially if the cheater really knows how to use it.

What about software engineering? Can ChatGPT replace Software Engineers? The answer, in my opinion, is not yet. The factors that software engineers need to consider to create an application are numerous. For example, should I use React.js or Angular.js for the front-end? What about the back-end and database, and how do I integrate them all together? Not to mention the various versions and systems that need to be accounted for.

Perhaps it can generate a good result for smaller applications or functions, and that’s how it is usually used in the 314 class. Personally, I didn’t use ChatGPT much for ICS 314 because the results didn’t often match what I needed. However, I did use it extensively for test cases and grammar checks in my essays.”

II. Personal Experience with AI

  1. Experience WODs e.g. E18
    • Not use
    • I didn’t use AI for this part because this kind of WOD is usually associated with templates or materials. Assuming AI didn’t have those materials and attempting to solve the problem would usually result in a faulty answer.
  2. In-class Practice WODs
    • Not use
    • The in-class practice WODs are designed to reflect on what we’ve learned so far in the past week. Using AI to assist me in this part doesn’t make sense because it won’t be able to identify the mistakes or questions that I still have.
  3. In-class WODs
    • Not use
    • I didn’t use AI for this part for the same reason. WODs are usually associated with other materials. Inputting all the materials and asking AI for the desired result usually leads to a faulty outcome, ultimately slowing down the pace of completing my WOD.
  4. Essays
    • use
    • I use AI for my essays because it is a really good grammar checker for my English. For example, I will write a sentence and add ‘fix grammar’ at the bottom. Then, I will go through the sentence and make sure it doesn’t change the meaning of it. Using AI for grammar checking is usually reliable because it follows a standard and is usually not ambiguous. Therefore, AI can check and fix my grammar mistakes appropriately.
  5. Final project
    • Use
    • I will use AI for my final project as an idea generator when I am stuck on something. For example, I will ask, ‘What kind of function can I implement on this particular page?’ This will help me generate some ideas that fit well with the specific page that I am working on.
  6. Learning a concept / tutorial
    • use
    • I usually ask ChatGPT, ‘Explain XXX concept in simple terms,’ and it will reply with a simple analogy so I can understand it. Then, I extend this analogy to a theoretical or conceptual level so that I can comprehend complex ideas in a simpler way.
  7. Answering a question in class or in Discord
    • Not use
    • I don’t use AI for this part because the answers from it are usually too general. When I aim to answer a question in class or on Discord, I am looking for a more specific response that brings up new perspectives rather than just general ideas.
  8. Asking or answering a smart-question
    • Not use
    • I don’t use AI for this part because the answers from it are usually too general. When I aim to answer a question in class or on Discord, I am looking for a more specific response that brings up new perspectives rather than just general ideas.
  9. Coding example e.g. “give an example of using Underscore .pluck”
    • use
    • I use AI a lot for code examples because it is simple enough to produce an example with errors. Moreover, I need numerous examples to ensure that I truly understand how a concept or code works.
  10. Explaining code
    • use
    • This is also a pretty good way to use AI. I was having trouble with the Fetch API in JavaScript. I would just paste the code and ask ChatGPT, ‘What does this code do?’ With the answer it gave me, I would also ask some follow-up questions such as ‘So, how does async/await work?’ until I am sure that I understand the particular concept thoroughly.
  11. Writing code
    • Not use
    • Having AI write the code for me in small applications is fine. However, I usually deal with bigger projects that require many different functions to work with each other. In this case, having AI write the code can cause many issues such as versions, systems, or even conflicts between frameworks.
  12. Documenting code
    • use
    • AI is pretty good at understanding input and providing a general comment. Therefore, using AI to document code is usual for me, especially when I am lazy to comment the code line by line again
  13. Quality assurance e.g. “What’s wrong with this code ” or “Fix the ESLint errors in
    • Not use
    • Quality assurance is usually handled by ESLint, so having AI double-check it doesn’t make sense or prove to be efficient. Moreover, asking AI what’s wrong with my code is also not a good idea since AI probably gives a general explanation of possible errors, which doesn’t solve my bugged code.
  14. Other uses in ICS 314 not listed
    • In ICS 314, I sometimes ask AI if it has a better solution for WODs. I’ve noticed that some of the WOD videos were recorded in 2020 or even earlier, which might be outdated. Therefore, asking AI to update the code can keep me up to date with the latest versions of frameworks used nowadays.

III. Impact on Learning and Understanding:

I believe all software engineering concepts start with a really simple question, and software engineers elaborate on it, expanding it into a concept. I always use AI as a concept simplifier and example generator that assists me in learning and understanding. It is interesting because the central idea of AI is basically a mathematical model that is trained with thousands and thousands of data points, and that is exactly how I learn. Once I have my central idea, I use AI to provide me with thousands and thousands of data points until I thoroughly learn and understand the concept.

IV. Practical Applications:

I think we have mentioned it a billion times: software engineering is not just about coding. Software engineers need to know quality assurance, testing, maintenance, updating to the latest versions, and other skills that are not directly related to programming. Therefore, to create just one good software requires a team with different specialists. Can AI do all the jobs by itself? In the short future, no. However, it does assist humans to make it easier and more efficient. For example, in one of the average movies, Tony Stark successfully creates a time-traveling device by feeding data to his AI ‘F.R.I.D.A.Y.’ and having it simulate many possible results. This can be the future!!

V. Challenges and Opportunities:

The current limitation of commercial AI, such as ChatGPT or even Copilot, lies in their input. Because they’re all using LLM models, they usually accept input from sentences and work with that. However, in ICS 314, many assignments are embedded with templates and various materials, and unfortunately, most AI models don’t have the capability to handle files as parameters to generate results. One potential solution could be to convert all the files into Word format and let the LLM model handle them. However, this process could introduce a lot of typos and human errors, resulting in faulty AI-generated output. Additionally, individuals with poor writing skills can mislead the AI, leading to inaccurate results.

VI. Comparative Analysis:

Traditional teaching methods often make students heavily reliant on teaching materials and good searching skills for Google and other search engines. Search engines use keywords to produce results, so if students don’t know what to search for or where to start, it can slow down the process of knowledge retention. However, with AI, students can ask whatever they want because it analyzes context instead of just keywords, and AI can produce a relatively good result. Even though the result may be general, it at least directs the student on the right track. Overall, AI is really just a modern tool that students can surely learn, but it still requires students to be self-motivated in order to achieve a positive result.

VII. Future Considerations:

At this level of software engineering education, AI can really help in giving students the right direction to work on. I think the challenge lies in whether students can use the tool correctly to genuinely aid their learning or if it’s just going to become a new cheating tool that is extremely hard to detect. Can AI substitute all the teaching staff? I think not. This is because AI produces results based on input. Assuming students don’t know anything about software engineering, providing AI with random input can risk steering the student onto a wrong software engineering career path. Additionally, AI should take input not only from texts but also from video, images, audio, and other files. In that case, AI can be embedded in any format and really assist students in any condition.

VIII. Conclusion:

In conclusion, AI is like an after-school teacher that can teach you anytime you want. Additionally, it produces a proper result that at least won’t mislead the user and saves time searching through the internet. Similar to teaching kids to use a computer, a software engineering course with AI should first teach the students how to use AI or what kind of prompts are appropriate to ask. With all those prerequisites ready, students can start using AI that assists them in learning, and more importantly, the AI is used in a way that is actually educational.