In this class, I have only made use of ChatGPT, so I’m only familiar with how it functions. I believe that AI is a very useful tool for education and software engineering alike. For both, AI can teach and explain concepts to people that they were previously not familiar with. I think that for education specifically, AI can be very helpful to pull key ideas out of readings or textbooks. This ability to “trim the fat” from readings can save a lot of time for students who are just looking for the key points to take away from content. However, this is primarily effective with simple things. When concepts become more complex and nuanced, AI starts to struggle with giving correct advice. The same is true with software engineering. I’ve noticed that ChatGPT is pretty good at writing code when it is simple, but when code starts to become more obscure and complex, ChatGPT’s answers start to break down.
I have used AI in class this semester in the following areas:
1: Experience WODs e.g. E18
I have used ChatGPT in many Experience WODs, but especially in E31. This was specifically because I was not comfortable with using the style.css file. ChatGPT was able to make the files for me, but also taught me how to use them, and provided me with examples to further explain how they are used. For E31 I gave ChatGPT specific questions, with one being “How do I change my text color and font?” I have used ChatGPT in other Experience WODs as well, especially when I would get stuck on something that I wasn’t able to understand myself. I think that this allowed me to be more efficient in learning coding concepts that would’ve originally taken me much longer to figure out myself.
2: In-class Practice WODs
For the in-class Practice WODs, the early ones made me realize that I take a long time to write code, and that I’m not as fast as I would need to be in order to finish both the Practice WODs and WODs on time. For that reason, I would attempt to do the Practice WODs with less of a reliance on ChatGPT to help me write code in order to practice for the real WODs. If they became too difficult for me to do on my own, I would then use ChatGPT as sparingly as possible, in order to try and bolster my own knowledge.
3: In-class WODs
For the in-class WODs, I took a completely different approach towards using ChatGPT. Unfortunately, I was never able to code as fast as I would have liked in order to keep up with the In-class WODs, so I ended up heavily relying on ChatGPT to code for me. I also realized that some of the later WODs we were doing were completely out of my level of skill. These were the Meteor 1 and Meteor 2 WODs. For these, I was focused more on giving ChatGPT specific prompts for what I wanted. By giving ChatGPT these specific prompts, I was able to slowly make web pages that resembled what I wanted. Something that I found out about ChatGPT was that giving it broad prompts to do would almost always result in something that wasn’t close at all.
4: Essays
I have used ChatGPT in some essays, but only to help generate key points for the essay itself. An example of this would be my Reflection on Design Patterns Essay. My three key points were generated by ChatGPT. I could have come up with three points myself, but it would have taken longer, and they would likely be worse points than what ChatGPT could come up with. I think this because ChatGPT can process much more readily available information than I can, and for something like Design Patterns, its ability to access and process lots of information would provide better results than my own personal experience from ICS 314. Since these points were also quite broad, I was able to explain them easily and make connections between each point and my own coding style.
5: Final project
For the Final Project, I have used ChatGPT, but more specifically to teach me concepts that I don’t quite fully understand. This is because I’m not under time pressure like the WODs, so I am allowed more freedom to develop a more complete understanding of my code. Although I was able to have it explain some concepts for me, other complex ones coming from it seemed to make less sense. Something that I’ve noticed about the Final Project is that since the code is much more complicated than that of the WODs or Experiences, ChatGPT tends to suffer a lot more. An example of this was when I asked it to “Make a student role.” It was not able to do this at all, as the code responsible for making and storing roles was scattered across multiple different files. Another issue is that ChatGPT will always attempt to make the answer it gives seem correct, even if that is not the case. If someone is not careful, ChatGPT could trick them into thinking the wrong answer is correct. This is why it is important to verify the code you receive from AI engines.
6: Learning a concept / tutorial
In the final project, I asked multiple questions pertaining to how components and pages interacted with each other in html. Through these questions, I was able to develop a better understanding of how to display components on my pages and make components that would be useful on multiple pages. I also learned how to use schemas in my components which would allow me to only display the information that I wanted. Some of the example questions I used were “How would I write a schema with only the name and description?” and “How do components and pages interact with each other?” After I asked these questions, ChatGPT was able to give a detailed explanation about how they work, and I was able to understand their concepts relatively well. I was able to quickly implement them into my final project.
7: Answering a question in class or in Discord
I found ChatGPT to be very effective at answering the questions presented in class. I’ve found that using ChatGPT for broad subjects is very helpful for simplifying information and finding key ideas. Since most questions asked were about broad topics, ChatGPT excelled at finding a lot of information and presenting it in an understandable way.
8: Asking or answering a smart-question
I’ve asked ChatGPT a lot of smart-questions as well, and I would consider most of my questions towards it regarding coding examples to have been specific and concise. I think that depending on the content and complexity of these types of questions, ChatGPT can give a good answer or not. If the question content is too difficult, ChatGPT will struggle to give a correct answer.
9: Coding example e.g. “give an example of using Underscore .pluck”
A specific coding example that I used from ChatGPT was “Make a white navbar with an image centered at the top and multiple options centered under.” I used this during one of the in-class WODs, and it was asked specifically with only the navbar and a few elements in mind. This is because I wanted to keep the request concise, and not change other elements of the code. After I used the code from this, I still had to make multiple changes to the navbar myself, as ChatGPT was not completely perfect in replicating what I wanted.
10: Explaining code
When I was using ChatGPT to learn specific coding concepts, I would ask it to explain code and how it works all the time. Something that I asked for was “Explain cards in html.” Since this was pretty simple, ChatGPT gave me a useful detailed explanation of how cards worked and what code I could use to manipulate them.
11: Writing code
I also used ChatGPT to fix ESLint errors. It was generally able to do this, but it was never completely reliable. After copying and pasting code from ChatGPT to fix errors, I would always make sure to check what it changed myself and ensure that no unintended behavior would occur because of its changes.
12: Documenting code
Something I also noticed when working on the Final Project was that ChatGPT would create comments that would explain what its own code did. This enforced good coding practices and encouraged me to use more documentation in my own code as well. An example of this is in the SkillsData checkbox component it wrote for me for the final project.
// SkillsData.jsx
import React from 'react';
import PropTypes from 'prop-types';
import { CheckboxField } from 'uniforms-bootstrap5';
// Define your skills array as a JSX component
const SkillsData = ({ skills }) => (
<>
{skills.map(skill => (
<div key={skill}>
<CheckboxField name={`skills.${skill}`} label={skill} />
</div>
))}
</>
);
// Define prop types for the SkillsData component
SkillsData.propTypes = {
skills: PropTypes.arrayOf(PropTypes.string).isRequired,
};
export default SkillsData;
13: Quality assurance
Quality assurance of code was something that I would do myself after asking ChatGPT for input. I would ensure that I understood the code ChatGPT gave me, and read over it to make sure that it worked as intended. ChatGPT has always written code that was clean and organized, with comments that showed what segments of code do. This has made assuring the quality of the code written was easy to do, as the coding style was clean and easy to follow.
14: Other uses in ICS 314 not listed above
In ICS 314, some other ways I used AI were in trying to find the best ways to do agile project magnagement. I asked ChatGPT to try and help me divide up work properly between teammates, but this wasn’t very effective because it did not know the scale and scope of the project I was trying to make. It ended up giving me answers that were not helpful, and also not specific. It also did not take into account the indvidual strengths of each team member.
I would say that AI has positively impacted my learning experience in this class. Using ChatGPT has both helped me understand content, and become more prepared for competent use of AI in the future. I would mainly consider the use of AI in this course to as practice with another tool in the toolbelt of software engineers. Throughout the course, it has benefitted both my comprehension and skill development towards coding as a whole. I would consider it a second teacher for learning new concepts that I don’t understand. However, I don’t think it has helped my ability to problem-solve individually, as I was reliant on it to help me, so I was less inclined to try and resolve issues in my code myself. Overall, I would say that the AI technologies I used throughout this course have very much enhanced my understanding of software engineering concepts. The explanations and example code provided by ChatGPT have greatly aided in broadening my knowledge of coding as a whole.
In my opinion, AI has the potential to massively improve multiple aspects of our lives. Many things that people are tasked with doing can be handed off to ai bots, which can complete tasks with higher efficiency. An example of this is self-driving cars. These cars drive using an AI system which takes into account everything that a human driver would. Studies show that self-driving cars are already safer than humans, showing that they can complete complex tasks at a higher efficiency than humans can. In my opinion, in the future, driverless cars will phase out cars driven by people entirely, as they would likely only become safer and safer than people as time goes on. Another specific example of AI use can be shown in video games, where experimental anti-cheat AI is being developed, in order to stop cheaters. This would replace less efficient algorithms and people who would be tasked with watching cheaters in order to determine if they were really cheating or not. I think that currently, a lot of AI applications still have a good amount of work to be done until they are ready for widespread use, but they will only get better with time. For software engineering specifically, I think that AI applications will eventually replace a lot of human workers as it gets better and better at doing their jobs. It would be able to work all the time without rest, and have perfect communication with other AI applications if doing group work. As their own intelligence rises over time, they will likely outperform the most skilled humans at doing software engineering work. I think most jobs would eventually become unnecessary for software engineers. They would only be needed for supervision of the AI’s work.
I think that one issue with how ChatGPT works is it will always try to convince the user that the answer it gives is correct, even if it is wrong. There have been many times where ChatGPT was wrong about how its code worked, but always attempted to say it was correct. This is detrimental because it can mislead and trick users into believing that incorrect code is right. However, one big oppurtunity that I believe can be taken with AI is customizable student learning. Since AI is adaptive, it can learn to find the most effective teaching methods for different types of learners. Students naturally have differing personalities, habits, and learning styles, so having an AI that can analyze that information and create lessons around it would be greatly beneficial for teaching. AI could also compile student data, and make it readily available for the teacher, so they can also benefit from understanding their students’ learning styles.
Traditional teaching methods still have merit when compared to AI-enhanced approaches. There are a wide variety of ways that students learn at their best, and traditional teaching methods are one of them. I have some friends who can best utilize traditional teaching methods and thrive in them. However, I would say that I am not one of those people. For me, the AI-enhanced approach that ICS 314 took allowed me to better learn because it let me quickly adapt my knowledge when necessary. If I ever had a question to ask, I would always be able to use ChatGPT to find an answer that was most likely correct. Where traditional lectures I would slowly lose attention as time passed in the class, engaging with ChatGPT was enough to keep me focused on what I was learning. This kept me engaged in the content and especially helped me in getting past roadblocks in my knowledge. If I was confused about something in a traditional class, asking the professor would take away valuable class time from everyone. Also, while waiting for the professor to accept questions, they could have covered multiple topics that built off of what I was stuck on, leaving me multiple steps behind. Just asking the question to AI might not give a completely accurate answer, but it would at least allow me to have a foundation for the rest of the information being presented. As far as practical skill development goes, using AI in and of itself is a practical skill that should be developed, as I believe it will play more and more of a major role in our lives as it gets smarter and smarter. Something that could be utilized more from AI engines that I don’t see as much is asking it to give practice problems in order to develop certain skills. These would need to be verified to prove their accuracy, but I think that using this could allow teachers and professors to consistently create new problems for students to work on as well as develop personalized problems for students having trouble with certain topics. In my opinion, more teachers should experiment with AI-enhanced teaching, as I think it holds a lot of potential to aid in student learning. I think that in future software engineering education, AI could make the jobs of teachers and professors much easier. Something that I think could be experimented with in the future could be using AI to generate lesson plans, questions, and study materials for students to use.
Some things for the future that I would consider when using AI, is that unless the AI is in a closed system, things that are said to it can be accessed by the public. This may be an issue if someone is using AI to code things for private purposes, or coding something that needs to be heavily secured. Making a closed system and cutting off AI from the internet makes it safer to use, but much less powerful. As the power of AI will probably only grow over time, I think that learning how to best utilize it would become a powerful skill. As time goes on, I think that the baseline level of knowledge for competency for software engineering will become lower and lower, as AI engines like ChatGPT become more and more able to write code for us. Even though I believe this is the case, I still think it is important not to become reliant on AI engines like ChatGPT, as I believe there will always be considerations that only humans will think of.
I think that AI has a big place in our future, and will only continue to be more and more prevalent in our lives as time goes on. In my opinion, it is likely to replace many potential jobs as well, if it ever becomes more efficient than humans at doing work. For these reasons, I believe that ICS 314 has allowed me to build skills that will become far more useful for me in the future than what I have done in my other classes. Learning to work with AI is something that I believe people will be doing much more in the future, and building skills with it now is important to keep pace with the rate at which new technologies develop. This class has showed me that there are plenty of ways to use AI, and that it could prove to be a valuable tool when during software development.