My Use of AI in ICS 314

07 May 2024

I. Introduction

AI is becoming increasingly integrated into various aspects of software engineering, offering solutions that streamline processes, enhance productivity, and improve the quality of software development. For example, automated code generation, code optimization & refactoring, bug detection & resolution, and even in writing this essay.

II. Personal Experience with AI:

  1. Experience WODs
    • I did not use any AI in my experience WODs. The experiences already had a walkthrough most of the time so I did not feel the need to use AI.
  2. In-class Practice WODs
    • I did not use AI for the in-class practice WODs. These are practice WODs, they were not graded so I used this opportunity to challenge myself to solve the WOD without any help.
  3. In-class WODs
    • I used AI for a couple of WODs. I try not to use AI unless I am sure that I absolutely do not know how to solve the WOD. AI was a last resort option for me when doing the WODs.
  4. Essays
    • The biggest problem I encounter when writing an essay is figuring out where to start. So I use AI to give me some ideas, a rough template if you will. Since I now have a basic foundation for my essay, writing the essay becomes exponentially easier.
  5. Final project
    • I did not use any AI in the final project. My teammates were more than enough help.
  6. Learning a concept / tutorial
    • I did not use AI for this
  7. Answering a question in class or in Discord
    • Yes I used AI for this.
  8. Asking or answering a smart-question
    • Yes I used AI for this.
  9. Coding example e.g. “give an example of using Underscore .pluck”
    • Yes I used AI for this.
  10. Explaining code
    • Not really, I usually am able to find other sources of help on the web
  11. Writing code
    • In a similar situation to writing an essay, I use AI to give me a skeleton for me to build around.
  12. Documenting code
    • I did not use AI for documenting code
  13. Quality assurance
    • Usually, EsLint in IntelliJ would find all the errors and inefficiencies within my code, so I did not really use AI for quality assurance
  14. Other uses in ICS 314 not listed above
    • I try to use AI as a last resort so I do not recall any other uses of AI.

III. Impact on Learning and Understanding

AI did not have a noticeable impact on my learning experience. AI has not really enhanced nor challenged my understanding of software engineering concepts. Also, I try not to use AI for help since it is not 100% accurate, instead I try to look for trusted sources on the web for help. I believe that people can rely a little too much on AI, as I have experienced myself, it is very tempting to make the AI do everything for you.

IV. Practical Applications:

Here are some applications of AI in Software Engineering

Automating Software Development: AI-powered systems, for example, may produce code that fulfills a set of requirements. This method is known as automated programming, and it is becoming more popular.

Improving Software Testing: Algorithms based on artificial intelligence may be used to automate testing, discover and diagnose mistakes, and optimize testing situations.

Improving Software Upkeep: AI systems can analyze massive volumes of software-related data and make recommendations for upgrades and enhancements using machine learning

Intelligent System Enabling: AI is also allowing for the creation of intelligent software systems. These systems are capable of learning from data and adapting to changing conditions. AI-powered chatbots, for example, may learn from prior discussions and improve their replies over time.

Increasing Software Security: AI can also help to improve software security. For example, AI algorithms may discover security flaws in software systems and offer fixes. They can also recognize possible risks and take preventative steps.

Source

V. Challenges and Opportunities:

I have found it very easy to end up fully relying on AI (ChatGpt) to do your work. It’s so easy, just give the AI a prompt, then it’ll spit out a whole essay for you. In a way, using AI properly will train your self control.

Some potential opportunities for further integration of AI in software engineering education:

Personalized Learning: AI can personalize learning experiences by adapting content, pacing, and difficulty levels based on individual student’s learning styles, preferences, and progress. AI-powered adaptive learning platforms can provide tailored recommendations, exercises, and feedback to help students master concepts more effectively.

Intelligent Tutoring Systems: AI-driven tutoring systems can provide real-time assistance and guidance to students as they work through programming assignments, projects, or coding exercises. These systems can offer hints, explanations, and debugging support to help students overcome challenges and reinforce learning.

Automated Grading and Feedback: AI algorithms can automate the grading process for programming assignments, projects, and coding challenges. Machine learning models can evaluate code quality, correctness, and adherence to best practices, providing instant feedback to students and reducing the burden on instructors.

Code Suggestion and Autocompletion: AI-powered code editors can offer intelligent suggestions, autocompletions, and corrections as students write code, helping them improve efficiency, accuracy, and adherence to coding conventions. These tools can also provide explanations and examples to enhance understanding.

VI. Comparative Analysis:

Engagement: Traditional teaching methods typically rely on lectures, textbooks, and in-person interactions. Engagement levels may vary depending on the teaching style, instructor’s enthusiasm, and student interest. Whereas AI can offer interactive learning experiences through personalized recommendations, gamification, and virtual environments.AI can adapt content and activities based on individual student’s preferences.

Knowledge Retention: Traditional teaching methods usually involve passive learning, where students listen to lectures or read textbooks. Knowledge retention may vary depending on students’ attention spans, note-taking abilities, and review practices. In an “AI enhanced” approach, we can utilize spaced repetition algorithms, personalized quizzes, and adaptive learning techniques to reinforce learning and improve retention.

Practical Skill Development: Traditional teaching methods often include hands-on exercises, assignments, and projects to develop practical skills. Feedback on practical work may be limited by instructor availability and grading time. AI can offer automated code grading, instant feedback, and interactive coding environments to support practical skill development. AI can provide personalized hints, suggestions, and debugging assistance to help students overcome challenges in real-time.

VII. Future Considerations:

I believe that AI will have a massive role to play in software engineering in the near future. AI is already prevalent within the industry, for example in Automating Software Development, Improving Software Testing, Improving Software Upkeep, Intelligent System Enabling, Increasing Software Security.

Potential Advancements: Breakthroughs in deep learning and transfer learning. AI for code generation, optimization, and testing. Automation of software development tasks.

Challenges: Ethical implications of AI in software engineering. Ensuring reliability and robustness of AI-driven tools. Addressing bias in AI algorithms and data.

Areas for Improvement: Enhancing interpretability and transparency of AI models. Supporting human-AI collaboration in software development. Developing AI tools for code understanding and refactoring.

VIII. Conclusion:

So ultimately, AI will soon be, if not already, completely integrated into software engineering. AI can automate software development, enhance testing, upkeep, and security. With our current advancements in AI technology, I am excited to see what the future holds for us. AI-driven methods can offer more personalized engagement, better knowledge retention through adaptive techniques, and enhanced practical skill development.However, we must be careful to not have full reliance on AI as it might hinder self-sufficiency.