Can you tell this image was AI generated? (notice the hands!)
I remember not too long ago in highschool, I would have two options when it came to getting help for certain subjects; I could either stay after school with my teacher and ask a few questions about what I didn’t understand on the homework, or I would wait until I got home from tennis practice, get onto a voice chat using Discord, and ask my friends how they approached the homework problems we had while they queued up for a Counter-Strike match. Only a handful of years have passed, but the landscape is a bit different. With the rapidly growing availability and integration of AI tools within our culture, and especially in education, there has been great discourse as to how it will affect the quality of student’s learning experience. I like the description of AI as a tool, because that is exactly how I’ve used it in ICS 314 - Software Engineering. While there may be more coding oriented tools available to use for software development, I mainly had experience using ChatGPT to aid in my conceptual understanding of the course materials.
My personal experience with AI in ICS 314 - Software Engineering mainly consists of using various models of ChatGPT. Within the span of one semester, ChatGPT went from 3, 3.5, and to 4 which showcases how incredibly quickly this technology is improving even in its infancy.
These are the various situations in which I had the opportunity to incorporate AI in my coursework, and how my experience of it was:
If I was purposeful with my use of AI, it greatly enhanced my learning experience. What I mean by purposeful is that it would be easier to get good at writing detailed prompts that will result in the AI writing my code for me, but I wouldn’t learn much by using it that way. Instead, it is much more effective to use it as a personal tutor that gives you explanations to specific case-by-case situations and problems you are coming across. For example, instead of giving the prompt, "write a function that takes an array and reverses the order of the elements" I could instead ask, "What steps should I take when writing a function that takes an array and reverses the order of the elements?".
I could see AI being used for giving ideas on how a specific task or function can be accomplished, and what would be the most practical route when considering readability, complexity, scalability, and security of applications. When addressing real-world software engineering challenges, it is important to have your project reviewed not only for its functionality, but for its security as well. AI could be used to find and address potential security vulnerabilities when software engineers are designing systems. It’s like being peer reviewed constantly and being advised on what could be potential problems down the line.
Since the development of AI in any field of study is still fairly new, there has not been much incorporation for integration of AI in software engineering education. There has only been the addressing of its existence and adaptation to its evolving capabilities. If I were to suggest ways to involve AI in the teaching of software engineering more, it would be to teach students how to use AI most effectively in their software engineering and learning pursuits in general. Since AI is a tool, you need to know its capabilities and how to be creative in using it. Giving a section on how to use AI to be successful would be beneficial for the success of future students.
Software engineering is one of those fields where there is a lot of searching online for definitions, examples, and solutions to certain errors. I feel this is the case because there are a lot of conceptual and abstract things to learn, like what are datatypes? And what are the advantages and limitations of using each one? You are going to have a lot of questions about specifics when you are a student. Traditional teaching methods, whether that’d be in person or online, has a limitation on how much tailored help you can receive with concepts and assignments. You can only really feel engaged with the learning process when you are going back and forth with the person teaching as they are walking you through the concepts and pausing with you when there are any hiccups in understanding. If AI were to be incorporated more freely, students can get immediate feedback on their level of comprehension when completing assignments. They would be able to learn at a pace that suits them better and engage with the AI as a personalized tutor. The best time to fill a lapse in understanding is when you come across one.An AI tutor is able to explain topics and work with specific examples you are having trouble with which is very helpful for bridging that gap in understanding.
Having an AI as a surrogate private tutor is a big help and improvement over relying on Google searches to get your questions answered. You could definitely build an over-reliance on AI to build the software for you, in which case there is not much learning going on. There is a sweet spot of using AI in just the right way to address gaps in learning that traditional instructional methods may have, but not overstep in completing the coursework for you. Regulation is the main challenge with incorporating AI in software engineering education. Sure, specific tutoring tools based on AI models can be developed that are not allowed to simply generate entire pages of code for your assignment when you give them a list of parameters. Even then, there is very little an instructor can do to prevent a student from accessing other tools outside of the classroom that hinders their practical skill development.
Overall, artificial intelligence has quickly altered the way students of all grade levels have access to information and are learning. This comes in part due to the fact that AI is now generative; it can interpret your specific problem and generate a tailored response instantly without you having to search the 8th page of a forum from 10 years ago.