The Potential of AI

07 May 2024

I. Introduction

The integration of Artificial Intelligence in education marks a shift in how students learn and apply technological skills. AI tools like ChatGPT and GitHub Co-Pilot have become instrumental tools in providing on-demand educational support for code development and enhancing the learning experiences through interactive and personalized assistance. In my coursework for ICS 314: Software Engineering, I have primarily used ChatGPT to assist with various problems such as coding and writing essays. These tools have introduced new dynamics in understanding complex software engineering principles and have changed the direction of the traditional learning process.

II. Personal Experience with AI:

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

  1. Experience WODs e.g. E18
    I did not use AI for the experience WODs. The available learning materials and videos sufficiently guided me through the tasks. My approach was to attempt the WODs independently, using the videos for clarification only when necessary.

  2. In-class Practice WODs
    I did not use AI during in-class practice WODs. I preferred to get a more hands-on learning experience by directly interacting with the tasks with feedback from peers and the instructor.

  3. In-class WODs
    I did not use AI during in-class WODs. For timed tests, I think that being prepared and building muscle memory is a better approach than looking for answers with AI. An hour before each WOD, I would redo the experience WODs at least a couple times. I think this approach is better for retaining study material.

  4. Essays
    I did use AI for essays, primarily for grammar checking, and structuring guidelines. This helped with clarity and coherence with the points I wanted to get across. The immediate feedback from AI on these issues proved to save time.

  5. Final project
    I did use AI for the final project. AI was useful for providing suggestions and best practices with Meteor, React, Uniforms, and MongoDB. It helped to clarify unfamiliar concepts and offered examples from similar past projects.

  6. Learning a concept / tutorial
    I did use AI to learn concepts. AI was beneficial for grasping new concepts, especially in React (hooks and lifting state up). It offered detailed explanations and useful examples that helped me understand more efficiently.

  7. Answering a question in class or in Discord
    I did not use AI to answer questions in class or in Discord.

  8. Asking or answering a smart-question
    I did not use AI to ask or answer smart-questions.

  9. Coding example e.g. “give an example of using Underscore .pluck”
    I did use AI for coding examples. When I first started learning React, a framework I found particularly challenging, I used AI to guide me through it. When learning how to use the usestate hook, I turned to AI for explanations and examples. This was incredibly helpful for understanding how state management works in functional components. The example given was a simple counter example, where a state variable count is updated through setCount. This example clarified my understanding and accelerated my ability to implement React hooks in actual projects.

        import React, { useState } from 'react';
    
        function Counter() {
        // Define a state variable named 'count' and a function to update it named 'setCount'
        const [count, setCount] = useState(0);
    
        return (
        <div>
        <p>Count: {count}</p>
        {/* Button to increment the count */}
        <button onClick={() => setCount(count + 1)}>Increment</button>
        {/* Button to decrement the count */}
        <button onClick={() => setCount(count - 1)}>Decrement</button>
        </div>
        );
        }
    
        export default Counter;
    
  10. Explaining code
    I did use AI to explain code. Using AI to explain code significantly sped up my learning process, as it provided clear, immediate explanations that were often more accessible than searching through online documentation or forums.

  11. Writing code
    I occasionally used AI for writing code. I used AI when I encountered complex problems. While the AI suggestions were helpful, I ensured that I fully understood the solutions by requesting detailed explanations of the code.

  12. Documenting code
    I did not use AI to document code. I have not been in the habit of documenting the code that I write, even though I should. I would consider using AI in the future for this.

  13. Quality assurance
    I did use AI for quality assurance. For quality assurance, particularly for functions that interact with MongoDB, AI was a valuable resource. I found that using AI to ask if there would be any potential problems with the code would be helpful in preventing errors down the line.

  14. Other uses in ICS 314 not listed above
    I did not use AI for other uses.

III. Impact on Learning and Understanding:

The use of AI in my coursework significantly influenced my learning experience by enhancing comprehension and skill development. AI’s instant feedback and vast knowledge base allowed me to explore deeper into software engineering concepts such as React programming and MongoDB integration. It gives a hands-on approach to problem-solving, where AI-generated solutions and examples provide a strong starting point or analysis for my own solutions. This interaction notably boosted my problem-solving skills and allowed me to take on software engineering challenges more confidently and efficiently.

IV. Practical Applications:

Beyond ICS 314, AI’s influence extends into user experience design in software engineering. AI technologies are increasingly used to automate the process of user testing and feedback collection, enabling designers to refine interfaces based on real-time user interactions and preferences. For instance, AI-powered analytics tools can track user behavior patterns, providing designers with precise insights into which features are most engaging or where users encounter difficulties. Additionally, AI can simulate user interactions to test various design scenarios, predicting user responses before the product is even launched. This integration of AI in UX design not only speeds up the design process but also ensures that the final products are more aligned with user expectations, enhancing overall user satisfaction with software solutions.

V. Challenges and Opportunities:

While AI presents remarkable benefits, it also poses challenges and limitations. One major challenge is the reliance on AI for solutions, which might hinder learning and the development of independent problem-solving skills. There’s also the issue of AI-generated code quality, which may not always be correct or be optimized for all scenarios. However, these challenges also open opportunities for further integration of AI in educational settings, such as developing more interactive AI or creating AI that caters to the user’s learning style.

VI. Comparative Analysis:

Comparing traditional teaching methods with the use of AI reveals significant differences. Traditional methods emphasize structured learning and foundational theory, which are crucial for deep understanding but may lack the immediacy and customization that AI tools offer. AI learning promotes engagement, immediate application, and high interaction, which can lead to improved knowledge retention and practical skill development, particularly in a fast-moving field like software engineering.

VII. Future Considerations:

The future of AI in software engineering education looks promising yet challenging. As AI technology advances, its integration into education can become more refined and offer more personalized and adaptive learning experiences. The challenge will be to balance AI with traditional learning methods to ensure that students receive immediate assistance while developing critical thinking and problem-solving skills.

VIII. Conclusion:

The use of AI in ICS 314 has profoundly impacted my learning experience, providing both enhancements and new challenges. While AI tools have greatly assisted in understanding complex concepts and performing tasks, it is crucial to maintain a balance to ensure comprehensive learning. Going forward, optimizing the integration of AI in the computer science field will require continuous adaptation and evaluation to maximize its benefits while mitigating its limitations.