Reflecting on AI Usage For Software Engineering

19 Nov 2023

Artificial Intelligence (AI) is reshaping the landscape of education for better or for worse. As the demand for skilled software developers and engineers continues to grow, AI is could potentially play a crucial role in revolutionizing the way we teach, learn, and apply programming concepts. Chat bots such as ChatGPT present a method of directly generating segments of code based on a prompt describing desired high-level functionality. This not only has the potential to enhance the efficiency of learning but also ensures that aspiring software engineers are equipped with the latest skills and knowledge needed to thrive in a rapidly evolving technological landscape.

Personal Experience with AI

Experience WODs

For earlier WODs, I found that I could practically copy and paste the given instructions while removing certain sentences that didn’t directly relate to the code segment being generated (i.e. any GitHub related instructions) as a prompt. This would effectively produce a code segment that could complete the WODs desired functionality within one or two modifications. With later more complex WODs involving code across multiple files in addition to video walkthroughs being present for reference, I found a better use of time in implementing the code myself rather than getting code from ChatGPT and deciphering what it actually accomplished. Especially when Meteor WODs came out, I felt it was faster to get a grasp of what all the components individually did which would allow me to know exactly where to add code when implementing additional features.

In-class Practice WODs

Same as above.

In-class WODs

Same as above.

Essays

Practically all of my essays, including this one, have used ChatGPT. It provides a solid starting outline from which I may add or remove ideas as necessary.

Final project

I haven’t found a use for ChatGPT in the final project as all the past assignments practically provide step-by-step tutorials for implementing features.

Learning a concept / tutorial

I haven’t used ChatGPT to learn any concepts in 314 as these chat bots don’t always output correct information.

Answering a question in class or in Discord

Similar as above.

Asking or answering a smart-question

This actually sounds like an interesting idea because I do struggle to phrase questions. Will try this out in the future.

Coding example

There are so many sites on Google that provide code examples for a specific function and you can be sure that they actually work.

Explaining code

Though it’s not the most efficient, I personally like understanding code line-by-line. However, I may play around with this in the future.

Writing code

I have only used ChatGPT to write code in early WODs where desired functionality could be achieved within a single file containing code (i.e. code using Underscore functions).

Documenting code

Great idea!

Quality assurance

Sounds interesting to try out.

Other uses in ICS 314 not listed

For 314 specifically, I have not used AI extensively outside of the already listed cases.

Impact on Learning and Understanding

The impact of AI on comprehension, skill development, and problem-solving abilities in software engineering can be a double-edged sword in learning. While it has the potential to significantly accelerate skill development, it can hinder learning if effort is not put in to understand the code generated. The rapid generation of code by AI tools can create a false sense of mastery, making it important to actively engage with and comprehend the generated code rather than relying solely on automated solutions. Once a foundational understanding a software engineering concept is established however, AI technologies can become particularly beneficial. The quick generation of code allows for efficient problem-solving. An understanding of said software engineering concept allows generated code to be easily troubleshooted and validated.

Practical Applications

AI applications have proven to be highly effective in addressing real-world software engineering challenges, particularly in two key aspects. Firstly, AI serves as an invaluable tool for enhancing communication in the workplace, a common and crucial task in real jobs. Chat bots such as ChatGPT provide a starting point for developing effective email or Slack messages with clearly communicated ideas. Secondly, AI helps to streamline problem-solving processes by avoiding the need to reinvent the wheel. By harnessing the power of AI to build upon established knowledge and solutions, software engineers can potentially focus on innovative aspects of their projects, ultimately improving productivity and the overall quality of software development outcomes.

Challenges and Opportunities

While AI has proven to be a valuable asset within the course, some challenges and limitations have been encountered. One notable limitation is that AI may not consistently produce functional code, leading to potential time wastage in troubleshooting and validating the output. This highlights the importance of having a solid understanding of the code generated, as over-reliance on AI without a critical examination can hinder the learning process. Additionally, while AI is faster at generating results than traditional search engines like Google, it lacks the aspect of peer evaluation to validate its solutions. Despite this limitation, there exists an intriguing opportunity for further integration of AI in software engineering education. Assigning exercises that challenge students to generate a functional program solely using AI chat bots could be a beneficial exercise. This not only tests their comprehension and critical thinking skills but also prepares them for real-world scenarios where the quick generation of code is often essential, albeit with a necessary understanding and validation process. Balancing the advantages and challenges of AI in education will be key to optimizing its role in shaping the next generation of software engineers.

Comparative Analysis

Traditional teaching methods and AI-enhanced approaches in software engineering education offer distinct advantages and considerations. In the traditional setting, engagement often relies on lectures, textbooks, and hands-on projects. While this provides a solid foundation, it may not cater to individual learning styles. On the other hand, AI approaches leverage interactive tools which could enhance engagement through personalized learning experiences. In terms of knowledge retention, traditional methods rely on repetition and practice, whereas AI can adapt to individual progress, reinforcing weak areas and accelerating learning. However, AI-generated solutions may hinder practical skill development if not used properly, as understanding the code is often necessary. A balance between traditional teaching methods and AI integration is crucial, as the former provides a strong theoretical base, while the latter adds dynamism and adaptability to cater to the diverse learning needs of aspiring software engineers.

Future Considerations

The future role of AI in software engineering education seems promising, with increasing integration expected. AI has the potential to significantly lower the barrier to entry for programmers by providing accessible, personalized learning experiences and aiding in skill development. However, challenges remain, particularly in the reliability of AI-generated content. Chat bots, a prevalent tool in this context, could greatly benefit from automated fact-checking mechanisms to ensure the credibility of the information they provide. This not only safeguards against the acceptance of false statements as facts but also contributes to the overall trustworthiness of AI-driven educational tools. As AI continues to evolve, it will be essential to address these challenges and focus on refining its capabilities to create a more effective and reliable educational experience for future software engineers.

Conclusion

ChatGPT is a potentially powerful tool for software engineering. I find many people that avoid using it because they are afraid it will prevent them from grasping the concepts. While that point of view is completely valid, I believe that it is a situation similar to when people were transitioning from physical books to search engines like Google. Used properly, it has the potential to allow people to become more efficient in developing code faster. As such, it is a vital skill to learn how to use effectively. Therefore, it was mentioned once in the previous paragraphs, but I believe it could be a useful exercise to challenge students to only generate a functional program by prompting ChatGPT.