AIly?

21 Nov 2023

Introduction

In the ever-changing worlds of education and software engineering, Artificial Intelligence (AI) is becoming a game-changer. In education, AI accomplishes a bunch of neat things, like tailoring learning experiences for each student and providing immediate assistance/feedback to assignments. Moreover, AI aids in administrative tasks, allowing educators to focus more on teaching. In the context of software engineering, AI can influence both the educational process and the practical application of software engineering principles. For instance, AI tools can assist in generating code snippets, suggesting solutions, and providing alternative approaches to coding challenges.

My dive into AI in ICS 314 kicked off with ChatGPT, a language model capable of generating human-like text based on the input it receives. At first, I tiptoed around it, testing the waters as I explored its capabilities and understood its limitations. As the semester progressed, ChatGPT became an invaluable companion in my learning journey.

Personal Experience with AI

Experience WODs

In the Experience WODs, I found limited use for AI. The detailed walkthroughs provided in these exercises often left little room for ambiguity or uncertainty, making direct AI assistance less necessary. The prescriptive nature of the Experience WODs, coupled with step-by-step guidance, canceled out the need for consulting tools like ChatGPT.

In-class Practice WODs

I occasionally turned to AI to navigate through challenging aspects of in-class Practice WODs. Whenever I would hit a wall in those Practice WODs, I’d throw the WOD prompt at ChatGPT to gain insight into how to approach the problem. It became my trusty starting point, giving me a leg up and some ideas on how to tackle the challenge. It definitely helped kickstart the problem-solving process, although there were times when the code it spit out needed a bit of fine-tuning.

In-class WODs

For time-sensitive in-class WODs, AI, and specifically ChatGPT, became a lifesaver. The pressure of time constraints often made it challenging to derive solutions independently. ChatGPT’s ability to rapidly generate code snippets and outline logical structures proved useful in meeting the demands of timed exercises.

Essays

ChatGPT emerged as a powerful tool for my essay writing, making it more dynamic and less one-dimensional. It helped me play around with different writing styles and brought a whole new level of coherence to my essays. The grammar checking capabilities were valuable, polishing up my language and structure. However, the challenge lay in maintaining a balance, making sure that the AI-generated content aligned with my own voice and the specific requirements of the assignment.

Final Project

AI was incredibly useful in the ideation process of my final project. ChatGPT allowed me to brainstorm different approaches, and refine project scope. I’d toss questions at ChatGPT, like what pages and functions my web application should support. Of course, AI helped me write code as well. I’d ask ChatGPT for advice on implementing a certain page function or styling up a component.

Learning a concept/tutorial

I rarely used AI to help me learn a concept or give me a tutorial. On a couple of occasions, I used ChatGPT to give me quick summaries of text I was trying to wrap my head around, but that’s the extent of it. If I wanted a tutorial for something, I would search it up online as there are already guides written specifically for the subject I’m looking for that are written by an actual person.

Answering a question in class or in Discord

ChatGPT has been somewhat handy when tackling questions in class or on Discord. If I have trouble with some sort of concept from a lecture or reading, I can typically shoot my question to ChatGPT for a straight-forward, clear breakdown. However, I found it important to verify the accuracy of the information generated by ChatGPT, as it may not always align perfectly with the context or specifics of the course material.

Asking or answering a smart-question

Even though I haven’t thrown tons of specific smart questions at ChatGPT, there have been instances where I requested it to rephrase or elaborate on a question I struggled to articulate effectively. ChatGPT was great at suggesting different ways to ask or breaking down the query, making it easier for me to get my point across. The benefit here lies in the enhancement of communication skills.

Coding example

ChatGPT has been instrumental in providing coding examples, especially when seeking implementations of specific functions or methods. For instance, I’ve asked ChatGPT to provide an example of using Underscore’s .groupBy function. The convenience of quickly obtaining syntactically correct examples is a notable advantage.

Explaining code

ChatGPT’s ability to explain code has been a frequent and valuable use. When faced with complex or unfamiliar code snippets, I’ve asked ChatGPT to break down the logic in pseudocode or plain language. This has helped me get a better grip on how code is structured and the ins and outs of algorithms.

Writing code

As previously mentioned, I have extensively used ChatGPT to generate code snippets. While it streamlines the coding process and offers quick solutions, the code it spits out might not always follow the best practices or fit the task’s specific needs, so giving it a once-over is paramount.

Documenting code

From what I can remember, I have not really used AI to document code. This task typically requires a contextual understanding of the codebase, project structure, and specific functionalities. AI tools may not capture the nuances of project-specific documentation requirements, making human intervention essential for comprehensive and accurate documentation.

Quality Assurance

AI is also useful in quality assurance tasks. When I hit a snag with code problems errors, I’ve sent the troublesome code along with their error prompt to ChatGPT for some help in spotting and fixing issues. The AI’s ability to suggest alternative solutions and provide quick troubleshooting aids in expediting the debugging process.

Other uses

At times, I have used AI, specifically ChatGPT, for brainstorming sessions related to project ideas. By describing the project’s objectives and requirements, I’ve sought AI-generated insights for innovative approaches or unique features.

Impact on Learning and Understanding

AI has shaped my ICS 314 learning. On one hand, AI has been a valuable aid in comprehending complex software engineering concepts, accelerating problem-solving, and fostering skill development by providing quick insights. However, the reliance on AI presents a potential challenge in developing independent problem-solving skills or deep understanding, as there’s a risk of leaning too heavily on generated solutions without fully grasping underlying principles. While AI improves efficiency, it requires a conscious effort to balance its benefits with cultivating foundational knowledge and preventing the development of dependency-induced learning habits.

Practical Applications

In the real-world software scene beyond ICS 314, AI presents itself in various ways. Collaborative platforms leverage AI to enhance team productivity, with tools like GitHub’s Co-Pilot helping developers in writing code and suggesting solutions. In simulations, AI facilitates realistic testing environments, optimizing software performance and identifying vulnerabilities. The effectiveness of AI applications in addressing software engineering challenges is apparent in streamlined development workflows, reduced time-to-market, and improved code quality. But, challenges persist, such as the need for refining AI-generated code to match with project-specific requirements and ensuring ethical considerations in AI-driven decision-making.

Challenges and Opportunities

ChatGPT has been convenient in ICS 314, but it’s not without its hiccups. While it’s great for general info, it struggles with super specific or tricky questions. The knowledge cutoff and potential misunderstandings of certain prompts can lead to not-so-spot-on responses, especially in coding or complex software concepts. Despite these challenges, there’s room to amp up AI’s role in software engineering education. Continuous improvement, better training, and tailoring AI for specific software domains could open the door to more accurate help in future courses.

Comparative Analysis

In software engineering education, comparing traditional methods to AI-enhanced approaches, like with tools such as ChatGPT, shows pros and cons. Traditional ways with lectures and projects foster direct interaction, but AI brings dynamic learning with personalized experiences and quick coding solutions. While traditional methods are great for deep discussions and teamwork, AI can boost knowledge retention through real-time help and immediate concept reinforcement. Combining both traditional and AI approaches looks promising, merging comprehensive understanding from traditional teaching with AI’s efficiency for targeted skill development, creating a well-rounded software engineering education.

Future Considerations

AI in software engineering education shows promise but comes with challenges. Improved contextual understanding, better coding help, and adaptive learning platforms could revolutionize education. Yet, challenges include dealing with biases, ensuring ethical use, and balancing AI with critical thinking. Continuous refinement of AI models and integration with traditional teaching methods may find the sweet spot, fostering a symbiotic relationship between human expertise and AI. The key is using AI to enhance, not replace, education, creating a comprehensive and adaptive learning environment in the ever-changing world of software engineering.

Conclusion

The integration of AI in the Software Engineering course has proven to be a transformative experience. It’s boosted problem-solving, code generation, and grasping complex concepts. But, it’s not without its quirks—like a knowledge cutoff and a bit of specificity struggle. Real-time use in class WODs was a win, but we’ve gotta balance it with good old teaching methods to really get software engineering. To better integrate AI into future classes, teach prompt engineering as a foundational skill. Emphasizing prompt engineering involves instructing students on how to formulate clear, specific, and context-aware prompts when interacting with AI tools.