With advancements in AI, tools such as ChatGPT and Github Co-pilot have been used extensively in software engineering and education. AI is becoming smarter and ultimately more helpful for students. In ICS 314 Software Engineering I, I have used both ChatGPT and Co-pilot throughout my learning process and to solve challenges I have faced when completing coding Workout of the Days (WODs) and the final project.
Experience WODs e.g. E18
Once I had Co-pilot set up on Visual Studio Code, it would automatically finish code for me while working on the experience WODS. For instance, for one of our very first experiences WODs (sum of numbers) with co-pilot enabled, the body for each required function was auto-completed.
In-class Practice WODs
I sometimes used ChatGPT for our in-class practice WODs. I mostly remember using it for user interface coding problems. Other than that, I didn’t use any AI in order to work on my problem solving skills for the real WODs.
In-class WODs
I believe for the first two in-class WODs: WOD Typescript 1 and 2, I did not use AI. Since we completed these two WODs after the Typescript tutorials, I was familiar enough with the syntax, it was just a matter of problem solving. Practice and screencasts beforehand also aided in my ability to finish the WODs in time and successfully. However, I did use ChatGPT for the later WODs, especially the ones involving UI design. For example, we had to recreate a website with a fixed floating button in the bottom corner, I had no idea how to do this so I asked ChatGPT and used the code it suggested.
Essays
For the essays, I used AI to an extent and not very frequently. I personally think that it is easy to tell that an essay was written by AI which is why I prefer not to use it. However, sometimes I struggle to see grammatical or spelling errors in my writing which is why I put parts of my essay into either ChatGPT or Grammarly to double-check. Sometimes I would also have trouble getting started on my essays, especially how to structure it. I would prompt ChatGPT to give me a template, headings, or starter questions to boost my writing, because I often just don’t know where to start.
Final Project
I used AI frequently for our final project, Campus Plate Mate, because I would often get errors working with functions that edit, alter, and or delete data to and from the database. I once got an error in a typescript file that took a while to solve even with ChatGPT. Turns out there was a mismatch between the fields in our data model and the function I created to add data to the database. ChatGPT was very helpful in solving similar problems.
Learning a concept / tutorial
I would ask ChatGPT to give me examples on how to use certain Typescript functions. I would also ask for examples in order to understand how to structure code for the UI of a website using React or CSS.
Answering a question in class or in Discord
I did not answer questions in class other than questions asked by other students for which I answered without the use of AI. I also did not ask or answer questions in the Discord.
Asking or answering a smart-question
I did not ask or answer questions in Discord.
Coding example e.g. “give an example of using Underscore .pluck”
To fully understand typescript functions and functional programming, I would ask ChatGPT to give me examples on how certain functions like map or reduce which benefited my learning.
Explaining code
I definitely used ChatGPT to explain code I didn’t understand. I remember asking AI to give me examples and explain in detail classes and constructors in Typescript. I also eventually asked it to explain how CSS classes worked.
Writing code
When first writing code, instead of using AI, I would use examples provided by the screencasts, modules, or previous assignments we have completed. Most of the time the WODs would just build off of the homeworks or previous WODs.
Documenting code
I did not use AI to document code because it was a task at which AI could not be of use.
Quality assurance e.g. “What’s wrong with this code …” or “Fix the ESLint errors in …”
While working on the WODs and the final project, I would sometimes copy and paste code into ChatGPT in hopes that it would fix the errors for me and arrange my code correctly to get the result I wanted. For instance, I had trouble with how to structure containers, divs, rows, and or columns in the front-end code. Sometimes my mistakes would cause the UI to look completely off and with so many lines I had trouble finding the formatting error. ChatGPT always came to my rescue. Copilot would also fix my ESlint errors for me by providing suggestions.
Other uses in ICS 314 not listed
I have not used AI in any other uses in this class.
Even with ChatGPT or Co-pilot at my discretion, I still feel like I was sufficiently challenged and significantly developed my problem solving skills throughout the course. ChatGPT has been very helpful in solving bugs I would not have been able to solve by myself, especially for the final project where we were working under a time constraint. Also, asking ChatGPT to explain code helped me understand the concepts much better if I were to learn only with the resources given to me. ChatGPT is able to explain concepts in a simple way. However, when ChatGPT or Co-pilot could not provide me with a correct solution to a bug or problem, it challenged me to problem solve. Although this would sometimes take hours, it improved my problem-solving skills.
I have used ChatGPT for Capture the Flag cybersecurity competitions as a guide for solving some challenges. Solving these problems took time, research, and looking through learning resources. AI aided that process by helping me fix my syntax for commands I ran in the terminal. ChatGPT also helped me figure out what tools are best used for the challenges I struggled with. AI can most definitely be used as a tool for similar projects and challenges and can greatly improve efficiency.
Although using AI was beneficial throughout my learning process and when completing software projects, my personal view on using AI to learn is mixed. I think using AI can defeat the purpose of learning if used to solve problems that can be solved independently. For example, when Co-pilot would automatically complete my code and offer suggestions for the earlier WODs, I think it defeated the purpose of the experience WODs, such as the ones where the objective was to learn Typescript and become familiar with solving functional programming problems. However, it would be interesting for AI to be developed to use as personalized learning tools in software engineering education.
Traditional techniques such as lectures and interactive classroom activities allow students to develop skills like communication and critical thinking. Traditional techniques can better students’ knowledge retention because hands-on learning allows students to learn through trial and error. However, some traditional teaching methods may not cater to all students, some students are visual learners or have trouble engaging with lectures or textbook learning techniques.
AI enhanced approaches in learning can act as an aid in education, however, they can also be disadvantageous. Personalized learning tools are beneficial for students who learn differently than others. The downside of AI being easily accessible though is that it could cause an overreliance on AI. It can be used by students only as a means to an end rather than to learn and understand concepts.
In software engineering education, AI can be used as a tool to improve efficiency in learning. However, it would be best to have restrictions on its use in order to avoid a potential overreliance on AI in the classroom. We as students need to try out problems independently to gain skills we must need as future software engineers or in any computer science field. With future advancements, AI as a tool will only be more helpful to software engineering students and software engineers.
Ultimately, although I did not need to use AI in all of the aspects that I have listed above, it has played an important role in my learning process and allowed me to code efficiently. With AI, I was able to save time completing projects or WODs. Instead of taking hours to debug a singular error, I was able to ask ChatGPT or Copilot to provide possible solutions. However, being over reliant on AI was something I was worried about. This is why I avoided using AI when solving problems I know I could solve independently with other learning resources and research if needed.
As I have stated before, it is important that AI is not only used as a means to an end. Instructors cannot completely control how students learn and how they use AI so it is up to the student to use AI properly. AI should not be a necessity for students but rather a useful tool.