Natural and Artificial

27 Apr 2024
Design Patterns for Engineering

I. Introduction

The role of AI in education, broadly, provides a pivotal point in how I interact and engage with learning materials. AI provides an interface to allow me to be a self-directed learner, allowing me to infer through Socratic dialogues through these large language models. From my personal experiences, I utilize AI for exploratory research, inferring diverse takes, opinions, and methodologies in all kinds of subjects, from summarizing a class syllabus to generating a strategy plan for an exam in the upcoming days, AI, in my sense, felt like a divine intervention for scholars who want to go far beyond the classroom. I have used tools such as OpenAI’s ChatGPT and Github’s Co-pilot for my ICS 314 adventures. Throughout my interactions, I utilized all of the top large language models for my educational purposes - such as lecture summarization, code generation, code debugging, code reviews, and system design. I used these tools as a way to further enhance my learning experiences, and explore various thought experiments such as ‘what ifs’

II. Personal Experience with AI:

I have used AI in class this semester in the following areas:

  1. Experience WODs e.g. E18 : Indeed, I have used AI in the context of Experience WODs, albeit helping with the mundane tasks of some assignments. For instance, within E12-14, given the task to scribe the menu of items given in the image for further computational analysis, I have used ChatGPT’s GPT-4, specifically, their Vision API, to do this mundane task of scribing the menu items for me, as I focus most of my cognitive efforts on the algorithm aspects. Surprisingly, I did this to merely test the capabilities of GPT-4’s Vision, and as expected, it was able to correctly identify and categorize the list of items correctly as displayed on the Menu image. Whenever I had a task that I felt redundant, I would ask ChatGPT to do most of the grunt work for me.

  2. In-class Practice WODs : Indeed, I have used AI for In-class Practice WODs for critique purposes. Oftentimes, I am quite curious about how solutions are implemented, and realized that all solutions for whatever problem differ from each other, based on the experience of the developer. For example, during the phase of learning programming problems, such as isUnique, I used ChatGPT to discuss the various diverse strategies to solve this solution and the pros/cons for each. Then, I would ask it to critique my solution and ways I could improve, either by adding an early-stopping rule or making it more readable. I still utilize the insights I’ve gained from these events and embed them into my current programming skillsets.

  3. In-class WODs : Indeed, I have used AI for In-class Practice WODS, albeit for safety. Since AI can be freely distributed across any In-Class WODS and the fact that In-Class WODS are usually high-stakes assignments, I have used ChatGPT intensively to ensure the correctness of my work. As the In-Class WODS got more and more complex, (i.e, stacking up with Frameworks and Libraries), I noticed ChatGPT can alleviate the stress of trying to memorize and frantically searching the documents for a piece of code, and saves more time, a variable that is crucial for such assignment.

  4. Essays : Indeed, I have used AI for Essays for exploratory research. Throughout the various essays, I’ve written, I often sought ChatGPT to give me concrete examples of code I was attempting to demonstrate, or say, given a reading article, I would often copy the entire article and ask ChatGPT to summarize, outlining the key topics points and what our instructors were expecting us to extrapolate from these readings. For instance, in Reflect on Smart Questions Essay, I used AI to summarize all of Raymond’s How To Ask Questions The Smart Way article, and what insights should I take away to make me become a better engineer. Then, I also used it as a way to learn how to filter questions based on Raymond’s principles. This gave me concrete examples and further enhanced my knowledge of how to curate smart questions.

  5. Final project : Indeed, I have used AI for the Final Project. Most of my usage was for generating templates to start my tasks in hand. For instance, one of my tasks was to design a Friend system for our web app, and had no previous experience of how to design a Friend system. Hence, I learned a bit more about system design how a friend system would operate, and its design in both front end and back end. Without this, It would’ve taken me a significant amount of time to research manually, and still end up with the same conclusions that ChatGPT has exhaustively listed in mere seconds. This is valuable as milestones for this course had a short time frame, and our team needed to work around this time constraint.

  6. Learning a concept / tutorial : Indeed, I have used AI for learning concepts, primarily being my personal AI tutor. For instance, I taught several of these large language models to make my own learning personalized, utilizing analogy as a way of deconstructing complex information, and making the unfamiliar, familiar, thereby transforming abstract concepts into relatable and understandable lessons. For instance, I would, funny as it is, make ChatGPT to be the role of my favorite fictional character, and teach me the style of how my favorite fictional characters would approach things. This makes my journey of learning a concept more interactive, engaging, and fun for concepts that are too complicated to digest.

  7. Answering a question in class or in Discord : No, unfortunately, I did not have a chance to utilize AIs for answering questions in class or Discord. I was very inactive in the community, hence zero usage for AI in this aspect. Most of my time was spent listening and learning from my peers and instructor.

  8. Asking or answering a smart-question : No, unfortunately, I did not have a chance to ask or answer smart questions. I was very inactive in Discord, hence zero usage for AI in this aspect.

  9. Coding example e.g. “give an example of using Underscore .pluck” : Indeed, I have used AI to provide various and diverse coding examples for WODs, experiences, and for the final project. I used AI to provide me with concrete examples of coding examples. I have my own archive of examples and often learn from these examples to mimic their functionality and proper coding style. For example, during our exploration of the React framework, I would often ask for a coding example of how useEffect is properly used, and the many practical examples that come with it. I store these in my coding notebooks and look them up in case I encounter a similar feature I want to implement.

  10. Explaining code : Indeed, I have used AI to explain code. I would often prompt Co-Pilot to help explain my code, as a way to explain how it works step by step for my sanity check. This helps me create a positive feedback loop of creating and explaining code more productively. For instance, during the final project, when receiving an error, I would give ChatGPT my code, and the given error message, and prompted to help me explain what the code was doing that resulted in the error message. This helped me save a lot of debugging time and gave me better solutions than what StackOverflow would provide.

  11. Writing code : Indeed, I have used AI for writing code. One of my core strategies is using AI to generate a coding template for me to work with. Most of the time, most of the code I was writing was a bit redundant, and I have sought ChatGPT to simply generate a working template for me. For instance, I would ask ChatGPT to generate a React Component template that already has features that I would want, such as a Timer. I would give it the bare minimum to purely generate the functionality, to which I intervene and adjust accordingly.

  12. Documenting code : Indeed, I have used AI for documenting code. I would often prompt the Co-Pilot to comment on my code, as a way to explain how it works step by step. What’s interesting about having an AI system embedded in a text editor, when prompted correctly, would auto-comment the code, providing a summary or description of the given selected code block. For instance, throughout our learning with Underscore, I would ask Co-Pilot to give me a brief description of this one-liner code and output a reasonable response that allows other programmers to understand.

  13. Quality assurance : No, unfortunately, I did not, as I was very inactive in the aspects of Quality Assurance in any of my ICS 314 assignments.

  14. Other uses in ICS 314 not listed above : No other AI usage was used besides software engineering and learning tasks.

III. Impact on Learning and Understanding:

The incorporation of AI has immensely influenced my learning experience, positively. However, it all depends on how we interact with these AI Systems when it comes to how we learn and grow our knowledge. I think it’s obvious that blindly following AI, specifically for software engineering, would lead to software systems that may function, but upon inspection, you’ll be dealing with a system that you don’t even understand! So it begs the question - who is the creator? You’ve relied on AI to the point that you don’t understand what’s happening in the system! Reflecting on these experiences, it’s clear that AI technologies have both enhanced and challenged my understanding of software engineering concepts. The key to leveraging AI effectively in learning is to use it as a supplement rather than a substitute for any learning endeavors. I like to analyze this as a mere human-machine collaboration, than just the machine. Its purpose is to ultimately help you grow, and in this context, help you grow with more knowledge! One key analogy is AI being a training wheel for whatever we want to be experts in.

IV. Practical Applications:

Indeed, I used AI outside of ICS 314, and in fact, I use AI vigorously for my coding projects. I was an early adopter of ChatGPT, initially using it to help me write poems, I now use it to help me create video games, a passion of mine since I learned to understand what a computer ‘is.’ when I was young. I use AI to help me learn software engineering theories and apply them to my video game projects, creating a positive feedback loop of theory and practice. Besides purely software knowledge, I used AI to help me conduct research, albeit cross-referencing for truth and sanity checks. It made me more productive and made the engineering process more exciting!

V. Challenges and Opportunities:

One particular challenge that AI can bring is that it tends to be a ‘yes-man’, in such a sense, that, it completely agrees and complies with what you say as truth, and if persists, you may be influenced by wrong and biased assumptions! This can be problematic, especially in an educational context, where critical thinking and exposure to a variety of perspectives are crucial for growth. Inversely, AI can offer many opportunities, especially in software engineering education. One particular idea is generating a simulation of how it feels to work in the software industry! AI-driven simulations that mimic the dynamics of a multi-stakeholder project, including budgeting, ethical considerations, project management, teamwork dynamics, and gamifying this process would create an immersive and practical learning experience for computer sciences and software engineering.

VI. Comparative Analysis:

One key difference between traditional teaching and AI-enhanced teaching is the usability between them. What I love about AI-based technologies, is that they’re mostly active 24/7. They respond to you anytime and anywhere without question, and you’re free to ask without being critiqued or judged on what you say. AI-enhanced provides substantial opportunities for accessibility. In terms of knowledge retention, AI-based technologies, if prompt correctly, give you a more personalized learning experience than what traditional teaching could offer. For instance, I would often let ChatGPT give me more questions than solutions, such that I could engage critically akin to Socratic dialogues. However, I do admire some aspects of the traditional teaching methods, such as physical engagement with the material, and not being bounded by screen and keyboard.

VII. Future Considerations:

I truly believe AI usage in education can allow ideas such as in-depth personalized educational experiences. I remember dreaming of such an application in high school, way before ChatGPT existed. I’d imagine a personal AI bot that could adapt and work with you, learning your style and pacing, and most importantly, focusing on your mental health and well-being. This level of dynamics can optimize learning efficiency and keep students more engaged, if not, passionate about what they’re engaging. However, as AI tools become more integral to education, there comes ethics. As of this state, there exist biases in AI algorithms, and further research must be done to ensure that these AI systems promote fairness in all domains, especially in education.

VIII. Conclusion:

Reflecting on my experiences with AI in ICS314, it is evident that AI has not only revolutionized the way I engage with educational materials but has also improved my ability to innovate and solve problems more effectively. My integration of AI tools such as ChatGPT and Co-pilot has allowed me to explore software engineering concepts at a depth and pace that would have been challenging through traditional methods alone. AI offered me 24/7 accessibility, instant feedback, and a customizable learning preference that allowed me to dynamically engage with the learning material, fostering a deeper connection to the material. However, this reliance on AI also comes with its challenges. There have been moments, where I felt like I was heavily dependent on AI, relying too heavily on these technologies, such that it led me to a superficial understanding of underlying principles. This directly leads to a scenario where I am more of an operator of AI tools, rather than a creator who fully understands and controls the software I help develop. One thing I want to disperse with my own experiences of AI is to emphasize the human-machine collaboration aspects of AI. I believe in a symbiosis between the natural and the artificial, human and machine, where we can harness the efficiency and analytical capabilities of AI while also applying the unique creative and critical thinking skills that define us - humans.