AI in ICS 314: The New Tool

21 Nov 2023

Introduction

The recent emergence of Artificial Intelligence (AI) and its involvement with education sparked a heated debate regarding its usage. Since the release of ChatGPT, many of my professors threatened the class with heavy consequences if we were “caught” using AI to do our assignments. However, I believe that those against AI usage in education only focus on the negatives and fail to realize how it can serve as a powerful tool that helps students understand concepts better. Software engineering is an endless learning process and to keep up with everything is a daunting task. Sometimes, it is also difficult to memorize every detail for different programming languages. Although many languages have similar syntax or structure, their subtle differences can be very difficult to distinguish and recall. AI serves as a quick, helpful tool by providing concise answers or insight to a specific question or topic. Given that students in ICS 314 were allowed to use AI, I have used ChatGPT a few times in this class.

Personal Experience with AI

1. Experience WODs

Experience WODs generally came with a tutorial or a solution to the task. The instructions are very straightforward and the steps are laid out for students to follow. Since Experience WODs are like homework assignments, I had more time to think and process the task, which ultimately resulted in me finishing the tasks without a problem. I have never felt the need to use ChatGPT or other AI for help in getting the tasks in Experience WODs done.

2. In-class Practice WODs

For most of the in-class practice WODs, I worked through the tasks with a partner. There were a few times we would get stuck and not finish, but we never felt the need to use ChatGPT or AI to help us. I mostly treated the in-class practice WODs as a preview of what the in-class WOD would look like, so I did not use AI during practice WODs to avoid being dependent on it during the real WOD.

3. In-class WODs

One of the struggles I faced during in-class WODs was the time constraint. Although I am generally calm under pressure, I prefer taking my time to think about the prompt, especially if it involves an algorithm. However, as mentioned previously, I did not want to be very dependent on AI because you are not allowed to use it during a technical interview. I made a rule for myself that if I could not finish the WOD within the first half of the given time, I would use ChatGPT for help.

Looking back at my WOD submissions, I only used ChatGPT once for the Javascript 3 WOD. I remember this was an algorithm-heavy prompt and I was not able to get the expected results for one of the functions. For this case, I simply asked ChatGPT, “Write a function called unsafe(data, year) that takes a parameter providing a data structured like co2, and a year, and return true if that year is greater than 350ppm on average.” ChatGPT was useful in this situation, as the generated function was functional and helped me avoid getting a DNF. Since in-class WODs are heavily weighed on our grades, I found having the option of using AI to be reassuring. However, I still believe that being dependent on using AI to solve problems will have consequences in the long run, as I may not be able to write functions on my own without the help of AI. To prevent this from happening, I prefer going through the problem on my own first and looking back at the AI-generated function to understand how the algorithm is implemented.

4. Essays

I have never thought about using AI on writing assignments, and will most likely never use it in the future. Although English is my second language, writing is a calming activity for me and as long as I have time to edit my writing, I do not have any difficulties in answering a prompt. Additionally, I have my preferences in writing, whether that is in tone or syntax, and I can imagine myself disagreeing with what AI may generate or suggest. It would be cumbersome to edit the essay that AI generates, and at that point, I rather write the essay from scratch by myself. In ICS 314, we were given a handful of writing prompts for our essay assignments, and I never used AI to write them.

5. Final project

So far for the final project, I have not used AI, as most of the tasks are very similar to previous tasks related to Bowfolios or the Meteor Application Template. However, I can see how AI might help give my group pointers or insight in terms of how to implement a function or debug a block of code.

6. Learning a concept/tutorial

To learn a concept in this class, I often found reading or going through the given resources or doing a quick Google search to be easier to understand. I am not exactly sure if the information ChatGPT gives out is constantly updated or not, and there are instances where they generate false information. If I am learning something new, I want the source of information to be reliable, so I generally avoid using AI to learn a concept.

7. Answering a question in-class or in Discord

I have not used AI to answer a question in class or Discord as I have never felt a need for it. Especially for questions in Discord, if I do not have an answer, I will not address it, as I do not want to provide people with false information. Additionally, those who are active in Discord would address the questions before me, so there was no need for AI.

8. Asking or answering a smart-question

Similar to the previous response, I have not encountered any instances where I needed to ask or answer a smart-question, so I have not used AI for this case. However, I can see how AI might help organize your problem or issue into a clear and concise question to ask in the smart-question channel for others to understand and give responses to.

9. Coding example

There were a few instances where I used ChatGPT for coding examples. When learning UI designs, there were times I could not get the answer I was looking for on Google or the official documentation. For example, if the footer had a gap from the bottom of the screen and I wanted it to be at the very bottom of the screen, I would ask ChatGPT, “How do I make a footer be on the bottom of the page in bootstrap?” The examples ChatGPT provided were very helpful and provided me with new information that I would not have obtained otherwise.

10. Explaining code

I have not used ChatGPT to explain the code. In this class, the provided codes are generally straightforward and well-explained. We also are taught the concept and materials before seeing complex code, so understanding a block of code has never been an issue. However, I could see how AI could help explain code that is written in an unfamiliar language.

11. Writing code

As stated in my previous responses, I prefer to avoid using AI to write code as it can hinder my learning and development in programming skills. However, it does help me when I am in absolute desperation to write code or implement an algorithm. In such cases, I prefer to write code by myself before I rely on AI to write code for me. Even then, I prefer to look over the code they generated and re-write it myself rather than copy-pasting it.

12. Documenting code

I have never thought about documenting code using AI, and I believe this could be useful for people who do not have much experience in documentation. However, the generated documentation should be carefully reviewed as AI may not be able to fully understand the functionality of the code you want to document, and may incorrectly document the code. I find documenting to be a straightforward task as it is essentially a short explanation or summary of the functionality of the code, so I do not see myself using AI to write documentation.

13. Quality assurance

In this class, I have never used AI for debugging or fixing an error, since the ESLint provides enough insight into the error in the IntelliJ IDE. However, I have used it a few times outside of class when I was having errors where the program crashes or does not run at all. I would simply paste my code to ChatGPT and ask, “I am running into these errors [insert errors], what is wrong with my code?” Most of the time, ChatGPT would give accurate pointers and useful information in regards to where my error might lie, but the error often persists and I would have to spend time debugging myself. I believe AI would be useful in finding errors for shorter blocks of code, such as a single function.

14. Other uses in ICS 314 are not listed

As mentioned above, I avoid using AI as much as possible to maximize my learning. Aside from helping me write code or providing me with examples, I cannot think of any other ways AI would be helpful in ICS 314.

Impact on Learning and Understanding

Although I avoid using AI to help solve problems, AI is extremely beneficial in comprehending and developing problem-solving skills. Especially for topics that are difficult to understand the first time around, AI breaks it down into simpler terms for easier comprehension. In terms of software engineering, I think AI is a powerful tool in getting answers to specific issues. For instance, if I wanted to write a specific function, I would not be able to get the exact implementation on Google or Stack Overflow. However, AI almost always generates the exact function that is ready to be used. Overall, AI has enhanced my understanding of fundamental software engineering concepts, however, I should not rely on it too much.

Practical Applications

I have used AI outside of ICS 314 a few times in many cases. I am currently working on an Android application project using Kotlin. Although I have been writing Kotlin code for almost a year, the language is constantly changing as it is still a new programming language. I use ChatGPT with simple questions such as, “Create a text field using Compose in Kotlin” to see examples of how to design UI, and so far it has been saving me a lot of time as the official documentation is very sparse in information. I am also currently in MATH 471, an upper-level probability course that involves heavy proofing. Since I have very little experience in writing proofs, I often use ChatGPT to make sure my proof is valid before turning in my submissions. I find this very helpful because it acts as a grammar check but in terms of mathematics. AI is a powerful tool that can be used not only in software engineering but in all aspects of learning. If it is correctly used, it can reinforce knowledge more effectively than just taking notes or reading the textbook.

Challenges and Opportunities

A challenge that I faced, and most likely other students as well, was the temptation to let AI take over and do all of my tasks. As college students, we are often overwhelmed by the amount of assignments to complete with very limited time. Since the AI is very knowledgeable and capable of doing simple tasks, it is very tempting to copy and paste minor but time-consuming tasks into ChatGPT to get assignments done. Of course, this goes against student honesty and the major downside of using ChatGPT for assignments is not learning, which defeats the purpose of paying tuition and attending classes. I only use ChatGPT as a tool, similar to browsing on Google for supplementary information.

Another challenge I faced was the accuracy of ChatGPT. For some topics or concepts that are constantly evolving, ChatGPT will release a disclaimer stating that their provided information may be outdated. In terms of programming, some of the code that ChatGPT provides contains errors or deprecated functions, which I could only figure out until I implement them in my code and see that it does not compile or run as expected. This leads to a significant time consumption, more than anticipated, at times.

Despite its challenges and limitations, I believe that AI should be integrated into software engineering education as it provides students with an additional source of information to learn and enhance their skills. A section of the class dedicated to learning how to incorporate AI into learning may help understand how to properly use AI.

Comparative Analysis

Traditional teaching methods include in-person or online lectures, tutorials, and the usage of slides, textbooks, and notes. Comparing these methods to AI-enhanced approaches, there are aspects of traditional teaching methods that AI cannot replace. For example, it is impossible to reach out to a classmate, teaching assistant, or even the instructor for help, if learning was to be solely based on AI. Furthermore, the responses that AI generates are not always guaranteed to be accurate or even up-to-date. In terms of engagement, traditional methods allow for more interactions between students and instructors, which can increase motivation and positive emotions throughout the learning process.

As for knowledge retention, I believe that is solely dependent on the student. Every student has different preferred learning styles and may find it easier or harder to learn independently. The benefit of traditional teaching methods is that the information is given in steps, starting from an introduction to gradually introducing more complex content. Therefore, the learning process is very seamless. However, with AI, the requested information is given directly to the student, with no introductory steps. It should also be noted that with traditional teaching methods, the instructor usually has a fixed scope of what to teach to students. However, with AI, there is no scope, so the information provided can be difficult to understand.

Practical skill development also depends on the student. Some may prefer a hands-on learning environment, while others may prefer to learn by asking AI questions. Both teaching methods allow students to practice their knowledge, so using a combination of both may maximize development.

Future Considerations

AI will take on more significant roles soon not only the software engineering education but in all aspects of learning. Although it may not guarantee accurate responses each time for now, with undergoing improvements, it will soon become an additional resource for students. Potential advancements in AI could include generating practice exams or coding prompts for students to practice before in-class WODs or exams, feedback on areas of improvement in terms of skill, and a more humane response to motivate students throughout the learning process. With any technology, there are challenges, and with AI, ethical usage will be one of the largest issues. For AI to officially be one of the main resources for students to use, there should be regulations regarding when and how to use AI ethically. This is especially important in software engineering where programming is an acquired skill, and using AI may hinder students from experiencing coding by themselves.

Conclusion

AI has opened doors to new opportunities and possibilities in the education field. My experience with using AI such as ChatGPT has been positive for the most part, however, some challenges and improvements must be made to fully rely on this technology. After being threatened with consequences numerous times by previous professors, using ChatGPT to generate something I will use, such as a block of code or even a function, feels like cheating, though that is not the case. Since I am still developing my programming skills, I also prefer to struggle with coding instead of getting it right the first time with the help of AI. In the future, I can see AI being an extremely powerful resource for students. It not only acts as a fine-tuned search engine but also takes on the role of a teaching assistant, except it is more convenient as students can ask for help or feedback at any time and from anywhere. Combining traditional teaching methods with AI can provide students with options to find their best-fit learning style and further reinforce their knowledge. Having a portion of the class or even an entire course dedicated to ethical AI usage in education may help all students understand how to properly use AI so that everyone has the same fundamental knowledge in regards to integrating it into their learning.