Learning Software Engineering with AI Tool Integration
20 Nov 2023
Using AI in Software Engineering Classes
This image was generated with ChatGPT. Prompt: “generate an image for this essay [paste essay text].”
Introduction
The recent development of AI that has led to widely accessible tools has specific relevance to learning Software Engineering. When a question arises, a quick prompt to ChatGPT can save clicking through pages upon pages in StackOverflow. When typing lengthy repetitive code, CoPilot saves a lot of mindless time that can be better spent on other tasks. Recently, I had the experience of trying and failing to read the documentation for some software I was trying to install. When I asked Bard, I got detailed steps that led me to complete the installation within minutes.
Personal Experience with AI
- Experience WODs: I found I did not have to use much AI for these particular WODs. The one memorable case where I found AI helpful was in trying to decide on an Underscore function to use. Also, I could have read the documentation, but time was of importance. For example, I asked ChatGPT whether there was an Underscore function for calculating percentages. I got the answer no, which allowed me to quickly move to a different solution.
- In-class Practice WODs: Since the practice WODs were not graded, I had some time to experiment with finding different solutions using AI. I have tried copying and pasting my code into ChatGPT, and asking it if there was a better way to solve the problem at hand. I got some mixed results from this, and feel like I would have benefitted from being more specific.
- In-class WODs: I found AI particularly helpful when I was stuck during a WOD. The high pressure of the situation makes it uncomfortable to spend too much time trying to solve a single bug. I found AI tools to be very good at finding small syntax errors in code, for example to find missing semicolons. To achieve this, I would copy a part of my code and ask “why is this not working?” Even though my language was vague, AI seemed to understand it just fine.
- Essays: I do not think AI does a good job of writing essays from scratch, since it tends to have a strange tone and word choice. It does excel at helping brainstorm ideas, and at editing essays that I have already written. I also ask it questions if I cannot think of the right word to complete a sentence. A prompt I have used is: “Give me some word options I could use to complete this sentence.”
- Final Project: As of now, I have not yet used any AI tools for the final project. It is still quite early in the process, so that may change.
- Learning a Concept/ Tutorial: I find Bard to be quite useful at accessing information and breaking it down into steps, as in my example in the Introduction section. ChatGPT recently released the functionality to browse the web, but I have not tried it much yet.
- Answering a question in class/ Discord: I have not used AI for this, since I have never felt the need to have arisen for this particular use case.
- Coding example: I have used ChatGPT for quite a few examples of Underscore functions. Reading the description works too, but sometimes it is easier to see an example used in context, e.g. “show me some examples of normal code vs code using Underscore functions.”
- Writing code: Although I try to avoid having ChatGPT write code for me, I do find it useful in correcting and editing code I already have. Sometimes I do have it generate simple code for me. An example from another class: I wanted a function that printed both to the console and to a file. It was not part of the assignment criteria, and I saved some time by asking AI to do this for me.
- Documenting code: I have not used AI for this, because I have found documenting code to be a straightforward task so far. I could see the potential for use in documentation once code becomes more complicated.
- Quality Assurance: I quite often ask ChatGPT the question of “What’s wrong with this code: [paste code here].” Many times the solution is a simple missing semicolon, or an extra bracket.
- Other: I have tried to use AI to better understand meteor template’s structure. I found I was not able to word the question in a way that could get me a useful answer. I am not sure if the information I wanted was not available, or if I just asked the question wrong.
Impact on Learning and Understanding
I have found the use of AI to be extremely beneficial in this course. From fixing my code errors, to explaining concepts that I was struggling to understand, AI has helped me in more ways than I initially thought it would. It is a lot more convenient and easy to understand when I can frame my questions in any way I want, vs Google searches that require specific language to find the results I am looking for.
Practical Applications
On a tangential topic to how it has helped in class, I have found it helpful in practicing Software Engineering outside of class. I have been working on Leetcode problems for internship interviews, and ChatGPT has helped to break down code line-by-line, and explain concepts I am fuzzy on. I have found this to help my understanding of the ideas.
Challenges and Opportunities
I think that allowing integration of AI into the Software Engineering class has been crucial to helping me understand the required concepts. AI tools are continuing to evolve rapidly, and I think there is a lot of potential for further integration. When this class started at the beginning of the semester, ChatGPT could not browse the web or receive file uploads. Now it can do both.
Comparative Analysis
One major difference I have discovered of using AI tools from traditional learning is how practical it is to learn new concepts. Where before I would have to painstakingly read textbook chapters, I can now have a conversation with AI instead. One prompt that has made a huge difference is: “explain this concept in a simpler way.” This will lead to the concepts being broken down into smaller chunks. Whenever I do not understand a single concept I am able to ask for expansion on just that issue.
Future Considerations
In a lot of classes, using AI tools can be frowned upon and considered cheating. I think Software Engineering, in particular, is a class where this is not the case. I think AI models will continue to grow and improve, providing even more potential for use in the classroom. Rather than spending time on tedious tasks, AI allows for students to learn in a convenient and fast way. Questions that would usually require an email exchange can now be asked of AI instead.
Conclusion
Learning with the use of AI in the classroom has been a very different experience than normal classes. Doing so has improved my capabilities in using AI tools in an optimal manner, and allowed for me to expand my understanding on a variety of topics. In the past, I have found myself ignoring topics I do not have a deep understanding of, since reaching a deeper understanding would require a lot of work–and most likely, reading a textbook. It is now a lot easier to learn these topics, and I find myself curious to find out more. I believe that AI should continue to be used in classes, and perhaps expanded to more in-major classes other than Software Engineering.